{
  "openapi": "3.1.0",
  "info": {
    "title": "Creators Toolbox API",
    "version": "1.0.0",
    "description": "Companies, tools and resources in the creator economy, plus a typed feed of what they ship, raise and buy. Built for teams making analytics products, developer tools and media about this market.\n\nAuthenticate with a bearer token. Create a free key with `POST /api/v1/keys`.",
    "contact": { "name": "Creators Toolbox", "url": "https://creatorstoolbox.com" }
  },
  "servers": [{ "url": "https://creatorstoolbox.com" }],
  "security": [{ "bearerAuth": [] }],
  "tags": [
    { "name": "Events", "description": "The feed: funding, product, acquisitions, hiring, editorial." },
    { "name": "Companies", "description": "Screen and read the catalog." },
    { "name": "Meta", "description": "Facets, counts and key issuance." }
  ],
  "paths": {
    "/api/v1": {
      "get": {
        "tags": ["Meta"],
        "summary": "Service index",
        "security": [],
        "responses": { "200": { "description": "Endpoint list and auth instructions." } }
      }
    },
    "/api/v1/meta": {
      "get": {
        "tags": ["Meta"],
        "summary": "Facets and counts",
        "description": "Every category, subcategory, tag, persona, pricing tier, country and event type with its count. No key required — use it to build filter UIs.",
        "security": [],
        "responses": { "200": { "description": "Facets, counts and the sort keys each collection accepts." } }
      }
    },
    "/api/v1/keys": {
      "post": {
        "tags": ["Meta"],
        "summary": "Create a free API key",
        "security": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": ["email"],
                "properties": { "email": { "type": "string", "format": "email" } }
              }
            }
          }
        },
        "responses": {
          "201": { "description": "The key, shown once. Free tier allows 1,000 requests per UTC day." },
          "400": { "description": "Invalid email." },
          "429": { "description": "This address already has three active keys." }
        }
      }
    },
    "/api/v1/events": {
      "get": {
        "tags": ["Events"],
        "summary": "Feed of company updates",
        "description": "Reverse-chronological by default. Live launch submissions are merged in at request time; everything else comes from the build snapshot.",
        "parameters": [
          { "name": "type", "in": "query", "description": "Comma-separated: funding, acquisition, financials, partnership, pricing, hiring, product, editorial, launch.", "schema": { "type": "string" } },
          { "name": "source", "in": "query", "description": "company_news, blog, jobs, launches.", "schema": { "type": "string" } },
          { "name": "company", "in": "query", "description": "Comma-separated company ids.", "schema": { "type": "string" } },
          { "name": "category", "in": "query", "schema": { "type": "string" } },
          { "name": "tag", "in": "query", "schema": { "type": "string" } },
          { "name": "q", "in": "query", "description": "Substring match on headline, body and company name.", "schema": { "type": "string" } },
          { "name": "since", "in": "query", "schema": { "type": "string", "format": "date" } },
          { "name": "until", "in": "query", "schema": { "type": "string", "format": "date" } },
          { "name": "has_funding", "in": "query", "schema": { "type": "boolean" } },
          { "name": "min_amount", "in": "query", "description": "Minimum disclosed amount in the smallest whole currency unit (dollars).", "schema": { "type": "integer" } },
          { "name": "sort", "in": "query", "schema": { "type": "string", "enum": ["published_at", "amount"], "default": "published_at" } },
          { "name": "order", "in": "query", "schema": { "type": "string", "enum": ["desc", "asc"], "default": "desc" } },
          { "name": "limit", "in": "query", "schema": { "type": "integer", "default": 50, "maximum": 200 } },
          { "name": "cursor", "in": "query", "schema": { "type": "string" } }
        ],
        "responses": {
          "200": {
            "description": "A page of events.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": { "type": "array", "items": { "$ref": "#/components/schemas/Event" } },
                    "meta": { "$ref": "#/components/schemas/PageMeta" }
                  }
                }
              }
            }
          },
          "401": { "description": "Missing, unknown or revoked key." },
          "429": { "description": "Daily quota exhausted." }
        }
      }
    },
    "/api/v1/events/{id}": {
      "get": {
        "tags": ["Events"],
        "summary": "One event",
        "parameters": [{ "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }],
        "responses": { "200": { "description": "The event." }, "404": { "description": "No such event." } }
      }
    },
    "/api/v1/funding": {
      "get": {
        "tags": ["Events"],
        "summary": "Funding rounds",
        "description": "Funding events only, with amount, round, valuation and investors parsed out of the announcement, plus totals for the whole filtered set in `meta.summary`.",
        "parameters": [
          { "name": "since", "in": "query", "schema": { "type": "string", "format": "date" } },
          { "name": "min_amount", "in": "query", "schema": { "type": "integer" } },
          { "name": "sort", "in": "query", "schema": { "type": "string", "enum": ["published_at", "amount"] } },
          { "name": "limit", "in": "query", "schema": { "type": "integer", "default": 50, "maximum": 200 } },
          { "name": "cursor", "in": "query", "schema": { "type": "string" } }
        ],
        "responses": { "200": { "description": "A page of funding events plus a summary." } }
      }
    },
    "/api/v1/companies": {
      "get": {
        "tags": ["Companies"],
        "summary": "Screen companies",
        "parameters": [
          { "name": "q", "in": "query", "schema": { "type": "string" } },
          { "name": "category", "in": "query", "schema": { "type": "string" } },
          { "name": "subcategory", "in": "query", "schema": { "type": "string" } },
          { "name": "tag", "in": "query", "schema": { "type": "string" } },
          { "name": "persona", "in": "query", "schema": { "type": "string" } },
          { "name": "pricing", "in": "query", "schema": { "type": "string", "description": "free, freemium, paid" } },
          { "name": "country", "in": "query", "description": "ISO 3166-1 alpha-2.", "schema": { "type": "string" } },
          { "name": "status", "in": "query", "schema": { "type": "string" } },
          { "name": "min_popularity", "in": "query", "schema": { "type": "integer" } },
          { "name": "launched_after", "in": "query", "schema": { "type": "string", "format": "date" } },
          { "name": "launched_before", "in": "query", "schema": { "type": "string", "format": "date" } },
          { "name": "has_events", "in": "query", "schema": { "type": "boolean" } },
          { "name": "active_since", "in": "query", "description": "Only companies with an event on or after this date.", "schema": { "type": "string", "format": "date" } },
          { "name": "sort", "in": "query", "schema": { "type": "string", "enum": ["popularity", "name", "newest", "events", "last_event"], "default": "popularity" } },
          { "name": "order", "in": "query", "schema": { "type": "string", "enum": ["desc", "asc"] } },
          { "name": "limit", "in": "query", "schema": { "type": "integer", "default": 50, "maximum": 200 } },
          { "name": "cursor", "in": "query", "schema": { "type": "string" } }
        ],
        "responses": {
          "200": {
            "description": "A page of companies.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": { "type": "array", "items": { "$ref": "#/components/schemas/Company" } },
                    "meta": { "$ref": "#/components/schemas/PageMeta" }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/companies/{id}": {
      "get": {
        "tags": ["Companies"],
        "summary": "One company",
        "description": "The full record, including the long description, features, FAQs and the ten most recent events.",
        "parameters": [{ "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }],
        "responses": { "200": { "description": "The company." }, "404": { "description": "No such company." } }
      }
    },
    "/api/v1/companies/{id}/events": {
      "get": {
        "tags": ["Companies"],
        "summary": "Every event for one company",
        "parameters": [
          { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } },
          { "name": "limit", "in": "query", "schema": { "type": "integer", "default": 50, "maximum": 200 } },
          { "name": "cursor", "in": "query", "schema": { "type": "string" } }
        ],
        "responses": { "200": { "description": "A page of events." } }
      }
    },
    "/api/v1/launches": {
      "get": {
        "tags": ["Events"],
        "summary": "Live launch submissions",
        "responses": { "200": { "description": "A page of launches, shaped as events." } }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "bearerAuth": { "type": "http", "scheme": "bearer", "description": "Your key from POST /api/v1/keys. `X-Api-Key` is accepted too." }
    },
    "schemas": {
      "PageMeta": {
        "type": "object",
        "properties": {
          "count": { "type": "integer", "description": "Rows on this page." },
          "total": { "type": "integer", "description": "Rows matching the filter." },
          "limit": { "type": "integer" },
          "offset": { "type": "integer" },
          "has_more": { "type": "boolean" },
          "next_cursor": { "type": ["string", "null"] },
          "generated_at": { "type": "string", "format": "date-time", "description": "When the snapshot behind this response was built." }
        }
      },
      "CompanyStub": {
        "type": "object",
        "properties": {
          "id": { "type": ["string", "null"] },
          "name": { "type": "string" },
          "domain": { "type": ["string", "null"] },
          "category": { "type": ["string", "null"] },
          "url": { "type": ["string", "null"] },
          "logo": { "type": ["string", "null"] }
        }
      },
      "Company": {
        "type": "object",
        "properties": {
          "id": { "type": "string" },
          "name": { "type": "string" },
          "description": { "type": ["string", "null"] },
          "about": { "type": ["string", "null"], "description": "Long description. Detail endpoint only." },
          "category": { "type": ["string", "null"] },
          "subcategory": { "type": ["string", "null"] },
          "pricing": { "type": ["string", "null"], "enum": ["Free", "Freemium", "Paid", null] },
          "popularity": { "type": ["integer", "null"], "description": "0-100 editorial score." },
          "country": { "type": ["string", "null"] },
          "domain": { "type": ["string", "null"] },
          "website": { "type": ["string", "null"] },
          "logo": { "type": ["string", "null"] },
          "image": { "type": ["string", "null"] },
          "tags": { "type": "array", "items": { "type": "string" } },
          "launched_at": { "type": ["string", "null"], "format": "date" },
          "url": { "type": "string", "description": "The listing page on Creators Toolbox." },
          "event_count": { "type": "integer" },
          "last_event_at": { "type": ["string", "null"], "format": "date" }
        }
      },
      "Funding": {
        "type": "object",
        "properties": {
          "amount": { "type": ["integer", "null"], "description": "Round size in whole currency units." },
          "currency": { "type": ["string", "null"] },
          "round": { "type": ["string", "null"], "description": "Seed, Series A, and so on." },
          "valuation": { "type": ["integer", "null"] },
          "investors": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": { "name": { "type": "string" }, "role": { "type": "string", "enum": ["lead", "participant", "investor"] } }
            }
          }
        }
      },
      "Event": {
        "type": "object",
        "properties": {
          "id": { "type": "string" },
          "type": { "type": "string", "enum": ["funding", "acquisition", "financials", "partnership", "pricing", "hiring", "product", "editorial", "launch", "other"] },
          "source": { "type": "string", "enum": ["company_news", "blog", "jobs", "launches"] },
          "company_id": { "type": ["string", "null"] },
          "company": { "$ref": "#/components/schemas/CompanyStub" },
          "also_about": { "type": "array", "items": { "type": "string" }, "description": "Other company ids this story concerns." },
          "headline": { "type": "string" },
          "body": { "type": ["string", "null"] },
          "published_at": { "type": ["string", "null"], "format": "date" },
          "url": { "type": "string" },
          "source_url": { "type": ["string", "null"], "description": "The company's own announcement." },
          "discussion_url": { "type": ["string", "null"] },
          "image": { "type": ["string", "null"] },
          "funding": { "oneOf": [{ "$ref": "#/components/schemas/Funding" }, { "type": "null" }] },
          "deal": {
            "type": ["object", "null"],
            "description": "Disclosed price on an acquisition.",
            "properties": { "amount": { "type": "integer" }, "currency": { "type": "string" } }
          }
        }
      }
    }
  }
}
