# checkov:skip=CKV_OPENAPI_5: /health intentionally opts out of global auth via security: [] # checkov:skip=CKV_OPENAPI_21: array schemas without maxItems are intentional for telemetry shapes openapi: 3.1.0 info: title: Dealroom API version: '2026-10-09' description: >- REST API for the Dealroom platform — companies, funds, founders, investors, funding rounds, valuations, taxonomy, news, and aggregate analytics across all of them. Authentication uses Auth0 (Bearer JWT or OAuth2 client_credentials). All endpoints are versioned via the `API-Version` header (Stripe-style date-based versioning). contact: name: Dealroom API support email: support@dealroom.co url: 'https://dealroom.co' termsOfService: 'https://dealroom.co/terms' license: name: Proprietary — Dealroom commercial license url: 'https://dealroom.co/terms' servers: - url: https://api.dealroom.app description: Production security: - bearerAuth: [] - oauth2: [] tags: - name: Discovery description: API root discovery and functional namespaces. - name: Entities description: >- Companies, investors, people, universities, and other organisations. Filter, sort, and paginate the unified entity index. The term `investor` refers to the investment firm; `fund` refers to the capital vehicle it raises. - name: Companies description: >- Company profiles — the `organization_subtype = company` subset of entities (excludes investors, universities, and gov/NGOs). Same response shape as the entity index, scoped to companies. - name: Universities description: >- University profiles — the `organization_subtype = university` subset of entities. The `university` sub-object carries alumni metrics. - name: Government & NGO description: Government bodies and NGOs — the `organization_subtype = gov_ngo` subset of entities. - name: Transactions description: 'Funding rounds, equity events, debt, grants, exits, and other company-level financial events.' - name: Valuations description: 'Company valuation history, by `valued_date`.' - name: Investors description: >- Investor profiles (VCs, corporates, angels, family offices, governments). Subset of entities where `is_investor = true`. An investor is the firm that makes investments; the capital vehicles it raises are funds available via `/investors/{id}/funds`. - name: Funds description: >- Funds — the capital vehicles investor firms raise (e.g. "Fund III", $200M, 2024). Browse/filter by manager, type, size, and vintage; each fund links to its manager (GP). Fund size (`amount`) converts to the requested `?currency=` (default USD); `amount_source` carries the original native-currency amount. - name: People description: >- Person profiles (founders, executives, angels, and others). Subset of entities where `entity_type = 'person'`. Same response shape as founders, with company associations, education, and tags. - name: Founders description: >- Founder profiles with company associations and education history. Subset of entities where `is_founder = true`. - name: News description: 'Curated news articles about companies, funds, deals, sectors, and events.' - name: Jobs description: 'Active job openings posted by companies, with hiring-trend signals.' - name: Aggregate description: >- Composable single- and multi-metric aggregations across companies, universities, government bodies and NGOs, funding rounds, valuations, founders, investors, and entities of every type. - name: Timeseries description: 'Yearly entity metrics (employees, revenue, valuation).' - name: Filters description: >- Filter registry discovery and value lookup. Use `/reference/filters` to discover available filters per scope and `/reference/filters/:key/values` to look up valid values. - name: Health description: 'Liveness probe (public, unauthenticated).' - name: Search description: >- Cross-resource fuzzy search across companies, investors, people, universities, and government & NGO bodies. x-tagGroups: - name: Data tags: - Entities - Companies - Universities - Government & NGO - Transactions - Valuations - Investors - Funds - People - Founders - News - Jobs - Search - name: Analytics tags: - Aggregate - Timeseries - name: Reference tags: - Discovery - Filters components: securitySchemes: bearerAuth: type: http scheme: bearer bearerFormat: JWT description: >- Auth0 JWT access token. Paste a token obtained from your preferred OAuth2 flow. For machine-to-machine use, the OAuth2 client_credentials scheme below can mint a token directly from your `client_id` / `client_secret` inside the Swagger UI Authorize dialog. oauth2: type: oauth2 description: >- OAuth2 client-credentials flow against the Dealroom Auth0 tenant. Use the `client_id` / `client_secret` from a Programmatic API key. Tokens are valid for 24h — Swagger UI will reuse the same token across operations. Revoking or deactivating a key rejects it on the next request (within a ≤5-minute server-side cache window), not at token expiry. flows: clientCredentials: tokenUrl: 'https://accounts.dealroom.co/oauth/token' scopes: 'read:entities': 'Grant the read:entities permission' 'read:transactions': 'Grant the read:transactions permission' 'read:valuations': 'Grant the read:valuations permission' 'read:investors': 'Grant the read:investors permission' 'read:founders': 'Grant the read:founders permission' 'read:dimensions': 'Grant the read:dimensions permission' 'read:timeseries': 'Grant the read:timeseries permission' 'read:aggregate': 'Grant the read:aggregate permission' 'read:news': 'Grant the read:news permission' 'read:jobs': 'Grant the read:jobs permission' 'read:people': 'Grant the read:people permission' 'read:search': 'Grant the read:search permission' schemas: PartialDate: type: string pattern: '^\d{4}(-\d{2}(-\d{2})?)?$' description: >- A date at the precision the source knows it. The value's length is its precision: `YYYY` when only the year is known, `YYYY-MM` for the month, `YYYY-MM-DD` for the day. Never padded: an unknown month or day shortens the value rather than defaulting to `01`. Deliberately not `format: date`, which requires a full day. example: 2024-03 HealthResponse: type: object properties: status: type: string timestamp: type: string format: date-time database: type: string required: - status - timestamp - database DiscoveryResponse: type: object properties: version: type: string example: '2026-06-15' groups: type: object additionalProperties: type: object properties: description: type: string url: type: string required: - description - url example: description: 'Core domain entities (companies, investors, founders).' url: /data docs: type: string format: uri example: 'https://developers.dealroom.co' openapi: type: string example: /openapi required: - version - groups - docs NamespaceDiscoveryResponse: type: object properties: version: type: string example: '2026-06-15' namespace: type: string example: data description: type: string resources: type: object additionalProperties: type: object properties: description: type: string url: type: string required: - description - url example: description: 'Core domain entities (companies, investors, founders).' url: /data docs: type: string format: uri example: 'https://developers.dealroom.co' openapi: type: string example: /openapi required: - version - namespace - description - resources - docs EntityListResponse: oneOf: - $ref: '#/components/schemas/EntityListResponseFull' - $ref: '#/components/schemas/EntityListResponseSummary' discriminator: propertyName: view mapping: full: '#/components/schemas/EntityListResponseFull' summary: '#/components/schemas/EntityListResponseSummary' description: 'Entities: full rows by default, summary rows with `view=summary`.' type: object EntityListResponseFull: type: object properties: view: type: string enum: - full description: 'The view served: full rows.' data: type: array items: $ref: '#/components/schemas/Entity' page: $ref: '#/components/schemas/CappedPaginationPage' currency: type: string required: - view - data - page - currency title: Entities — full rows Entity: oneOf: - $ref: '#/components/schemas/EntityPerson' - $ref: '#/components/schemas/EntityOrganization' discriminator: propertyName: type mapping: person: '#/components/schemas/EntityPerson' organization: '#/components/schemas/EntityOrganization' type: object EntityPerson: type: object properties: uuid: type: string description: Stable UUID of the entity; the sole public identifier. example: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c type: type: string enum: - person description: >- Top-level entity type — exactly one of `organization` or `person`. For organizations, `subtype` carries the specific kind (company / university / gov_ngo / investor). Persons always have a null `subtype`. subtype: type: 'null' description: >- Organization subtype — one of `company`, `university`, `gov_ngo`, `investor`. Mutually exclusive. Always null for persons. example: null name: type: string description: Display name. example: Patrick Collison tagline: type: - string - 'null' description: One-line description. about: type: - string - 'null' description: Long-form description. image: type: - string - 'null' description: Absolute profile image URL. dealroom_url: type: - string - 'null' description: Canonical profile URL on app.dealroom.co. links: type: object properties: linkedin: type: - string - 'null' description: LinkedIn profile URL. twitter: type: - string - 'null' description: Twitter / X profile URL. angellist: type: - string - 'null' description: AngelList URL or handle. crunchbase: type: - string - 'null' description: Crunchbase profile URL. required: - linkedin - twitter - angellist - crunchbase description: The person's own presence on the web; each null when unknown. locations: type: array items: type: object properties: role: $ref: '#/components/schemas/LocationRole' city: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: City; null when not known. state: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: State or region; null when none. country: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: Country. continent: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: Continent. lat: type: - number - 'null' description: 'Entity coordinates when known, otherwise the city centroid.' lon: type: - number - 'null' description: 'Entity coordinates when known, otherwise the city centroid.' required: - role - city - state - country - continent - lat - lon description: Where the person is based; empty when unknown. roles: type: array items: $ref: '#/components/schemas/EntityRole' description: 'Roles the person plays: `founder`, `executive`, `partner`, `investor`.' classifications: type: array items: $ref: '#/components/schemas/Classification' description: Dealroom founder labels; empty when none. taxonomy: type: array items: type: object properties: id: type: number description: Numeric identifier of the tag. name: type: string description: Display name of the tag. type: $ref: '#/components/schemas/TagType' required: - id - name - type description: 'Taxonomy terms, backgrounds included; empty when none.' gender: anyOf: - $ref: '#/components/schemas/Gender' - type: 'null' description: Gender of the person. signal_rating: type: - number - 'null' description: Dealroom founder Signal rating (0-100). investor: type: - object - 'null' properties: rank: type: - number - 'null' description: Dealroom investor ranking (1 = top). Full view only. types: type: array items: type: object properties: id: type: number description: Tag id. name: type: string description: Display name. code: type: string description: Machine-readable code. required: - id - name - code description: Investor types; empty when none. stages: type: array items: type: object properties: id: type: number description: Tag id. name: type: string description: Display name. code: type: string description: Machine-readable code. required: - id - name - code description: Stages invested in; empty when none. deal_size: type: - object - 'null' properties: min: type: - number - 'null' description: 'Smallest ticket, active currency.' max: type: - number - 'null' description: 'Largest ticket, active currency.' required: - min - max description: Ticket size range; null when unknown. investments: type: object properties: count: type: - number - 'null' description: Investments made. total_invested: type: - number - 'null' description: >- Total size of the funding rounds the investor participated in (the full round amounts, not the investor's own ticket), active currency. preferred_round: type: - string - 'null' description: 'Most frequent round stage, e.g. `series_a`.' last_round_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'Date of the most recent investment round, at source precision.' required: - count - total_invested - preferred_round - last_round_date description: Investment activity. portfolio: type: - object - 'null' properties: rounds_count: type: - number - 'null' description: Funding rounds taken part in. total_valuation: type: - number - 'null' description: 'Combined latest valuation of the companies backed, active currency.' companies: type: object properties: total: type: integer description: 'How many exist in total, including those `items` leaves out.' sort: type: string enum: - '-last_round_date' description: 'The order of `items`, in the sub-resource''s `sort` syntax.' items: type: array items: type: object properties: is_lead: type: boolean description: Led at least one of these rounds. rounds_count: type: integer description: Rounds taken part in. last_round_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'Date of the most recent of those rounds, at source precision.' company: $ref: '#/components/schemas/EntityRef' required: - is_lead - rounds_count - last_round_date - company description: >- A capped preview: the first items in `sort` order. When it holds fewer than `total`, page the full list from the sub-resource named above. required: - total - sort - items description: 'Companies backed: the first 10 of `/investors/{id}/portfolio`.' required: - rounds_count - total_valuation - companies description: Companies backed; detail on the `/portfolio` sub-resource. Full view only. exits: type: - object - 'null' properties: count: type: - number - 'null' description: Portfolio companies that exited. total_value: type: - number - 'null' description: 'Combined exit value, active currency.' pct: type: - number - 'null' description: 'Share of the portfolio that exited, %.' required: - count - total_value - pct description: Portfolio exits. Full view only. match: type: - object - 'null' properties: companies_count: type: - number - 'null' description: Portfolio companies matching the request's portfolio filters. invested: type: - number - 'null' description: 'Invested in those companies, active currency.' required: - companies_count - invested description: >- Portfolio companies matching the request's `portfolio_count_*` filters; null when the request carries none. Full view only. required: - rank - types - stages - deal_size - investments - portfolio - exits - match description: The person's investing profile; null unless they invest. founded_companies: type: - object - 'null' properties: count: type: - number - 'null' description: Companies the person founded. total_funding: type: - number - 'null' description: 'Combined funding of the companies founded, active currency.' required: - count - total_funding description: Companies the person founded. Full view only. career: type: object properties: total: type: integer description: 'How many exist in total, including those `items` leaves out.' sort: type: string enum: - '-is_founder,is_past,-start_date' description: 'The order of `items`, in the sub-resource''s `sort` syntax.' items: type: array items: type: object properties: raw_title: type: - string - 'null' description: Job title as recorded. titles: type: array items: type: string description: Normalized job titles. is_founder: type: boolean description: Founded the organization. is_executive: type: boolean description: Holds an executive role there. is_partner: type: boolean description: Holds a partner role there. is_past: type: boolean description: Every role there has ended. start_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'When the first role there started, at source precision.' end_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: When the last role there ended; null while any is current. company: $ref: '#/components/schemas/EntityRef' required: - raw_title - titles - is_founder - is_executive - is_partner - is_past - start_date - end_date - company description: >- A capped preview: the first items in `sort` order. When it holds fewer than `total`, page the full list from the sub-resource named above. required: - total - sort - items description: >- Organizations the person is or was part of: the first 5 of `/people/{id}/career`, founding roles first, then current ones. education: type: object properties: total: type: integer description: 'How many exist in total, including those `items` leaves out.' sort: type: string enum: - '-start_date' description: 'The order of `items`, in the sub-resource''s `sort` syntax.' items: type: array items: type: object properties: degree: type: - object - 'null' properties: id: type: number description: Numeric id. name: type: string description: Display name. required: - id - name description: 'Degree obtained, when known.' majors: type: array items: type: object properties: id: type: number description: Numeric id. name: type: string description: Display name. required: - id - name description: Fields of study. start_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: When the studies started. end_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: When the studies ended. university: $ref: '#/components/schemas/EntityRef' required: - degree - majors - start_date - end_date - university description: >- A capped preview: the first items in `sort` order. When it holds fewer than `total`, page the full list from the sub-resource named above. required: - total - sort - items description: 'Education records: the first 5 of `/people/{id}/education`, most recent first.' available: type: array items: $ref: '#/components/schemas/PersonFullBlock' description: >- Full-only blocks that hold data for this row, listed even when the caller's tier withholds them. added_at: type: - string - 'null' format: date-time description: When the organization was added to Dealroom (RFC 3339). updated_at: type: - string - 'null' format: date-time description: When the record was last modified (RFC 3339). required: - uuid - type - subtype - name - tagline - about - image - dealroom_url - links - locations - roles - classifications - taxonomy - gender - signal_rating - investor - founded_companies - career - education - available - added_at - updated_at title: Person LocationRole: type: string enum: - hq - founding - office description: >- `hq`, `founding` or `office`. An entity has at most one `hq` and one `founding` location, and any number of offices. EntityRole: type: string enum: - founder - executive - partner - investor - limited_partner - fund_manager description: >- A role the entity plays: person roles (founder, executive, partner, investor) and organization roles (investor, limited_partner, fund_manager). Classification: type: string enum: - startup - colt - titan - rising_star - spinout - thoroughbred - unicorn - vc_backed - funded - exited - pe_owned - serial_founder - super_founder - promising_founder - strong_founder description: >- A Dealroom label. New values are added without a version change, so a client must tolerate a value it does not recognise. TagType: type: string enum: - sector - technology - industry - sub_industry - business_model - income_stream - client_focus - sdg - ownership - techstack_category - deal_structure - growth_stage - investor_type - background description: 'Category of a tag (e.g. industry, sector, technology).' Gender: type: string enum: - male - female - non_binary - prefer_not_to_say description: Gender of a person. EntityRef: type: object properties: uuid: type: string description: Stable UUID of the entity. type: $ref: '#/components/schemas/EntityType' subtype: anyOf: - $ref: '#/components/schemas/OrganizationSubtype' - type: 'null' description: Organization subtype; always null for a person. name: type: string description: Display name. image: type: - string - 'null' description: Absolute image URL; null when none. dealroom_url: type: - string - 'null' description: Canonical profile URL on app.dealroom.co. required: - uuid - type - subtype - name - image - dealroom_url description: >- The identity of an entity embedded in another entity's response. Closed: richer detail lives on the sub-resource, where tier redaction can reach it. EntityType: type: string enum: - organization - person description: 'Top-level entity type: `organization` or `person`.' OrganizationSubtype: type: string enum: - company - university - gov_ngo - investor description: 'The kind of organization: company, university, gov_ngo or investor.' PersonFullBlock: type: string enum: - founded_companies - career - education - portfolio - exits - match description: 'A full-only block of a person row, as `available[]` lists it.' EntityOrganization: oneOf: - $ref: '#/components/schemas/EntityCompany' - $ref: '#/components/schemas/EntityUniversity' - $ref: '#/components/schemas/EntityGovNgo' - $ref: '#/components/schemas/EntityInvestor' discriminator: propertyName: subtype mapping: company: '#/components/schemas/EntityCompany' university: '#/components/schemas/EntityUniversity' gov_ngo: '#/components/schemas/EntityGovNgo' investor: '#/components/schemas/EntityInvestor' title: Organization type: object EntityCompany: type: object properties: uuid: type: string description: Stable UUID of the entity; the sole public identifier. example: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c type: type: string enum: - organization description: >- Top-level entity type — exactly one of `organization` or `person`. For organizations, `subtype` carries the specific kind (company / university / gov_ngo / investor). Persons always have a null `subtype`. domain: type: - string - 'null' description: 'Registrable domain, e.g. "stripe.com".' example: stripe.com name: type: string description: Display name. example: Stripe tagline: type: - string - 'null' description: One-line description. about: type: - string - 'null' description: Long-form description. image: type: - string - 'null' description: Absolute logo URL. dealroom_url: type: - string - 'null' description: Canonical profile URL on app.dealroom.co. links: type: object properties: website: type: - string - 'null' description: Website URL. linkedin: type: - string - 'null' description: LinkedIn profile URL. twitter: type: - string - 'null' description: Twitter / X profile URL. instagram: type: - string - 'null' description: Instagram URL or handle. angellist: type: - string - 'null' description: AngelList URL or handle. crunchbase: type: - string - 'null' description: Crunchbase profile URL. required: - website - linkedin - twitter - instagram - angellist - crunchbase description: The entity's own presence on the web; each null when unknown. locations: type: array items: type: object properties: role: $ref: '#/components/schemas/LocationRole' city: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: City; null when not known. state: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: State or region; null when none. country: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: Country. continent: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: Continent. lat: type: - number - 'null' description: 'Entity coordinates when known, otherwise the city centroid.' lon: type: - number - 'null' description: 'Entity coordinates when known, otherwise the city centroid.' required: - role - city - state - country - continent - lat - lon description: 'Every location: hq, founding, then offices; empty when none.' roles: type: array items: $ref: '#/components/schemas/EntityRole' description: 'Roles the organization plays: `investor`, `limited_partner`, `fund_manager`.' taxonomy: type: array items: type: object properties: id: type: number description: Numeric identifier of the tag. name: type: string description: Display name of the tag. type: $ref: '#/components/schemas/TagType' required: - id - name - type description: 'Taxonomy terms (industries, sectors, technologies, …); empty when none.' launch_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'When the organization was founded, at source precision.' closing_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: When the organization closed; null while active. employees_count: type: - number - 'null' description: Number of employees. added_at: type: - string - 'null' format: date-time description: When the organization was added to Dealroom (RFC 3339). updated_at: type: - string - 'null' format: date-time description: When the record was last modified (RFC 3339). subtype: type: string enum: - company description: >- Organization subtype — one of `company`, `university`, `gov_ngo`, `investor`. Mutually exclusive. Always null for persons. classifications: type: array items: $ref: '#/components/schemas/Classification' description: Dealroom labels; empty when none. employee_count_1y_growth: type: - number - 'null' description: 'Year-over-year employee growth, %.' status: anyOf: - $ref: '#/components/schemas/CompanyStatus' - type: 'null' description: Operational status. signal_rating: type: - number - 'null' description: Dealroom Signal rating (0-100). unicorn_type: type: - string - 'null' description: 'Unicorn tier, e.g. "unicorn", "decacorn".' became_unicorn_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: When the company reached a $1B valuation. became_thoroughbred_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: When the company was verified as a Thoroughbred. exit_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: When the company exited (IPO or acquisition). investor: type: - object - 'null' properties: rank: type: - number - 'null' description: Dealroom investor ranking (1 = top). Full view only. types: type: array items: type: object properties: id: type: number description: Tag id. name: type: string description: Display name. code: type: string description: Machine-readable code. required: - id - name - code description: Investor types; empty when none. stages: type: array items: type: object properties: id: type: number description: Tag id. name: type: string description: Display name. code: type: string description: Machine-readable code. required: - id - name - code description: Stages invested in; empty when none. deal_size: type: - object - 'null' properties: min: type: - number - 'null' description: 'Smallest ticket, active currency.' max: type: - number - 'null' description: 'Largest ticket, active currency.' required: - min - max description: Ticket size range; null when unknown. investments: type: object properties: count: type: - number - 'null' description: Investments made. total_invested: type: - number - 'null' description: >- Total size of the funding rounds the investor participated in (the full round amounts, not the investor's own ticket), active currency. preferred_round: type: - string - 'null' description: 'Most frequent round stage, e.g. `series_a`.' last_round_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'Date of the most recent investment round, at source precision.' required: - count - total_invested - preferred_round - last_round_date description: Investment activity. portfolio: type: - object - 'null' properties: rounds_count: type: - number - 'null' description: Funding rounds taken part in. total_valuation: type: - number - 'null' description: 'Combined latest valuation of the companies backed, active currency.' companies: type: object properties: total: type: integer description: 'How many exist in total, including those `items` leaves out.' sort: type: string enum: - '-last_round_date' description: 'The order of `items`, in the sub-resource''s `sort` syntax.' items: type: array items: type: object properties: is_lead: type: boolean description: Led at least one of these rounds. rounds_count: type: integer description: Rounds taken part in. last_round_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'Date of the most recent of those rounds, at source precision.' company: $ref: '#/components/schemas/EntityRef' required: - is_lead - rounds_count - last_round_date - company description: >- A capped preview: the first items in `sort` order. When it holds fewer than `total`, page the full list from the sub-resource named above. required: - total - sort - items description: 'Companies backed: the first 10 of `/investors/{id}/portfolio`.' required: - rounds_count - total_valuation - companies description: Companies backed; detail on the `/portfolio` sub-resource. Full view only. exits: type: - object - 'null' properties: count: type: - number - 'null' description: Portfolio companies that exited. total_value: type: - number - 'null' description: 'Combined exit value, active currency.' pct: type: - number - 'null' description: 'Share of the portfolio that exited, %.' required: - count - total_value - pct description: Portfolio exits. Full view only. match: type: - object - 'null' properties: companies_count: type: - number - 'null' description: Portfolio companies matching the request's portfolio filters. invested: type: - number - 'null' description: 'Invested in those companies, active currency.' required: - companies_count - invested description: >- Portfolio companies matching the request's `portfolio_count_*` filters; null when the request carries none. Full view only. required: - rank - types - stages - deal_size - investments - portfolio - exits - match description: The organization's investing profile; null unless it invests. funding: type: - object - 'null' properties: total: type: - number - 'null' description: 'Total raised, active currency.' total_vc: type: - number - 'null' description: VC-only share of `total`. rounds_count: type: - number - 'null' description: Funding rounds recorded. required: - total - total_vc - rounds_count description: Funding raised; null when no round is recorded. valuation: type: - object - 'null' properties: value: type: - number - 'null' description: 'Latest valuation, active currency.' year: type: - number - 'null' description: Year the valuation was recorded. month: type: - number - 'null' description: Month (1-12); null when unknown. required: - value - year - month description: 'Most recent valuation, with the period it applies to.' jobs: type: object properties: is_hiring: type: - boolean - 'null' description: Currently recruiting. open_count: type: number description: Active job openings; 0 when none. required: - is_hiring - open_count description: Hiring status and open roles. revenue: type: - object - 'null' properties: value: type: - number - 'null' description: 'Latest revenue, active currency.' year: type: - number - 'null' description: Year the revenue applies to. required: - value - year description: Most recent revenue. traffic: type: - object - 'null' properties: monthly_visits: type: - number - 'null' description: Monthly site visits. growth_3m: type: - number - 'null' description: '% change over 3 months.' required: - monthly_visits - growth_3m description: Web traffic (SimilarWeb). patents: type: - object - 'null' properties: count: type: - number - 'null' description: Valued patents (PatSnap). required: - count description: Valued patents (PatSnap); detail on the `/patents` sub-resource. founders: type: object properties: total: type: integer description: 'How many exist in total, including those `items` leaves out.' sort: type: string enum: - '-is_strong_founder,-signal_rating' description: 'The order of `items`, in the sub-resource''s `sort` syntax.' items: type: array items: type: object properties: raw_title: type: - string - 'null' description: Job title as recorded. titles: type: array items: type: string description: Normalized job titles. is_founder: type: boolean description: Founded the organization. is_executive: type: boolean description: Holds an executive role there. is_partner: type: boolean description: Holds a partner role there. is_past: type: boolean description: Every role there has ended. start_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'When the first role there started, at source precision.' end_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: When the last role there ended; null while any is current. person: $ref: '#/components/schemas/FounderRef' required: - raw_title - titles - is_founder - is_executive - is_partner - is_past - start_date - end_date - person description: >- A capped preview: the first items in `sort` order. When it holds fewer than `total`, page the full list from the sub-resource named above. required: - total - sort - items description: >- Current founders: the first 5 of `/{collection}/{id}/team?role=founder&is_past=false&sort=-is_strong_founder,-signal_rating`, strong founders first, so the cap never drops the founder a strong-founder filter matched. available: type: array items: $ref: '#/components/schemas/CompanyFullBlock' description: >- Full-only blocks that hold data for this row, listed even when the caller's tier withholds them. required: - uuid - type - domain - name - tagline - about - image - dealroom_url - links - locations - roles - taxonomy - launch_date - closing_date - employees_count - added_at - updated_at - subtype - classifications - employee_count_1y_growth - status - signal_rating - unicorn_type - became_unicorn_date - became_thoroughbred_date - exit_date - investor - funding - valuation - jobs - revenue - traffic - patents - founders - available title: Company CompanyStatus: type: string enum: - operational - acquired - closed - low_activity description: Operational status of a company. FounderRef: allOf: - $ref: '#/components/schemas/EntityRef' - type: object properties: classifications: type: array items: $ref: '#/components/schemas/PersonClassification' description: The founder's Dealroom labels; the glance sorts strong founders first. required: - classifications description: An `EntityRef` plus the founder labels the founders glance is ordered by. PersonClassification: type: string enum: - serial_founder - super_founder - promising_founder - strong_founder description: 'A Dealroom founder label: the person-applicable subset of `Classification`.' CompanyFullBlock: type: string enum: - founders - patents - revenue - traffic - portfolio - exits - match description: 'A full-only block of a company row, as `available[]` lists it.' EntityUniversity: type: object properties: uuid: type: string description: Stable UUID of the entity; the sole public identifier. example: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c type: type: string enum: - organization description: >- Top-level entity type — exactly one of `organization` or `person`. For organizations, `subtype` carries the specific kind (company / university / gov_ngo / investor). Persons always have a null `subtype`. domain: type: - string - 'null' description: 'Registrable domain, e.g. "stripe.com".' example: stripe.com name: type: string description: Display name. example: Stripe tagline: type: - string - 'null' description: One-line description. about: type: - string - 'null' description: Long-form description. image: type: - string - 'null' description: Absolute logo URL. dealroom_url: type: - string - 'null' description: Canonical profile URL on app.dealroom.co. links: type: object properties: website: type: - string - 'null' description: Website URL. linkedin: type: - string - 'null' description: LinkedIn profile URL. twitter: type: - string - 'null' description: Twitter / X profile URL. instagram: type: - string - 'null' description: Instagram URL or handle. angellist: type: - string - 'null' description: AngelList URL or handle. crunchbase: type: - string - 'null' description: Crunchbase profile URL. required: - website - linkedin - twitter - instagram - angellist - crunchbase description: The entity's own presence on the web; each null when unknown. locations: type: array items: type: object properties: role: $ref: '#/components/schemas/LocationRole' city: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: City; null when not known. state: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: State or region; null when none. country: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: Country. continent: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: Continent. lat: type: - number - 'null' description: 'Entity coordinates when known, otherwise the city centroid.' lon: type: - number - 'null' description: 'Entity coordinates when known, otherwise the city centroid.' required: - role - city - state - country - continent - lat - lon description: 'Every location: hq, founding, then offices; empty when none.' roles: type: array items: $ref: '#/components/schemas/EntityRole' description: 'Roles the organization plays: `investor`, `limited_partner`, `fund_manager`.' taxonomy: type: array items: type: object properties: id: type: number description: Numeric identifier of the tag. name: type: string description: Display name of the tag. type: $ref: '#/components/schemas/TagType' required: - id - name - type description: 'Taxonomy terms (industries, sectors, technologies, …); empty when none.' launch_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'When the organization was founded, at source precision.' closing_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: When the organization closed; null while active. employees_count: type: - number - 'null' description: Number of employees. added_at: type: - string - 'null' format: date-time description: When the organization was added to Dealroom (RFC 3339). updated_at: type: - string - 'null' format: date-time description: When the record was last modified (RFC 3339). subtype: type: string enum: - university description: >- Organization subtype — one of `company`, `university`, `gov_ngo`, `investor`. Mutually exclusive. Always null for persons. spinouts_count: type: - number - 'null' description: Spinout companies originating from the university. investor: type: - object - 'null' properties: rank: type: - number - 'null' description: Dealroom investor ranking (1 = top). Full view only. types: type: array items: type: object properties: id: type: number description: Tag id. name: type: string description: Display name. code: type: string description: Machine-readable code. required: - id - name - code description: Investor types; empty when none. stages: type: array items: type: object properties: id: type: number description: Tag id. name: type: string description: Display name. code: type: string description: Machine-readable code. required: - id - name - code description: Stages invested in; empty when none. deal_size: type: - object - 'null' properties: min: type: - number - 'null' description: 'Smallest ticket, active currency.' max: type: - number - 'null' description: 'Largest ticket, active currency.' required: - min - max description: Ticket size range; null when unknown. investments: type: object properties: count: type: - number - 'null' description: Investments made. total_invested: type: - number - 'null' description: >- Total size of the funding rounds the investor participated in (the full round amounts, not the investor's own ticket), active currency. preferred_round: type: - string - 'null' description: 'Most frequent round stage, e.g. `series_a`.' last_round_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'Date of the most recent investment round, at source precision.' required: - count - total_invested - preferred_round - last_round_date description: Investment activity. portfolio: type: - object - 'null' properties: rounds_count: type: - number - 'null' description: Funding rounds taken part in. total_valuation: type: - number - 'null' description: 'Combined latest valuation of the companies backed, active currency.' companies: type: object properties: total: type: integer description: 'How many exist in total, including those `items` leaves out.' sort: type: string enum: - '-last_round_date' description: 'The order of `items`, in the sub-resource''s `sort` syntax.' items: type: array items: type: object properties: is_lead: type: boolean description: Led at least one of these rounds. rounds_count: type: integer description: Rounds taken part in. last_round_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'Date of the most recent of those rounds, at source precision.' company: $ref: '#/components/schemas/EntityRef' required: - is_lead - rounds_count - last_round_date - company description: >- A capped preview: the first items in `sort` order. When it holds fewer than `total`, page the full list from the sub-resource named above. required: - total - sort - items description: 'Companies backed: the first 10 of `/investors/{id}/portfolio`.' required: - rounds_count - total_valuation - companies description: Companies backed; detail on the `/portfolio` sub-resource. Full view only. exits: type: - object - 'null' properties: count: type: - number - 'null' description: Portfolio companies that exited. total_value: type: - number - 'null' description: 'Combined exit value, active currency.' pct: type: - number - 'null' description: 'Share of the portfolio that exited, %.' required: - count - total_value - pct description: Portfolio exits. Full view only. match: type: - object - 'null' properties: companies_count: type: - number - 'null' description: Portfolio companies matching the request's portfolio filters. invested: type: - number - 'null' description: 'Invested in those companies, active currency.' required: - companies_count - invested description: >- Portfolio companies matching the request's `portfolio_count_*` filters; null when the request carries none. Full view only. required: - rank - types - stages - deal_size - investments - portfolio - exits - match description: The organization's investing profile; null unless it invests. patents: type: - object - 'null' properties: count: type: - number - 'null' description: Valued patents (PatSnap). required: - count description: Valued patents (PatSnap); detail on the `/patents` sub-resource. alumni: type: - object - 'null' properties: count: type: - number - 'null' description: Alumni recorded. founders_count: type: - number - 'null' description: Alumni who are founders. founded_companies_count: type: - number - 'null' description: Companies founded by alumni. unicorn_companies_count: type: - number - 'null' description: Unicorns founded by alumni. required: - count - founders_count - founded_companies_count - unicorn_companies_count description: Alumni counts. available: type: array items: $ref: '#/components/schemas/UniversityFullBlock' description: >- Full-only blocks that hold data for this row, listed even when the caller's tier withholds them. required: - uuid - type - domain - name - tagline - about - image - dealroom_url - links - locations - roles - taxonomy - launch_date - closing_date - employees_count - added_at - updated_at - subtype - spinouts_count - investor - patents - alumni - available title: University UniversityFullBlock: type: string enum: - alumni - patents - portfolio - exits - match description: 'A full-only block of a university row, as `available[]` lists it.' EntityGovNgo: type: object properties: uuid: type: string description: Stable UUID of the entity; the sole public identifier. example: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c type: type: string enum: - organization description: >- Top-level entity type — exactly one of `organization` or `person`. For organizations, `subtype` carries the specific kind (company / university / gov_ngo / investor). Persons always have a null `subtype`. domain: type: - string - 'null' description: 'Registrable domain, e.g. "stripe.com".' example: stripe.com name: type: string description: Display name. example: Stripe tagline: type: - string - 'null' description: One-line description. about: type: - string - 'null' description: Long-form description. image: type: - string - 'null' description: Absolute logo URL. dealroom_url: type: - string - 'null' description: Canonical profile URL on app.dealroom.co. links: type: object properties: website: type: - string - 'null' description: Website URL. linkedin: type: - string - 'null' description: LinkedIn profile URL. twitter: type: - string - 'null' description: Twitter / X profile URL. instagram: type: - string - 'null' description: Instagram URL or handle. angellist: type: - string - 'null' description: AngelList URL or handle. crunchbase: type: - string - 'null' description: Crunchbase profile URL. required: - website - linkedin - twitter - instagram - angellist - crunchbase description: The entity's own presence on the web; each null when unknown. locations: type: array items: type: object properties: role: $ref: '#/components/schemas/LocationRole' city: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: City; null when not known. state: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: State or region; null when none. country: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: Country. continent: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: Continent. lat: type: - number - 'null' description: 'Entity coordinates when known, otherwise the city centroid.' lon: type: - number - 'null' description: 'Entity coordinates when known, otherwise the city centroid.' required: - role - city - state - country - continent - lat - lon description: 'Every location: hq, founding, then offices; empty when none.' roles: type: array items: $ref: '#/components/schemas/EntityRole' description: 'Roles the organization plays: `investor`, `limited_partner`, `fund_manager`.' taxonomy: type: array items: type: object properties: id: type: number description: Numeric identifier of the tag. name: type: string description: Display name of the tag. type: $ref: '#/components/schemas/TagType' required: - id - name - type description: 'Taxonomy terms (industries, sectors, technologies, …); empty when none.' launch_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'When the organization was founded, at source precision.' closing_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: When the organization closed; null while active. employees_count: type: - number - 'null' description: Number of employees. added_at: type: - string - 'null' format: date-time description: When the organization was added to Dealroom (RFC 3339). updated_at: type: - string - 'null' format: date-time description: When the record was last modified (RFC 3339). subtype: type: string enum: - gov_ngo description: >- Organization subtype — one of `company`, `university`, `gov_ngo`, `investor`. Mutually exclusive. Always null for persons. classifications: type: array items: $ref: '#/components/schemas/Classification' description: Dealroom labels; empty when none. signal_rating: type: - number - 'null' description: Dealroom Signal rating (0-100). investor: type: - object - 'null' properties: rank: type: - number - 'null' description: Dealroom investor ranking (1 = top). Full view only. types: type: array items: type: object properties: id: type: number description: Tag id. name: type: string description: Display name. code: type: string description: Machine-readable code. required: - id - name - code description: Investor types; empty when none. stages: type: array items: type: object properties: id: type: number description: Tag id. name: type: string description: Display name. code: type: string description: Machine-readable code. required: - id - name - code description: Stages invested in; empty when none. deal_size: type: - object - 'null' properties: min: type: - number - 'null' description: 'Smallest ticket, active currency.' max: type: - number - 'null' description: 'Largest ticket, active currency.' required: - min - max description: Ticket size range; null when unknown. investments: type: object properties: count: type: - number - 'null' description: Investments made. total_invested: type: - number - 'null' description: >- Total size of the funding rounds the investor participated in (the full round amounts, not the investor's own ticket), active currency. preferred_round: type: - string - 'null' description: 'Most frequent round stage, e.g. `series_a`.' last_round_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'Date of the most recent investment round, at source precision.' required: - count - total_invested - preferred_round - last_round_date description: Investment activity. portfolio: type: - object - 'null' properties: rounds_count: type: - number - 'null' description: Funding rounds taken part in. total_valuation: type: - number - 'null' description: 'Combined latest valuation of the companies backed, active currency.' companies: type: object properties: total: type: integer description: 'How many exist in total, including those `items` leaves out.' sort: type: string enum: - '-last_round_date' description: 'The order of `items`, in the sub-resource''s `sort` syntax.' items: type: array items: type: object properties: is_lead: type: boolean description: Led at least one of these rounds. rounds_count: type: integer description: Rounds taken part in. last_round_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'Date of the most recent of those rounds, at source precision.' company: $ref: '#/components/schemas/EntityRef' required: - is_lead - rounds_count - last_round_date - company description: >- A capped preview: the first items in `sort` order. When it holds fewer than `total`, page the full list from the sub-resource named above. required: - total - sort - items description: 'Companies backed: the first 10 of `/investors/{id}/portfolio`.' required: - rounds_count - total_valuation - companies description: Companies backed; detail on the `/portfolio` sub-resource. Full view only. exits: type: - object - 'null' properties: count: type: - number - 'null' description: Portfolio companies that exited. total_value: type: - number - 'null' description: 'Combined exit value, active currency.' pct: type: - number - 'null' description: 'Share of the portfolio that exited, %.' required: - count - total_value - pct description: Portfolio exits. Full view only. match: type: - object - 'null' properties: companies_count: type: - number - 'null' description: Portfolio companies matching the request's portfolio filters. invested: type: - number - 'null' description: 'Invested in those companies, active currency.' required: - companies_count - invested description: >- Portfolio companies matching the request's `portfolio_count_*` filters; null when the request carries none. Full view only. required: - rank - types - stages - deal_size - investments - portfolio - exits - match description: The organization's investing profile; null unless it invests. funding: type: - object - 'null' properties: total: type: - number - 'null' description: 'Total raised, active currency.' total_vc: type: - number - 'null' description: VC-only share of `total`. rounds_count: type: - number - 'null' description: Funding rounds recorded. required: - total - total_vc - rounds_count description: Funding raised; null when no round is recorded. jobs: type: object properties: is_hiring: type: - boolean - 'null' description: Currently recruiting. open_count: type: number description: Active job openings; 0 when none. required: - is_hiring - open_count description: Hiring status and open roles. traffic: type: - object - 'null' properties: monthly_visits: type: - number - 'null' description: Monthly site visits. growth_3m: type: - number - 'null' description: '% change over 3 months.' required: - monthly_visits - growth_3m description: Web traffic (SimilarWeb). patents: type: - object - 'null' properties: count: type: - number - 'null' description: Valued patents (PatSnap). required: - count description: Valued patents (PatSnap); detail on the `/patents` sub-resource. founders: type: object properties: total: type: integer description: 'How many exist in total, including those `items` leaves out.' sort: type: string enum: - '-is_strong_founder,-signal_rating' description: 'The order of `items`, in the sub-resource''s `sort` syntax.' items: type: array items: type: object properties: raw_title: type: - string - 'null' description: Job title as recorded. titles: type: array items: type: string description: Normalized job titles. is_founder: type: boolean description: Founded the organization. is_executive: type: boolean description: Holds an executive role there. is_partner: type: boolean description: Holds a partner role there. is_past: type: boolean description: Every role there has ended. start_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'When the first role there started, at source precision.' end_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: When the last role there ended; null while any is current. person: $ref: '#/components/schemas/FounderRef' required: - raw_title - titles - is_founder - is_executive - is_partner - is_past - start_date - end_date - person description: >- A capped preview: the first items in `sort` order. When it holds fewer than `total`, page the full list from the sub-resource named above. required: - total - sort - items description: >- Current founders: the first 5 of `/{collection}/{id}/team?role=founder&is_past=false&sort=-is_strong_founder,-signal_rating`, strong founders first, so the cap never drops the founder a strong-founder filter matched. available: type: array items: $ref: '#/components/schemas/GovNgoFullBlock' description: >- Full-only blocks that hold data for this row, listed even when the caller's tier withholds them. required: - uuid - type - domain - name - tagline - about - image - dealroom_url - links - locations - roles - taxonomy - launch_date - closing_date - employees_count - added_at - updated_at - subtype - classifications - signal_rating - investor - funding - jobs - traffic - patents - founders - available title: Government & NGO GovNgoFullBlock: type: string enum: - founders - patents - traffic - portfolio - exits - match description: 'A full-only block of a gov/NGO row, as `available[]` lists it.' EntityInvestor: type: object properties: uuid: type: string description: Stable UUID of the entity; the sole public identifier. example: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c type: type: string enum: - organization description: >- Top-level entity type — exactly one of `organization` or `person`. For organizations, `subtype` carries the specific kind (company / university / gov_ngo / investor). Persons always have a null `subtype`. domain: type: - string - 'null' description: 'Registrable domain, e.g. "stripe.com".' example: stripe.com name: type: string description: Display name. example: Stripe tagline: type: - string - 'null' description: One-line description. about: type: - string - 'null' description: Long-form description. image: type: - string - 'null' description: Absolute logo URL. dealroom_url: type: - string - 'null' description: Canonical profile URL on app.dealroom.co. links: type: object properties: website: type: - string - 'null' description: Website URL. linkedin: type: - string - 'null' description: LinkedIn profile URL. twitter: type: - string - 'null' description: Twitter / X profile URL. instagram: type: - string - 'null' description: Instagram URL or handle. angellist: type: - string - 'null' description: AngelList URL or handle. crunchbase: type: - string - 'null' description: Crunchbase profile URL. required: - website - linkedin - twitter - instagram - angellist - crunchbase description: The entity's own presence on the web; each null when unknown. locations: type: array items: type: object properties: role: $ref: '#/components/schemas/LocationRole' city: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: City; null when not known. state: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: State or region; null when none. country: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: Country. continent: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: Continent. lat: type: - number - 'null' description: 'Entity coordinates when known, otherwise the city centroid.' lon: type: - number - 'null' description: 'Entity coordinates when known, otherwise the city centroid.' required: - role - city - state - country - continent - lat - lon description: 'Every location: hq, founding, then offices; empty when none.' roles: type: array items: $ref: '#/components/schemas/EntityRole' description: 'Roles the organization plays: `investor`, `limited_partner`, `fund_manager`.' taxonomy: type: array items: type: object properties: id: type: number description: Numeric identifier of the tag. name: type: string description: Display name of the tag. type: $ref: '#/components/schemas/TagType' required: - id - name - type description: 'Taxonomy terms (industries, sectors, technologies, …); empty when none.' launch_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'When the organization was founded, at source precision.' closing_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: When the organization closed; null while active. employees_count: type: - number - 'null' description: Number of employees. added_at: type: - string - 'null' format: date-time description: When the organization was added to Dealroom (RFC 3339). updated_at: type: - string - 'null' format: date-time description: When the record was last modified (RFC 3339). subtype: type: string enum: - investor description: >- Organization subtype — one of `company`, `university`, `gov_ngo`, `investor`. Mutually exclusive. Always null for persons. signal_rating: type: - number - 'null' description: Dealroom Signal rating (0-100). rank: type: - number - 'null' description: Dealroom investor ranking (1 = top). Full view only. types: type: array items: type: object properties: id: type: number description: Tag id. name: type: string description: Display name. code: type: string description: Machine-readable code. required: - id - name - code description: Investor types; empty when none. stages: type: array items: type: object properties: id: type: number description: Tag id. name: type: string description: Display name. code: type: string description: Machine-readable code. required: - id - name - code description: Stages invested in; empty when none. deal_size: type: - object - 'null' properties: min: type: - number - 'null' description: 'Smallest ticket, active currency.' max: type: - number - 'null' description: 'Largest ticket, active currency.' required: - min - max description: Ticket size range; null when unknown. investments: type: object properties: count: type: - number - 'null' description: Investments made. total_invested: type: - number - 'null' description: >- Total size of the funding rounds the investor participated in (the full round amounts, not the investor's own ticket), active currency. preferred_round: type: - string - 'null' description: 'Most frequent round stage, e.g. `series_a`.' last_round_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'Date of the most recent investment round, at source precision.' required: - count - total_invested - preferred_round - last_round_date description: Investment activity. portfolio: type: - object - 'null' properties: rounds_count: type: - number - 'null' description: Funding rounds taken part in. total_valuation: type: - number - 'null' description: 'Combined latest valuation of the companies backed, active currency.' companies: type: object properties: total: type: integer description: 'How many exist in total, including those `items` leaves out.' sort: type: string enum: - '-last_round_date' description: 'The order of `items`, in the sub-resource''s `sort` syntax.' items: type: array items: type: object properties: is_lead: type: boolean description: Led at least one of these rounds. rounds_count: type: integer description: Rounds taken part in. last_round_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'Date of the most recent of those rounds, at source precision.' company: $ref: '#/components/schemas/EntityRef' required: - is_lead - rounds_count - last_round_date - company description: >- A capped preview: the first items in `sort` order. When it holds fewer than `total`, page the full list from the sub-resource named above. required: - total - sort - items description: 'Companies backed: the first 10 of `/investors/{id}/portfolio`.' required: - rounds_count - total_valuation - companies description: Companies backed; detail on the `/portfolio` sub-resource. Full view only. exits: type: - object - 'null' properties: count: type: - number - 'null' description: Portfolio companies that exited. total_value: type: - number - 'null' description: 'Combined exit value, active currency.' pct: type: - number - 'null' description: 'Share of the portfolio that exited, %.' required: - count - total_value - pct description: Portfolio exits. Full view only. match: type: - object - 'null' properties: companies_count: type: - number - 'null' description: Portfolio companies matching the request's portfolio filters. invested: type: - number - 'null' description: 'Invested in those companies, active currency.' required: - companies_count - invested description: >- Portfolio companies matching the request's `portfolio_count_*` filters; null when the request carries none. Full view only. investor: type: 'null' description: 'Always null: an investor''s profile is flat at the root.' available: type: array items: $ref: '#/components/schemas/InvestorFullBlock' description: >- Full-only blocks that hold data for this row, listed even when the caller's tier withholds them. required: - uuid - type - domain - name - tagline - about - image - dealroom_url - links - locations - roles - taxonomy - launch_date - closing_date - employees_count - added_at - updated_at - subtype - signal_rating - rank - types - stages - deal_size - investments - portfolio - exits - match - investor - available title: Investor firm InvestorFullBlock: type: string enum: - portfolio - exits - match description: 'A full-only block of an investor row, as `available[]` lists it.' CappedPaginationPage: type: object properties: total: type: - number - 'null' limit: type: number offset: type: number next_cursor: type: - string - 'null' description: Opaque cursor for the next page. Null when no further pages exist. prev_cursor: type: - string - 'null' description: Opaque cursor for the previous page. Null when on the first page. capped: type: boolean description: True when the requested page size was reduced to the per-tier/ecosystem row cap. tier: $ref: '#/components/schemas/AccessTier' ecosystem: type: - string - 'null' description: 'Slug of the active ecosystem subdomain, or null when none is in scope.' required: - total - limit - offset - next_cursor - prev_cursor - capped - tier - ecosystem AccessTier: type: string enum: - anonymous - free - premium description: >- The access tier applied to this request (anonymous, free, premium). API-key callers report premium: they receive the full field set and are not page-capped. EntityListResponseSummary: type: object properties: view: type: string enum: - summary description: 'The view served: summary rows.' data: type: array items: $ref: '#/components/schemas/EntitySummary' page: $ref: '#/components/schemas/CappedPaginationPage' currency: type: string required: - view - data - page - currency title: Entities — summary rows EntitySummary: oneOf: - $ref: '#/components/schemas/PersonSummary' - $ref: '#/components/schemas/OrganizationSummary' discriminator: propertyName: type mapping: person: '#/components/schemas/PersonSummary' organization: '#/components/schemas/OrganizationSummary' description: 'An entity as it appears on another row: its type''s row without the full-only blocks.' type: object PersonSummary: type: object properties: uuid: type: string description: Stable UUID of the entity; the sole public identifier. example: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c type: type: string enum: - person description: >- Top-level entity type — exactly one of `organization` or `person`. For organizations, `subtype` carries the specific kind (company / university / gov_ngo / investor). Persons always have a null `subtype`. subtype: type: 'null' description: >- Organization subtype — one of `company`, `university`, `gov_ngo`, `investor`. Mutually exclusive. Always null for persons. example: null name: type: string description: Display name. example: Patrick Collison tagline: type: - string - 'null' description: One-line description. about: type: - string - 'null' description: Long-form description. image: type: - string - 'null' description: Absolute profile image URL. dealroom_url: type: - string - 'null' description: Canonical profile URL on app.dealroom.co. links: type: object properties: linkedin: type: - string - 'null' description: LinkedIn profile URL. twitter: type: - string - 'null' description: Twitter / X profile URL. angellist: type: - string - 'null' description: AngelList URL or handle. crunchbase: type: - string - 'null' description: Crunchbase profile URL. required: - linkedin - twitter - angellist - crunchbase description: The person's own presence on the web; each null when unknown. locations: type: array items: type: object properties: role: $ref: '#/components/schemas/LocationRole' city: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: City; null when not known. state: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: State or region; null when none. country: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: Country. continent: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: Continent. lat: type: - number - 'null' description: 'Entity coordinates when known, otherwise the city centroid.' lon: type: - number - 'null' description: 'Entity coordinates when known, otherwise the city centroid.' required: - role - city - state - country - continent - lat - lon description: Where the person is based; empty when unknown. roles: type: array items: $ref: '#/components/schemas/EntityRole' description: 'Roles the person plays: `founder`, `executive`, `partner`, `investor`.' classifications: type: array items: $ref: '#/components/schemas/Classification' description: Dealroom founder labels; empty when none. taxonomy: type: array items: type: object properties: id: type: number description: Numeric identifier of the tag. name: type: string description: Display name of the tag. type: $ref: '#/components/schemas/TagType' required: - id - name - type description: 'Taxonomy terms, backgrounds included; empty when none.' gender: anyOf: - $ref: '#/components/schemas/Gender' - type: 'null' description: Gender of the person. signal_rating: type: - number - 'null' description: Dealroom founder Signal rating (0-100). investor: type: - object - 'null' properties: types: type: array items: type: object properties: id: type: number description: Tag id. name: type: string description: Display name. code: type: string description: Machine-readable code. required: - id - name - code description: Investor types; empty when none. stages: type: array items: type: object properties: id: type: number description: Tag id. name: type: string description: Display name. code: type: string description: Machine-readable code. required: - id - name - code description: Stages invested in; empty when none. deal_size: type: - object - 'null' properties: min: type: - number - 'null' description: 'Smallest ticket, active currency.' max: type: - number - 'null' description: 'Largest ticket, active currency.' required: - min - max description: Ticket size range; null when unknown. investments: type: object properties: count: type: - number - 'null' description: Investments made. total_invested: type: - number - 'null' description: >- Total size of the funding rounds the investor participated in (the full round amounts, not the investor's own ticket), active currency. preferred_round: type: - string - 'null' description: 'Most frequent round stage, e.g. `series_a`.' last_round_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'Date of the most recent investment round, at source precision.' required: - count - total_invested - preferred_round - last_round_date description: Investment activity. required: - types - stages - deal_size - investments description: The person's investing profile; null unless they invest. added_at: type: - string - 'null' format: date-time description: When the organization was added to Dealroom (RFC 3339). updated_at: type: - string - 'null' format: date-time description: When the record was last modified (RFC 3339). required: - uuid - type - subtype - name - tagline - about - image - dealroom_url - links - locations - roles - classifications - taxonomy - gender - signal_rating - investor - added_at - updated_at title: Person description: 'An entity as it appears on another row: its type''s row without the full-only blocks.' OrganizationSummary: oneOf: - $ref: '#/components/schemas/CompanySummary' - $ref: '#/components/schemas/UniversitySummary' - $ref: '#/components/schemas/GovNgoSummary' - $ref: '#/components/schemas/InvestorSummary' discriminator: propertyName: subtype mapping: company: '#/components/schemas/CompanySummary' university: '#/components/schemas/UniversitySummary' gov_ngo: '#/components/schemas/GovNgoSummary' investor: '#/components/schemas/InvestorSummary' title: Organization description: 'An entity as it appears on another row: its type''s row without the full-only blocks.' type: object CompanySummary: type: object properties: uuid: type: string description: Stable UUID of the entity; the sole public identifier. example: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c type: type: string enum: - organization description: >- Top-level entity type — exactly one of `organization` or `person`. For organizations, `subtype` carries the specific kind (company / university / gov_ngo / investor). Persons always have a null `subtype`. domain: type: - string - 'null' description: 'Registrable domain, e.g. "stripe.com".' example: stripe.com name: type: string description: Display name. example: Stripe tagline: type: - string - 'null' description: One-line description. about: type: - string - 'null' description: Long-form description. image: type: - string - 'null' description: Absolute logo URL. dealroom_url: type: - string - 'null' description: Canonical profile URL on app.dealroom.co. links: type: object properties: website: type: - string - 'null' description: Website URL. linkedin: type: - string - 'null' description: LinkedIn profile URL. twitter: type: - string - 'null' description: Twitter / X profile URL. instagram: type: - string - 'null' description: Instagram URL or handle. angellist: type: - string - 'null' description: AngelList URL or handle. crunchbase: type: - string - 'null' description: Crunchbase profile URL. required: - website - linkedin - twitter - instagram - angellist - crunchbase description: The entity's own presence on the web; each null when unknown. locations: type: array items: type: object properties: role: $ref: '#/components/schemas/LocationRole' city: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: City; null when not known. state: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: State or region; null when none. country: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: Country. continent: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: Continent. lat: type: - number - 'null' description: 'Entity coordinates when known, otherwise the city centroid.' lon: type: - number - 'null' description: 'Entity coordinates when known, otherwise the city centroid.' required: - role - city - state - country - continent - lat - lon description: 'Every location: hq, founding, then offices; empty when none.' roles: type: array items: $ref: '#/components/schemas/EntityRole' description: 'Roles the organization plays: `investor`, `limited_partner`, `fund_manager`.' taxonomy: type: array items: type: object properties: id: type: number description: Numeric identifier of the tag. name: type: string description: Display name of the tag. type: $ref: '#/components/schemas/TagType' required: - id - name - type description: 'Taxonomy terms (industries, sectors, technologies, …); empty when none.' launch_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'When the organization was founded, at source precision.' closing_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: When the organization closed; null while active. employees_count: type: - number - 'null' description: Number of employees. added_at: type: - string - 'null' format: date-time description: When the organization was added to Dealroom (RFC 3339). updated_at: type: - string - 'null' format: date-time description: When the record was last modified (RFC 3339). subtype: type: string enum: - company description: >- Organization subtype — one of `company`, `university`, `gov_ngo`, `investor`. Mutually exclusive. Always null for persons. classifications: type: array items: $ref: '#/components/schemas/Classification' description: Dealroom labels; empty when none. employee_count_1y_growth: type: - number - 'null' description: 'Year-over-year employee growth, %.' status: anyOf: - $ref: '#/components/schemas/CompanyStatus' - type: 'null' description: Operational status. signal_rating: type: - number - 'null' description: Dealroom Signal rating (0-100). unicorn_type: type: - string - 'null' description: 'Unicorn tier, e.g. "unicorn", "decacorn".' became_unicorn_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: When the company reached a $1B valuation. became_thoroughbred_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: When the company was verified as a Thoroughbred. exit_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: When the company exited (IPO or acquisition). investor: type: - object - 'null' properties: types: type: array items: type: object properties: id: type: number description: Tag id. name: type: string description: Display name. code: type: string description: Machine-readable code. required: - id - name - code description: Investor types; empty when none. stages: type: array items: type: object properties: id: type: number description: Tag id. name: type: string description: Display name. code: type: string description: Machine-readable code. required: - id - name - code description: Stages invested in; empty when none. deal_size: type: - object - 'null' properties: min: type: - number - 'null' description: 'Smallest ticket, active currency.' max: type: - number - 'null' description: 'Largest ticket, active currency.' required: - min - max description: Ticket size range; null when unknown. investments: type: object properties: count: type: - number - 'null' description: Investments made. total_invested: type: - number - 'null' description: >- Total size of the funding rounds the investor participated in (the full round amounts, not the investor's own ticket), active currency. preferred_round: type: - string - 'null' description: 'Most frequent round stage, e.g. `series_a`.' last_round_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'Date of the most recent investment round, at source precision.' required: - count - total_invested - preferred_round - last_round_date description: Investment activity. required: - types - stages - deal_size - investments description: The organization's investing profile; null unless it invests. funding: type: - object - 'null' properties: total: type: - number - 'null' description: 'Total raised, active currency.' total_vc: type: - number - 'null' description: VC-only share of `total`. rounds_count: type: - number - 'null' description: Funding rounds recorded. required: - total - total_vc - rounds_count description: Funding raised; null when no round is recorded. valuation: type: - object - 'null' properties: value: type: - number - 'null' description: 'Latest valuation, active currency.' year: type: - number - 'null' description: Year the valuation was recorded. month: type: - number - 'null' description: Month (1-12); null when unknown. required: - value - year - month description: 'Most recent valuation, with the period it applies to.' jobs: type: object properties: is_hiring: type: - boolean - 'null' description: Currently recruiting. open_count: type: number description: Active job openings; 0 when none. required: - is_hiring - open_count description: Hiring status and open roles. required: - uuid - type - domain - name - tagline - about - image - dealroom_url - links - locations - roles - taxonomy - launch_date - closing_date - employees_count - added_at - updated_at - subtype - classifications - employee_count_1y_growth - status - signal_rating - unicorn_type - became_unicorn_date - became_thoroughbred_date - exit_date - investor - funding - valuation - jobs title: Company description: 'An entity as it appears on another row: its type''s row without the full-only blocks.' UniversitySummary: type: object properties: uuid: type: string description: Stable UUID of the entity; the sole public identifier. example: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c type: type: string enum: - organization description: >- Top-level entity type — exactly one of `organization` or `person`. For organizations, `subtype` carries the specific kind (company / university / gov_ngo / investor). Persons always have a null `subtype`. domain: type: - string - 'null' description: 'Registrable domain, e.g. "stripe.com".' example: stripe.com name: type: string description: Display name. example: Stripe tagline: type: - string - 'null' description: One-line description. about: type: - string - 'null' description: Long-form description. image: type: - string - 'null' description: Absolute logo URL. dealroom_url: type: - string - 'null' description: Canonical profile URL on app.dealroom.co. links: type: object properties: website: type: - string - 'null' description: Website URL. linkedin: type: - string - 'null' description: LinkedIn profile URL. twitter: type: - string - 'null' description: Twitter / X profile URL. instagram: type: - string - 'null' description: Instagram URL or handle. angellist: type: - string - 'null' description: AngelList URL or handle. crunchbase: type: - string - 'null' description: Crunchbase profile URL. required: - website - linkedin - twitter - instagram - angellist - crunchbase description: The entity's own presence on the web; each null when unknown. locations: type: array items: type: object properties: role: $ref: '#/components/schemas/LocationRole' city: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: City; null when not known. state: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: State or region; null when none. country: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: Country. continent: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: Continent. lat: type: - number - 'null' description: 'Entity coordinates when known, otherwise the city centroid.' lon: type: - number - 'null' description: 'Entity coordinates when known, otherwise the city centroid.' required: - role - city - state - country - continent - lat - lon description: 'Every location: hq, founding, then offices; empty when none.' roles: type: array items: $ref: '#/components/schemas/EntityRole' description: 'Roles the organization plays: `investor`, `limited_partner`, `fund_manager`.' taxonomy: type: array items: type: object properties: id: type: number description: Numeric identifier of the tag. name: type: string description: Display name of the tag. type: $ref: '#/components/schemas/TagType' required: - id - name - type description: 'Taxonomy terms (industries, sectors, technologies, …); empty when none.' launch_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'When the organization was founded, at source precision.' closing_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: When the organization closed; null while active. employees_count: type: - number - 'null' description: Number of employees. added_at: type: - string - 'null' format: date-time description: When the organization was added to Dealroom (RFC 3339). updated_at: type: - string - 'null' format: date-time description: When the record was last modified (RFC 3339). subtype: type: string enum: - university description: >- Organization subtype — one of `company`, `university`, `gov_ngo`, `investor`. Mutually exclusive. Always null for persons. spinouts_count: type: - number - 'null' description: Spinout companies originating from the university. investor: type: - object - 'null' properties: types: type: array items: type: object properties: id: type: number description: Tag id. name: type: string description: Display name. code: type: string description: Machine-readable code. required: - id - name - code description: Investor types; empty when none. stages: type: array items: type: object properties: id: type: number description: Tag id. name: type: string description: Display name. code: type: string description: Machine-readable code. required: - id - name - code description: Stages invested in; empty when none. deal_size: type: - object - 'null' properties: min: type: - number - 'null' description: 'Smallest ticket, active currency.' max: type: - number - 'null' description: 'Largest ticket, active currency.' required: - min - max description: Ticket size range; null when unknown. investments: type: object properties: count: type: - number - 'null' description: Investments made. total_invested: type: - number - 'null' description: >- Total size of the funding rounds the investor participated in (the full round amounts, not the investor's own ticket), active currency. preferred_round: type: - string - 'null' description: 'Most frequent round stage, e.g. `series_a`.' last_round_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'Date of the most recent investment round, at source precision.' required: - count - total_invested - preferred_round - last_round_date description: Investment activity. required: - types - stages - deal_size - investments description: The organization's investing profile; null unless it invests. required: - uuid - type - domain - name - tagline - about - image - dealroom_url - links - locations - roles - taxonomy - launch_date - closing_date - employees_count - added_at - updated_at - subtype - spinouts_count - investor title: University description: 'An entity as it appears on another row: its type''s row without the full-only blocks.' GovNgoSummary: type: object properties: uuid: type: string description: Stable UUID of the entity; the sole public identifier. example: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c type: type: string enum: - organization description: >- Top-level entity type — exactly one of `organization` or `person`. For organizations, `subtype` carries the specific kind (company / university / gov_ngo / investor). Persons always have a null `subtype`. domain: type: - string - 'null' description: 'Registrable domain, e.g. "stripe.com".' example: stripe.com name: type: string description: Display name. example: Stripe tagline: type: - string - 'null' description: One-line description. about: type: - string - 'null' description: Long-form description. image: type: - string - 'null' description: Absolute logo URL. dealroom_url: type: - string - 'null' description: Canonical profile URL on app.dealroom.co. links: type: object properties: website: type: - string - 'null' description: Website URL. linkedin: type: - string - 'null' description: LinkedIn profile URL. twitter: type: - string - 'null' description: Twitter / X profile URL. instagram: type: - string - 'null' description: Instagram URL or handle. angellist: type: - string - 'null' description: AngelList URL or handle. crunchbase: type: - string - 'null' description: Crunchbase profile URL. required: - website - linkedin - twitter - instagram - angellist - crunchbase description: The entity's own presence on the web; each null when unknown. locations: type: array items: type: object properties: role: $ref: '#/components/schemas/LocationRole' city: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: City; null when not known. state: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: State or region; null when none. country: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: Country. continent: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: Continent. lat: type: - number - 'null' description: 'Entity coordinates when known, otherwise the city centroid.' lon: type: - number - 'null' description: 'Entity coordinates when known, otherwise the city centroid.' required: - role - city - state - country - continent - lat - lon description: 'Every location: hq, founding, then offices; empty when none.' roles: type: array items: $ref: '#/components/schemas/EntityRole' description: 'Roles the organization plays: `investor`, `limited_partner`, `fund_manager`.' taxonomy: type: array items: type: object properties: id: type: number description: Numeric identifier of the tag. name: type: string description: Display name of the tag. type: $ref: '#/components/schemas/TagType' required: - id - name - type description: 'Taxonomy terms (industries, sectors, technologies, …); empty when none.' launch_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'When the organization was founded, at source precision.' closing_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: When the organization closed; null while active. employees_count: type: - number - 'null' description: Number of employees. added_at: type: - string - 'null' format: date-time description: When the organization was added to Dealroom (RFC 3339). updated_at: type: - string - 'null' format: date-time description: When the record was last modified (RFC 3339). subtype: type: string enum: - gov_ngo description: >- Organization subtype — one of `company`, `university`, `gov_ngo`, `investor`. Mutually exclusive. Always null for persons. classifications: type: array items: $ref: '#/components/schemas/Classification' description: Dealroom labels; empty when none. signal_rating: type: - number - 'null' description: Dealroom Signal rating (0-100). investor: type: - object - 'null' properties: types: type: array items: type: object properties: id: type: number description: Tag id. name: type: string description: Display name. code: type: string description: Machine-readable code. required: - id - name - code description: Investor types; empty when none. stages: type: array items: type: object properties: id: type: number description: Tag id. name: type: string description: Display name. code: type: string description: Machine-readable code. required: - id - name - code description: Stages invested in; empty when none. deal_size: type: - object - 'null' properties: min: type: - number - 'null' description: 'Smallest ticket, active currency.' max: type: - number - 'null' description: 'Largest ticket, active currency.' required: - min - max description: Ticket size range; null when unknown. investments: type: object properties: count: type: - number - 'null' description: Investments made. total_invested: type: - number - 'null' description: >- Total size of the funding rounds the investor participated in (the full round amounts, not the investor's own ticket), active currency. preferred_round: type: - string - 'null' description: 'Most frequent round stage, e.g. `series_a`.' last_round_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'Date of the most recent investment round, at source precision.' required: - count - total_invested - preferred_round - last_round_date description: Investment activity. required: - types - stages - deal_size - investments description: The organization's investing profile; null unless it invests. funding: type: - object - 'null' properties: total: type: - number - 'null' description: 'Total raised, active currency.' total_vc: type: - number - 'null' description: VC-only share of `total`. rounds_count: type: - number - 'null' description: Funding rounds recorded. required: - total - total_vc - rounds_count description: Funding raised; null when no round is recorded. jobs: type: object properties: is_hiring: type: - boolean - 'null' description: Currently recruiting. open_count: type: number description: Active job openings; 0 when none. required: - is_hiring - open_count description: Hiring status and open roles. required: - uuid - type - domain - name - tagline - about - image - dealroom_url - links - locations - roles - taxonomy - launch_date - closing_date - employees_count - added_at - updated_at - subtype - classifications - signal_rating - investor - funding - jobs title: Government & NGO description: 'An entity as it appears on another row: its type''s row without the full-only blocks.' InvestorSummary: type: object properties: uuid: type: string description: Stable UUID of the entity; the sole public identifier. example: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c type: type: string enum: - organization description: >- Top-level entity type — exactly one of `organization` or `person`. For organizations, `subtype` carries the specific kind (company / university / gov_ngo / investor). Persons always have a null `subtype`. domain: type: - string - 'null' description: 'Registrable domain, e.g. "stripe.com".' example: stripe.com name: type: string description: Display name. example: Stripe tagline: type: - string - 'null' description: One-line description. about: type: - string - 'null' description: Long-form description. image: type: - string - 'null' description: Absolute logo URL. dealroom_url: type: - string - 'null' description: Canonical profile URL on app.dealroom.co. links: type: object properties: website: type: - string - 'null' description: Website URL. linkedin: type: - string - 'null' description: LinkedIn profile URL. twitter: type: - string - 'null' description: Twitter / X profile URL. instagram: type: - string - 'null' description: Instagram URL or handle. angellist: type: - string - 'null' description: AngelList URL or handle. crunchbase: type: - string - 'null' description: Crunchbase profile URL. required: - website - linkedin - twitter - instagram - angellist - crunchbase description: The entity's own presence on the web; each null when unknown. locations: type: array items: type: object properties: role: $ref: '#/components/schemas/LocationRole' city: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: City; null when not known. state: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: State or region; null when none. country: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: Country. continent: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: Continent. lat: type: - number - 'null' description: 'Entity coordinates when known, otherwise the city centroid.' lon: type: - number - 'null' description: 'Entity coordinates when known, otherwise the city centroid.' required: - role - city - state - country - continent - lat - lon description: 'Every location: hq, founding, then offices; empty when none.' roles: type: array items: $ref: '#/components/schemas/EntityRole' description: 'Roles the organization plays: `investor`, `limited_partner`, `fund_manager`.' taxonomy: type: array items: type: object properties: id: type: number description: Numeric identifier of the tag. name: type: string description: Display name of the tag. type: $ref: '#/components/schemas/TagType' required: - id - name - type description: 'Taxonomy terms (industries, sectors, technologies, …); empty when none.' launch_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'When the organization was founded, at source precision.' closing_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: When the organization closed; null while active. employees_count: type: - number - 'null' description: Number of employees. added_at: type: - string - 'null' format: date-time description: When the organization was added to Dealroom (RFC 3339). updated_at: type: - string - 'null' format: date-time description: When the record was last modified (RFC 3339). subtype: type: string enum: - investor description: >- Organization subtype — one of `company`, `university`, `gov_ngo`, `investor`. Mutually exclusive. Always null for persons. signal_rating: type: - number - 'null' description: Dealroom Signal rating (0-100). types: type: array items: type: object properties: id: type: number description: Tag id. name: type: string description: Display name. code: type: string description: Machine-readable code. required: - id - name - code description: Investor types; empty when none. stages: type: array items: type: object properties: id: type: number description: Tag id. name: type: string description: Display name. code: type: string description: Machine-readable code. required: - id - name - code description: Stages invested in; empty when none. deal_size: type: - object - 'null' properties: min: type: - number - 'null' description: 'Smallest ticket, active currency.' max: type: - number - 'null' description: 'Largest ticket, active currency.' required: - min - max description: Ticket size range; null when unknown. investments: type: object properties: count: type: - number - 'null' description: Investments made. total_invested: type: - number - 'null' description: >- Total size of the funding rounds the investor participated in (the full round amounts, not the investor's own ticket), active currency. preferred_round: type: - string - 'null' description: 'Most frequent round stage, e.g. `series_a`.' last_round_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'Date of the most recent investment round, at source precision.' required: - count - total_invested - preferred_round - last_round_date description: Investment activity. investor: type: 'null' description: 'Always null: an investor''s profile is flat at the root.' required: - uuid - type - domain - name - tagline - about - image - dealroom_url - links - locations - roles - taxonomy - launch_date - closing_date - employees_count - added_at - updated_at - subtype - signal_rating - types - stages - deal_size - investments - investor title: Investor firm description: 'An entity as it appears on another row: its type''s row without the full-only blocks.' ErrorResponse: type: object properties: error: type: object properties: code: type: string enum: - VALIDATION_ERROR - NOT_FOUND - UNAUTHORIZED - DATABASE_ERROR - UNKNOWN_FILTER - FILTER_VALIDATION_ERROR - UNSUPPORTED_OPERATOR - FILTER_PARSE_ERROR - QUERY_TIMEOUT - INTERNAL_SERVER_ERROR - INVALID_ENTITY_ID - PAGINATION_DEPTH_EXCEEDED - SCHEMA_ERROR - FORBIDDEN - EXTERNAL_SERVICE_ERROR - ACCOUNT_REQUIRED - INSTANCE_ACCESS_REQUIRED - SERVICE_UNAVAILABLE - RATE_LIMITED - CREDITS_EXHAUSTED - LIST_LOCKED - PATH_RENAMED - ENDPOINT_REMOVED description: Stable machine-readable error code. message: type: string details: anyOf: - type: array items: type: object properties: path: type: string message: type: string required: - path - message - type: object additionalProperties: anyOf: - type: string - type: number - type: boolean - type: 'null' required: - code - message - details required: - error GeoPointListResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/GeoPoint' page: type: object properties: total: type: - number - 'null' limit: type: number offset: type: number next_cursor: type: - string - 'null' description: Opaque cursor for the next page. Null when no further pages exist. prev_cursor: type: - string - 'null' description: Opaque cursor for the previous page. Null when on the first page. required: - total - limit - offset - next_cursor - prev_cursor required: - data - page GeoPoint: type: object properties: uuid: type: string name: type: string lat: type: - number - 'null' lon: type: - number - 'null' hq_country: type: - string - 'null' hq_city: type: - string - 'null' required: - uuid - name - lat - lon - hq_country - hq_city EntityDetailResponse: type: object properties: data: $ref: '#/components/schemas/Entity' currency: type: string required: - data - currency EntityLpFundsResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/EntityLpFundItem' page: type: object properties: total: type: - number - 'null' limit: type: number offset: type: number next_cursor: type: - string - 'null' description: Opaque cursor for the next page. Null when no further pages exist. prev_cursor: type: - string - 'null' description: Opaque cursor for the previous page. Null when on the first page. required: - total - limit - offset - next_cursor - prev_cursor currency: type: string description: Currency the participant's monetary fields are expressed in (default USD). example: EUR required: - data - page - currency EntityLpFundItem: type: object properties: investor: $ref: '#/components/schemas/OrganizationSummary' required: - investor CompanyListResponse: oneOf: - $ref: '#/components/schemas/CompanyListResponseFull' - $ref: '#/components/schemas/CompanyListResponseSummary' discriminator: propertyName: view mapping: full: '#/components/schemas/CompanyListResponseFull' summary: '#/components/schemas/CompanyListResponseSummary' description: 'Companies: full rows by default, summary rows with `view=summary`.' type: object CompanyListResponseFull: type: object properties: view: type: string enum: - full description: 'The view served: full rows.' data: type: array items: $ref: '#/components/schemas/Company' page: $ref: '#/components/schemas/CappedPaginationPage' currency: type: string required: - view - data - page - currency title: Companies — full rows Company: type: object properties: uuid: type: string description: Stable UUID of the entity; the sole public identifier. example: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c type: type: string enum: - organization description: >- Top-level entity type — exactly one of `organization` or `person`. For organizations, `subtype` carries the specific kind (company / university / gov_ngo / investor). Persons always have a null `subtype`. domain: type: - string - 'null' description: 'Registrable domain, e.g. "stripe.com".' example: stripe.com name: type: string description: Display name. example: Stripe tagline: type: - string - 'null' description: One-line description. about: type: - string - 'null' description: Long-form description. image: type: - string - 'null' description: Absolute logo URL. dealroom_url: type: - string - 'null' description: Canonical profile URL on app.dealroom.co. links: type: object properties: website: type: - string - 'null' description: Website URL. linkedin: type: - string - 'null' description: LinkedIn profile URL. twitter: type: - string - 'null' description: Twitter / X profile URL. instagram: type: - string - 'null' description: Instagram URL or handle. angellist: type: - string - 'null' description: AngelList URL or handle. crunchbase: type: - string - 'null' description: Crunchbase profile URL. required: - website - linkedin - twitter - instagram - angellist - crunchbase description: The entity's own presence on the web; each null when unknown. locations: type: array items: type: object properties: role: $ref: '#/components/schemas/LocationRole' city: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: City; null when not known. state: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: State or region; null when none. country: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: Country. continent: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: Continent. lat: type: - number - 'null' description: 'Entity coordinates when known, otherwise the city centroid.' lon: type: - number - 'null' description: 'Entity coordinates when known, otherwise the city centroid.' required: - role - city - state - country - continent - lat - lon description: 'Every location: hq, founding, then offices; empty when none.' roles: type: array items: $ref: '#/components/schemas/EntityRole' description: 'Roles the organization plays: `investor`, `limited_partner`, `fund_manager`.' taxonomy: type: array items: type: object properties: id: type: number description: Numeric identifier of the tag. name: type: string description: Display name of the tag. type: $ref: '#/components/schemas/TagType' required: - id - name - type description: 'Taxonomy terms (industries, sectors, technologies, …); empty when none.' launch_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'When the organization was founded, at source precision.' closing_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: When the organization closed; null while active. employees_count: type: - number - 'null' description: Number of employees. added_at: type: - string - 'null' format: date-time description: When the organization was added to Dealroom (RFC 3339). updated_at: type: - string - 'null' format: date-time description: When the record was last modified (RFC 3339). subtype: type: string enum: - company description: >- Organization subtype — one of `company`, `university`, `gov_ngo`, `investor`. Mutually exclusive. Always null for persons. classifications: type: array items: $ref: '#/components/schemas/Classification' description: Dealroom labels; empty when none. employee_count_1y_growth: type: - number - 'null' description: 'Year-over-year employee growth, %.' status: anyOf: - $ref: '#/components/schemas/CompanyStatus' - type: 'null' description: Operational status. signal_rating: type: - number - 'null' description: Dealroom Signal rating (0-100). unicorn_type: type: - string - 'null' description: 'Unicorn tier, e.g. "unicorn", "decacorn".' became_unicorn_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: When the company reached a $1B valuation. became_thoroughbred_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: When the company was verified as a Thoroughbred. exit_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: When the company exited (IPO or acquisition). investor: type: - object - 'null' properties: rank: type: - number - 'null' description: Dealroom investor ranking (1 = top). Full view only. types: type: array items: type: object properties: id: type: number description: Tag id. name: type: string description: Display name. code: type: string description: Machine-readable code. required: - id - name - code description: Investor types; empty when none. stages: type: array items: type: object properties: id: type: number description: Tag id. name: type: string description: Display name. code: type: string description: Machine-readable code. required: - id - name - code description: Stages invested in; empty when none. deal_size: type: - object - 'null' properties: min: type: - number - 'null' description: 'Smallest ticket, active currency.' max: type: - number - 'null' description: 'Largest ticket, active currency.' required: - min - max description: Ticket size range; null when unknown. investments: type: object properties: count: type: - number - 'null' description: Investments made. total_invested: type: - number - 'null' description: >- Total size of the funding rounds the investor participated in (the full round amounts, not the investor's own ticket), active currency. preferred_round: type: - string - 'null' description: 'Most frequent round stage, e.g. `series_a`.' last_round_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'Date of the most recent investment round, at source precision.' required: - count - total_invested - preferred_round - last_round_date description: Investment activity. portfolio: type: - object - 'null' properties: rounds_count: type: - number - 'null' description: Funding rounds taken part in. total_valuation: type: - number - 'null' description: 'Combined latest valuation of the companies backed, active currency.' companies: type: object properties: total: type: integer description: 'How many exist in total, including those `items` leaves out.' sort: type: string enum: - '-last_round_date' description: 'The order of `items`, in the sub-resource''s `sort` syntax.' items: type: array items: type: object properties: is_lead: type: boolean description: Led at least one of these rounds. rounds_count: type: integer description: Rounds taken part in. last_round_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'Date of the most recent of those rounds, at source precision.' company: $ref: '#/components/schemas/EntityRef' required: - is_lead - rounds_count - last_round_date - company description: >- A capped preview: the first items in `sort` order. When it holds fewer than `total`, page the full list from the sub-resource named above. required: - total - sort - items description: 'Companies backed: the first 10 of `/investors/{id}/portfolio`.' required: - rounds_count - total_valuation - companies description: Companies backed; detail on the `/portfolio` sub-resource. Full view only. exits: type: - object - 'null' properties: count: type: - number - 'null' description: Portfolio companies that exited. total_value: type: - number - 'null' description: 'Combined exit value, active currency.' pct: type: - number - 'null' description: 'Share of the portfolio that exited, %.' required: - count - total_value - pct description: Portfolio exits. Full view only. match: type: - object - 'null' properties: companies_count: type: - number - 'null' description: Portfolio companies matching the request's portfolio filters. invested: type: - number - 'null' description: 'Invested in those companies, active currency.' required: - companies_count - invested description: >- Portfolio companies matching the request's `portfolio_count_*` filters; null when the request carries none. Full view only. required: - rank - types - stages - deal_size - investments - portfolio - exits - match description: The organization's investing profile; null unless it invests. funding: type: - object - 'null' properties: total: type: - number - 'null' description: 'Total raised, active currency.' total_vc: type: - number - 'null' description: VC-only share of `total`. rounds_count: type: - number - 'null' description: Funding rounds recorded. required: - total - total_vc - rounds_count description: Funding raised; null when no round is recorded. valuation: type: - object - 'null' properties: value: type: - number - 'null' description: 'Latest valuation, active currency.' year: type: - number - 'null' description: Year the valuation was recorded. month: type: - number - 'null' description: Month (1-12); null when unknown. required: - value - year - month description: 'Most recent valuation, with the period it applies to.' jobs: type: object properties: is_hiring: type: - boolean - 'null' description: Currently recruiting. open_count: type: number description: Active job openings; 0 when none. required: - is_hiring - open_count description: Hiring status and open roles. revenue: type: - object - 'null' properties: value: type: - number - 'null' description: 'Latest revenue, active currency.' year: type: - number - 'null' description: Year the revenue applies to. required: - value - year description: Most recent revenue. traffic: type: - object - 'null' properties: monthly_visits: type: - number - 'null' description: Monthly site visits. growth_3m: type: - number - 'null' description: '% change over 3 months.' required: - monthly_visits - growth_3m description: Web traffic (SimilarWeb). patents: type: - object - 'null' properties: count: type: - number - 'null' description: Valued patents (PatSnap). required: - count description: Valued patents (PatSnap); detail on the `/patents` sub-resource. founders: type: object properties: total: type: integer description: 'How many exist in total, including those `items` leaves out.' sort: type: string enum: - '-is_strong_founder,-signal_rating' description: 'The order of `items`, in the sub-resource''s `sort` syntax.' items: type: array items: type: object properties: raw_title: type: - string - 'null' description: Job title as recorded. titles: type: array items: type: string description: Normalized job titles. is_founder: type: boolean description: Founded the organization. is_executive: type: boolean description: Holds an executive role there. is_partner: type: boolean description: Holds a partner role there. is_past: type: boolean description: Every role there has ended. start_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'When the first role there started, at source precision.' end_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: When the last role there ended; null while any is current. person: $ref: '#/components/schemas/FounderRef' required: - raw_title - titles - is_founder - is_executive - is_partner - is_past - start_date - end_date - person description: >- A capped preview: the first items in `sort` order. When it holds fewer than `total`, page the full list from the sub-resource named above. required: - total - sort - items description: >- Current founders: the first 5 of `/{collection}/{id}/team?role=founder&is_past=false&sort=-is_strong_founder,-signal_rating`, strong founders first, so the cap never drops the founder a strong-founder filter matched. available: type: array items: $ref: '#/components/schemas/CompanyFullBlock' description: >- Full-only blocks that hold data for this row, listed even when the caller's tier withholds them. required: - uuid - type - domain - name - tagline - about - image - dealroom_url - links - locations - roles - taxonomy - launch_date - closing_date - employees_count - added_at - updated_at - subtype - classifications - employee_count_1y_growth - status - signal_rating - unicorn_type - became_unicorn_date - became_thoroughbred_date - exit_date - investor - funding - valuation - jobs - revenue - traffic - patents - founders - available title: Company CompanyListResponseSummary: type: object properties: view: type: string enum: - summary description: 'The view served: summary rows.' data: type: array items: $ref: '#/components/schemas/CompanySummary' page: $ref: '#/components/schemas/CappedPaginationPage' currency: type: string required: - view - data - page - currency title: Companies — summary rows CompanyGeoResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/CompanyGeoPoint' page: type: object properties: total: type: - number - 'null' limit: type: number offset: type: number next_cursor: type: - string - 'null' description: Opaque cursor for the next page. Null when no further pages exist. prev_cursor: type: - string - 'null' description: Opaque cursor for the previous page. Null when on the first page. required: - total - limit - offset - next_cursor - prev_cursor required: - data - page CompanyGeoPoint: type: object properties: id: type: string description: Stable UUID of the company example: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c name: type: - string - 'null' lat: type: number description: HQ latitude (WGS84) lon: type: number description: HQ longitude (WGS84) logo: type: - string - 'null' description: >- Logo/avatar image URL for the company (powers the map's logo layer); null when the entity has no image. May be a bare host/path or a full URL. value: type: - number - 'null' description: >- The `size_by` dimension's value for this company (USD for monetary dimensions); null when there is no value or no `size_by` was requested required: - id - name - lat - lon - logo - value CompanyDetailResponse: type: object properties: data: $ref: '#/components/schemas/Company' currency: type: string required: - data - currency EntityTransactionsResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/EntityTransactionItem' page: type: object properties: total: type: - number - 'null' limit: type: number offset: type: number next_cursor: type: - string - 'null' description: Opaque cursor for the next page. Null when no further pages exist. prev_cursor: type: - string - 'null' description: Opaque cursor for the previous page. Null when on the first page. required: - total - limit - offset - next_cursor - prev_cursor currency: type: string required: - data - page - currency EntityTransactionItem: type: object properties: id: type: number amount: type: - number - 'null' announced_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' round_type: type: - string - 'null' standardized_round: anyOf: - $ref: '#/components/schemas/StandardizedRound' - type: 'null' valuation: type: - number - 'null' is_verified: type: - boolean - 'null' is_vc_round: type: - boolean - 'null' is_exit: type: - boolean - 'null' investors: type: - array - 'null' items: type: object properties: is_lead: type: - boolean - 'null' description: 'Whether this investor led the round, when known.' example: true investor: $ref: '#/components/schemas/EntityRef' required: - is_lead - investor source_url: type: - string - 'null' required: - id - amount - announced_date - round_type - standardized_round - valuation - is_verified - is_vc_round - is_exit - investors - source_url StandardizedRound: type: string enum: - Pre-Seed - Seed - Series A - Series B - Series C - Series D - Series E - Series F+ - Growth - Bridge - Debt - Grant - IPO - Secondary - Other description: 'Normalised round stage, the value the `standardized_round` filter matches.' EntityValuationsResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/EntityValuationItem' page: type: object properties: total: type: - number - 'null' limit: type: number offset: type: number next_cursor: type: - string - 'null' description: Opaque cursor for the next page. Null when no further pages exist. prev_cursor: type: - string - 'null' description: Opaque cursor for the previous page. Null when on the first page. required: - total - limit - offset - next_cursor - prev_cursor currency: type: string required: - data - page - currency EntityValuationItem: type: object properties: id: type: number value: type: - number - 'null' valued_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' is_estimate: type: - boolean - 'null' required: - id - value - valued_date - is_estimate EntityInvestorsResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/EntityInvestorItem' page: type: object properties: total: type: - number - 'null' limit: type: number offset: type: number next_cursor: type: - string - 'null' description: Opaque cursor for the next page. Null when no further pages exist. prev_cursor: type: - string - 'null' description: Opaque cursor for the previous page. Null when on the first page. required: - total - limit - offset - next_cursor - prev_cursor currency: type: string description: Currency the participant's monetary fields are expressed in (default USD). example: EUR required: - data - page - currency EntityInvestorItem: type: object properties: is_lead: type: boolean description: Led at least one of these rounds. rounds_count: type: integer description: Rounds taken part in. last_round_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'Date of the most recent of those rounds, at source precision.' investor: $ref: '#/components/schemas/EntitySummary' required: - is_lead - rounds_count - last_round_date - investor EntityFinancialsResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/FinancialYear' currency: type: string required: - data - currency FinancialYear: type: object properties: year: type: number revenue: type: - number - 'null' ebitda: type: - number - 'null' profit: type: - number - 'null' rnd: type: - number - 'null' valuation: type: - number - 'null' employees: type: - number - 'null' required: - year - revenue - ebitda - profit - rnd - valuation - employees EntityWebTrafficResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/WebTrafficPoint' required: - data WebTrafficPoint: type: object properties: year: type: number example: 2025 month: type: number description: Calendar month (1–12). example: 6 visits: type: - number - 'null' description: >- Estimated web visits for the month (SimilarWeb-derived). Null for callers without premium access, with a `locked[]` entry naming `visits`. example: 1250000 required: - year - month - visits EntityHeadcountBreakdownResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/HeadcountBreakdownPoint' required: - data HeadcountBreakdownPoint: type: object properties: breakdown_type: $ref: '#/components/schemas/HeadcountBreakdownType' item_id: type: number description: Country or department id. example: 233 item_name: type: - string - 'null' description: Display label for the country or department. example: United States year: type: number example: 2025 month: type: number description: Calendar month (1–12). example: 6 percentage: type: - number - 'null' description: >- This item's share of headcount for the period (0–100). Null when the upstream value was NaN/Infinity, or for callers without premium access, with a `locked[]` entry naming `percentage`. example: 42.5 required: - breakdown_type - item_id - item_name - year - month - percentage HeadcountBreakdownType: type: string enum: - country - department description: >- Which breakdown a headcount row belongs to — `country` (employee distribution by country) or `department`. example: country EntityTeamResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/EntityTeamMemberItem' page: type: object properties: total: type: - number - 'null' limit: type: number offset: type: number next_cursor: type: - string - 'null' description: Opaque cursor for the next page. Null when no further pages exist. prev_cursor: type: - string - 'null' description: Opaque cursor for the previous page. Null when on the first page. required: - total - limit - offset - next_cursor - prev_cursor currency: type: string description: Currency the participant's monetary fields are expressed in (default USD). example: EUR required: - data - page - currency EntityTeamMemberItem: type: object properties: raw_title: type: - string - 'null' description: Job title as recorded. titles: type: array items: type: string description: Normalized job titles. is_founder: type: boolean description: Founded the organization. is_executive: type: boolean description: Holds an executive role there. is_partner: type: boolean description: Holds a partner role there. is_past: type: boolean description: Every role there has ended. start_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'When the first role there started, at source precision.' end_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: When the last role there ended; null while any is current. person: $ref: '#/components/schemas/PersonSummary' required: - raw_title - titles - is_founder - is_executive - is_partner - is_past - start_date - end_date - person EntityPatentsResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/EntityPatentItem' page: type: object properties: total: type: - number - 'null' limit: type: number offset: type: number next_cursor: type: - string - 'null' description: Opaque cursor for the next page. Null when no further pages exist. prev_cursor: type: - string - 'null' description: Opaque cursor for the previous page. Null when on the first page. required: - total - limit - offset - next_cursor - prev_cursor required: - data - page EntityPatentItem: type: object properties: publication_number: type: string description: PatSnap publication number. example: US-9876543-B2 title: type: - string - 'null' description: Patent title. abstract: type: - string - 'null' description: Patent abstract. value_usd: type: - number - 'null' description: >- PatSnap's estimated USD value of this patent. Always USD, not currency-converted — see `docs/currency-conversion.md`. example: 1070000 value_scores: type: object properties: legal: type: - number - 'null' strategic: type: - number - 'null' market: type: - number - 'null' economic: type: - number - 'null' technology: type: - number - 'null' required: - legal - strategic - market - economic - technology description: PatSnap's per-dimension value scores (0–100). authority: type: - string - 'null' description: Patent office authority code. example: US patent_type: type: - string - 'null' example: invention application_date: type: - string - 'null' format: date publication_date: type: - string - 'null' format: date estimated_expiry_date: type: - string - 'null' format: date cpc: type: - string - 'null' description: Main CPC classification code. ipc: type: - string - 'null' description: Main IPC classification code. assignees: type: array items: type: string description: Assignee names on this patent. inventors: type: array items: type: string description: Inventor names on this patent. required: - publication_number - title - abstract - value_usd - value_scores - authority - patent_type - application_date - publication_date - estimated_expiry_date - cpc - ipc - assignees - inventors UniversityListResponse: oneOf: - $ref: '#/components/schemas/UniversityListResponseFull' - $ref: '#/components/schemas/UniversityListResponseSummary' discriminator: propertyName: view mapping: full: '#/components/schemas/UniversityListResponseFull' summary: '#/components/schemas/UniversityListResponseSummary' description: 'Universities: full rows by default, summary rows with `view=summary`.' type: object UniversityListResponseFull: type: object properties: view: type: string enum: - full description: 'The view served: full rows.' data: type: array items: $ref: '#/components/schemas/University' page: type: object properties: total: type: - number - 'null' limit: type: number offset: type: number next_cursor: type: - string - 'null' description: Opaque cursor for the next page. Null when no further pages exist. prev_cursor: type: - string - 'null' description: Opaque cursor for the previous page. Null when on the first page. required: - total - limit - offset - next_cursor - prev_cursor currency: type: string required: - view - data - page - currency title: Universities — full rows University: type: object properties: uuid: type: string description: Stable UUID of the entity; the sole public identifier. example: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c type: type: string enum: - organization description: >- Top-level entity type — exactly one of `organization` or `person`. For organizations, `subtype` carries the specific kind (company / university / gov_ngo / investor). Persons always have a null `subtype`. domain: type: - string - 'null' description: 'Registrable domain, e.g. "stripe.com".' example: stripe.com name: type: string description: Display name. example: Stripe tagline: type: - string - 'null' description: One-line description. about: type: - string - 'null' description: Long-form description. image: type: - string - 'null' description: Absolute logo URL. dealroom_url: type: - string - 'null' description: Canonical profile URL on app.dealroom.co. links: type: object properties: website: type: - string - 'null' description: Website URL. linkedin: type: - string - 'null' description: LinkedIn profile URL. twitter: type: - string - 'null' description: Twitter / X profile URL. instagram: type: - string - 'null' description: Instagram URL or handle. angellist: type: - string - 'null' description: AngelList URL or handle. crunchbase: type: - string - 'null' description: Crunchbase profile URL. required: - website - linkedin - twitter - instagram - angellist - crunchbase description: The entity's own presence on the web; each null when unknown. locations: type: array items: type: object properties: role: $ref: '#/components/schemas/LocationRole' city: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: City; null when not known. state: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: State or region; null when none. country: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: Country. continent: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: Continent. lat: type: - number - 'null' description: 'Entity coordinates when known, otherwise the city centroid.' lon: type: - number - 'null' description: 'Entity coordinates when known, otherwise the city centroid.' required: - role - city - state - country - continent - lat - lon description: 'Every location: hq, founding, then offices; empty when none.' roles: type: array items: $ref: '#/components/schemas/EntityRole' description: 'Roles the organization plays: `investor`, `limited_partner`, `fund_manager`.' taxonomy: type: array items: type: object properties: id: type: number description: Numeric identifier of the tag. name: type: string description: Display name of the tag. type: $ref: '#/components/schemas/TagType' required: - id - name - type description: 'Taxonomy terms (industries, sectors, technologies, …); empty when none.' launch_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'When the organization was founded, at source precision.' closing_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: When the organization closed; null while active. employees_count: type: - number - 'null' description: Number of employees. added_at: type: - string - 'null' format: date-time description: When the organization was added to Dealroom (RFC 3339). updated_at: type: - string - 'null' format: date-time description: When the record was last modified (RFC 3339). subtype: type: string enum: - university description: >- Organization subtype — one of `company`, `university`, `gov_ngo`, `investor`. Mutually exclusive. Always null for persons. spinouts_count: type: - number - 'null' description: Spinout companies originating from the university. investor: type: - object - 'null' properties: rank: type: - number - 'null' description: Dealroom investor ranking (1 = top). Full view only. types: type: array items: type: object properties: id: type: number description: Tag id. name: type: string description: Display name. code: type: string description: Machine-readable code. required: - id - name - code description: Investor types; empty when none. stages: type: array items: type: object properties: id: type: number description: Tag id. name: type: string description: Display name. code: type: string description: Machine-readable code. required: - id - name - code description: Stages invested in; empty when none. deal_size: type: - object - 'null' properties: min: type: - number - 'null' description: 'Smallest ticket, active currency.' max: type: - number - 'null' description: 'Largest ticket, active currency.' required: - min - max description: Ticket size range; null when unknown. investments: type: object properties: count: type: - number - 'null' description: Investments made. total_invested: type: - number - 'null' description: >- Total size of the funding rounds the investor participated in (the full round amounts, not the investor's own ticket), active currency. preferred_round: type: - string - 'null' description: 'Most frequent round stage, e.g. `series_a`.' last_round_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'Date of the most recent investment round, at source precision.' required: - count - total_invested - preferred_round - last_round_date description: Investment activity. portfolio: type: - object - 'null' properties: rounds_count: type: - number - 'null' description: Funding rounds taken part in. total_valuation: type: - number - 'null' description: 'Combined latest valuation of the companies backed, active currency.' companies: type: object properties: total: type: integer description: 'How many exist in total, including those `items` leaves out.' sort: type: string enum: - '-last_round_date' description: 'The order of `items`, in the sub-resource''s `sort` syntax.' items: type: array items: type: object properties: is_lead: type: boolean description: Led at least one of these rounds. rounds_count: type: integer description: Rounds taken part in. last_round_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'Date of the most recent of those rounds, at source precision.' company: $ref: '#/components/schemas/EntityRef' required: - is_lead - rounds_count - last_round_date - company description: >- A capped preview: the first items in `sort` order. When it holds fewer than `total`, page the full list from the sub-resource named above. required: - total - sort - items description: 'Companies backed: the first 10 of `/investors/{id}/portfolio`.' required: - rounds_count - total_valuation - companies description: Companies backed; detail on the `/portfolio` sub-resource. Full view only. exits: type: - object - 'null' properties: count: type: - number - 'null' description: Portfolio companies that exited. total_value: type: - number - 'null' description: 'Combined exit value, active currency.' pct: type: - number - 'null' description: 'Share of the portfolio that exited, %.' required: - count - total_value - pct description: Portfolio exits. Full view only. match: type: - object - 'null' properties: companies_count: type: - number - 'null' description: Portfolio companies matching the request's portfolio filters. invested: type: - number - 'null' description: 'Invested in those companies, active currency.' required: - companies_count - invested description: >- Portfolio companies matching the request's `portfolio_count_*` filters; null when the request carries none. Full view only. required: - rank - types - stages - deal_size - investments - portfolio - exits - match description: The organization's investing profile; null unless it invests. patents: type: - object - 'null' properties: count: type: - number - 'null' description: Valued patents (PatSnap). required: - count description: Valued patents (PatSnap); detail on the `/patents` sub-resource. alumni: type: - object - 'null' properties: count: type: - number - 'null' description: Alumni recorded. founders_count: type: - number - 'null' description: Alumni who are founders. founded_companies_count: type: - number - 'null' description: Companies founded by alumni. unicorn_companies_count: type: - number - 'null' description: Unicorns founded by alumni. required: - count - founders_count - founded_companies_count - unicorn_companies_count description: Alumni counts. available: type: array items: $ref: '#/components/schemas/UniversityFullBlock' description: >- Full-only blocks that hold data for this row, listed even when the caller's tier withholds them. required: - uuid - type - domain - name - tagline - about - image - dealroom_url - links - locations - roles - taxonomy - launch_date - closing_date - employees_count - added_at - updated_at - subtype - spinouts_count - investor - patents - alumni - available title: University UniversityListResponseSummary: type: object properties: view: type: string enum: - summary description: 'The view served: summary rows.' data: type: array items: $ref: '#/components/schemas/UniversitySummary' page: type: object properties: total: type: - number - 'null' limit: type: number offset: type: number next_cursor: type: - string - 'null' description: Opaque cursor for the next page. Null when no further pages exist. prev_cursor: type: - string - 'null' description: Opaque cursor for the previous page. Null when on the first page. required: - total - limit - offset - next_cursor - prev_cursor currency: type: string required: - view - data - page - currency title: Universities — summary rows UniversityGeoResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/UniversityGeoPoint' page: type: object properties: total: type: - number - 'null' limit: type: number offset: type: number next_cursor: type: - string - 'null' description: Opaque cursor for the next page. Null when no further pages exist. prev_cursor: type: - string - 'null' description: Opaque cursor for the previous page. Null when on the first page. required: - total - limit - offset - next_cursor - prev_cursor required: - data - page UniversityGeoPoint: type: object properties: id: type: string description: Stable UUID of the university example: c7f4a2b9-1e6d-4c3a-8b5f-2a9d7e4c6b1f name: type: - string - 'null' lat: type: number description: HQ latitude (WGS84) lon: type: number description: HQ longitude (WGS84) logo: type: - string - 'null' description: >- Logo/avatar image URL for the university (powers the map's logo layer); null when the entity has no image. May be a bare host/path or a full URL. value: type: - number - 'null' description: >- The `size_by` dimension's value for this university (USD for monetary dimensions); null when there is no value or no `size_by` was requested required: - id - name - lat - lon - logo - value UniversityDetailResponse: type: object properties: data: $ref: '#/components/schemas/University' currency: type: string required: - data - currency UniversityAlumniResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/UniversityAlumniItem' page: type: object properties: total: type: - number - 'null' limit: type: number offset: type: number next_cursor: type: - string - 'null' description: Opaque cursor for the next page. Null when no further pages exist. prev_cursor: type: - string - 'null' description: Opaque cursor for the previous page. Null when on the first page. required: - total - limit - offset - next_cursor - prev_cursor currency: type: string description: Currency the participant's monetary fields are expressed in (default USD). example: EUR required: - data - page - currency UniversityAlumniItem: type: object properties: degrees: type: array items: type: string description: Degree name(s) earned at this university. example: - Bachelor start_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: When the earliest recorded studies here started. end_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: When the latest recorded studies here ended. person: $ref: '#/components/schemas/PersonSummary' required: - degrees - start_date - end_date - person GovNgoListResponse: oneOf: - $ref: '#/components/schemas/GovNgoListResponseFull' - $ref: '#/components/schemas/GovNgoListResponseSummary' discriminator: propertyName: view mapping: full: '#/components/schemas/GovNgoListResponseFull' summary: '#/components/schemas/GovNgoListResponseSummary' description: 'Government & NGO entities: full rows by default, summary rows with `view=summary`.' type: object GovNgoListResponseFull: type: object properties: view: type: string enum: - full description: 'The view served: full rows.' data: type: array items: $ref: '#/components/schemas/GovNgo' page: type: object properties: total: type: - number - 'null' limit: type: number offset: type: number next_cursor: type: - string - 'null' description: Opaque cursor for the next page. Null when no further pages exist. prev_cursor: type: - string - 'null' description: Opaque cursor for the previous page. Null when on the first page. required: - total - limit - offset - next_cursor - prev_cursor currency: type: string required: - view - data - page - currency title: Government & NGO entities — full rows GovNgo: type: object properties: uuid: type: string description: Stable UUID of the entity; the sole public identifier. example: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c type: type: string enum: - organization description: >- Top-level entity type — exactly one of `organization` or `person`. For organizations, `subtype` carries the specific kind (company / university / gov_ngo / investor). Persons always have a null `subtype`. domain: type: - string - 'null' description: 'Registrable domain, e.g. "stripe.com".' example: stripe.com name: type: string description: Display name. example: Stripe tagline: type: - string - 'null' description: One-line description. about: type: - string - 'null' description: Long-form description. image: type: - string - 'null' description: Absolute logo URL. dealroom_url: type: - string - 'null' description: Canonical profile URL on app.dealroom.co. links: type: object properties: website: type: - string - 'null' description: Website URL. linkedin: type: - string - 'null' description: LinkedIn profile URL. twitter: type: - string - 'null' description: Twitter / X profile URL. instagram: type: - string - 'null' description: Instagram URL or handle. angellist: type: - string - 'null' description: AngelList URL or handle. crunchbase: type: - string - 'null' description: Crunchbase profile URL. required: - website - linkedin - twitter - instagram - angellist - crunchbase description: The entity's own presence on the web; each null when unknown. locations: type: array items: type: object properties: role: $ref: '#/components/schemas/LocationRole' city: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: City; null when not known. state: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: State or region; null when none. country: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: Country. continent: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: Continent. lat: type: - number - 'null' description: 'Entity coordinates when known, otherwise the city centroid.' lon: type: - number - 'null' description: 'Entity coordinates when known, otherwise the city centroid.' required: - role - city - state - country - continent - lat - lon description: 'Every location: hq, founding, then offices; empty when none.' roles: type: array items: $ref: '#/components/schemas/EntityRole' description: 'Roles the organization plays: `investor`, `limited_partner`, `fund_manager`.' taxonomy: type: array items: type: object properties: id: type: number description: Numeric identifier of the tag. name: type: string description: Display name of the tag. type: $ref: '#/components/schemas/TagType' required: - id - name - type description: 'Taxonomy terms (industries, sectors, technologies, …); empty when none.' launch_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'When the organization was founded, at source precision.' closing_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: When the organization closed; null while active. employees_count: type: - number - 'null' description: Number of employees. added_at: type: - string - 'null' format: date-time description: When the organization was added to Dealroom (RFC 3339). updated_at: type: - string - 'null' format: date-time description: When the record was last modified (RFC 3339). subtype: type: string enum: - gov_ngo description: >- Organization subtype — one of `company`, `university`, `gov_ngo`, `investor`. Mutually exclusive. Always null for persons. classifications: type: array items: $ref: '#/components/schemas/Classification' description: Dealroom labels; empty when none. signal_rating: type: - number - 'null' description: Dealroom Signal rating (0-100). investor: type: - object - 'null' properties: rank: type: - number - 'null' description: Dealroom investor ranking (1 = top). Full view only. types: type: array items: type: object properties: id: type: number description: Tag id. name: type: string description: Display name. code: type: string description: Machine-readable code. required: - id - name - code description: Investor types; empty when none. stages: type: array items: type: object properties: id: type: number description: Tag id. name: type: string description: Display name. code: type: string description: Machine-readable code. required: - id - name - code description: Stages invested in; empty when none. deal_size: type: - object - 'null' properties: min: type: - number - 'null' description: 'Smallest ticket, active currency.' max: type: - number - 'null' description: 'Largest ticket, active currency.' required: - min - max description: Ticket size range; null when unknown. investments: type: object properties: count: type: - number - 'null' description: Investments made. total_invested: type: - number - 'null' description: >- Total size of the funding rounds the investor participated in (the full round amounts, not the investor's own ticket), active currency. preferred_round: type: - string - 'null' description: 'Most frequent round stage, e.g. `series_a`.' last_round_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'Date of the most recent investment round, at source precision.' required: - count - total_invested - preferred_round - last_round_date description: Investment activity. portfolio: type: - object - 'null' properties: rounds_count: type: - number - 'null' description: Funding rounds taken part in. total_valuation: type: - number - 'null' description: 'Combined latest valuation of the companies backed, active currency.' companies: type: object properties: total: type: integer description: 'How many exist in total, including those `items` leaves out.' sort: type: string enum: - '-last_round_date' description: 'The order of `items`, in the sub-resource''s `sort` syntax.' items: type: array items: type: object properties: is_lead: type: boolean description: Led at least one of these rounds. rounds_count: type: integer description: Rounds taken part in. last_round_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'Date of the most recent of those rounds, at source precision.' company: $ref: '#/components/schemas/EntityRef' required: - is_lead - rounds_count - last_round_date - company description: >- A capped preview: the first items in `sort` order. When it holds fewer than `total`, page the full list from the sub-resource named above. required: - total - sort - items description: 'Companies backed: the first 10 of `/investors/{id}/portfolio`.' required: - rounds_count - total_valuation - companies description: Companies backed; detail on the `/portfolio` sub-resource. Full view only. exits: type: - object - 'null' properties: count: type: - number - 'null' description: Portfolio companies that exited. total_value: type: - number - 'null' description: 'Combined exit value, active currency.' pct: type: - number - 'null' description: 'Share of the portfolio that exited, %.' required: - count - total_value - pct description: Portfolio exits. Full view only. match: type: - object - 'null' properties: companies_count: type: - number - 'null' description: Portfolio companies matching the request's portfolio filters. invested: type: - number - 'null' description: 'Invested in those companies, active currency.' required: - companies_count - invested description: >- Portfolio companies matching the request's `portfolio_count_*` filters; null when the request carries none. Full view only. required: - rank - types - stages - deal_size - investments - portfolio - exits - match description: The organization's investing profile; null unless it invests. funding: type: - object - 'null' properties: total: type: - number - 'null' description: 'Total raised, active currency.' total_vc: type: - number - 'null' description: VC-only share of `total`. rounds_count: type: - number - 'null' description: Funding rounds recorded. required: - total - total_vc - rounds_count description: Funding raised; null when no round is recorded. jobs: type: object properties: is_hiring: type: - boolean - 'null' description: Currently recruiting. open_count: type: number description: Active job openings; 0 when none. required: - is_hiring - open_count description: Hiring status and open roles. traffic: type: - object - 'null' properties: monthly_visits: type: - number - 'null' description: Monthly site visits. growth_3m: type: - number - 'null' description: '% change over 3 months.' required: - monthly_visits - growth_3m description: Web traffic (SimilarWeb). patents: type: - object - 'null' properties: count: type: - number - 'null' description: Valued patents (PatSnap). required: - count description: Valued patents (PatSnap); detail on the `/patents` sub-resource. founders: type: object properties: total: type: integer description: 'How many exist in total, including those `items` leaves out.' sort: type: string enum: - '-is_strong_founder,-signal_rating' description: 'The order of `items`, in the sub-resource''s `sort` syntax.' items: type: array items: type: object properties: raw_title: type: - string - 'null' description: Job title as recorded. titles: type: array items: type: string description: Normalized job titles. is_founder: type: boolean description: Founded the organization. is_executive: type: boolean description: Holds an executive role there. is_partner: type: boolean description: Holds a partner role there. is_past: type: boolean description: Every role there has ended. start_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'When the first role there started, at source precision.' end_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: When the last role there ended; null while any is current. person: $ref: '#/components/schemas/FounderRef' required: - raw_title - titles - is_founder - is_executive - is_partner - is_past - start_date - end_date - person description: >- A capped preview: the first items in `sort` order. When it holds fewer than `total`, page the full list from the sub-resource named above. required: - total - sort - items description: >- Current founders: the first 5 of `/{collection}/{id}/team?role=founder&is_past=false&sort=-is_strong_founder,-signal_rating`, strong founders first, so the cap never drops the founder a strong-founder filter matched. available: type: array items: $ref: '#/components/schemas/GovNgoFullBlock' description: >- Full-only blocks that hold data for this row, listed even when the caller's tier withholds them. required: - uuid - type - domain - name - tagline - about - image - dealroom_url - links - locations - roles - taxonomy - launch_date - closing_date - employees_count - added_at - updated_at - subtype - classifications - signal_rating - investor - funding - jobs - traffic - patents - founders - available title: Government & NGO GovNgoListResponseSummary: type: object properties: view: type: string enum: - summary description: 'The view served: summary rows.' data: type: array items: $ref: '#/components/schemas/GovNgoSummary' page: type: object properties: total: type: - number - 'null' limit: type: number offset: type: number next_cursor: type: - string - 'null' description: Opaque cursor for the next page. Null when no further pages exist. prev_cursor: type: - string - 'null' description: Opaque cursor for the previous page. Null when on the first page. required: - total - limit - offset - next_cursor - prev_cursor currency: type: string required: - view - data - page - currency title: Government & NGO entities — summary rows GovNgoGeoResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/GovNgoGeoPoint' page: type: object properties: total: type: - number - 'null' limit: type: number offset: type: number next_cursor: type: - string - 'null' description: Opaque cursor for the next page. Null when no further pages exist. prev_cursor: type: - string - 'null' description: Opaque cursor for the previous page. Null when on the first page. required: - total - limit - offset - next_cursor - prev_cursor required: - data - page GovNgoGeoPoint: type: object properties: id: type: string description: Stable UUID of the government/NGO entity example: 8d2f6b4a-9c1e-4f7d-b3a5-6e0c8d2f4a7b name: type: - string - 'null' lat: type: number description: HQ latitude (WGS84) lon: type: number description: HQ longitude (WGS84) logo: type: - string - 'null' description: >- Logo/avatar image URL for the government/NGO entity (powers the map's logo layer); null when the entity has no image. May be a bare host/path or a full URL. value: type: - number - 'null' description: >- The `size_by` dimension's value for this government/NGO entity (USD for monetary dimensions); null when there is no value or no `size_by` was requested required: - id - name - lat - lon - logo - value GovNgoDetailResponse: type: object properties: data: $ref: '#/components/schemas/GovNgo' currency: type: string required: - data - currency TransactionListResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/Transaction' page: $ref: '#/components/schemas/CappedPaginationPage' currency: type: string required: - data - page - currency Transaction: type: object properties: id: type: number description: Stable Dealroom transaction ID. example: 12345 amount: type: - number - 'null' description: 'Round amount in the active currency, as a whole-unit integer.' example: 5000000 announced_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'When the round was announced, at source precision.' example: 2024-03 round_type: type: - string - 'null' description: >- Raw reported round type (e.g. `SEED`, `SERIES A`, `EARLY VC`, `GRANT`). For the normalised stage, use `standardized_round`. See the [Filters reference](/references/filters-and-sorting) for the complete enum. example: SERIES B standardized_round: anyOf: - $ref: '#/components/schemas/StandardizedRound' - type: 'null' description: >- Normalised round stage — one of `Pre-Seed`, `Seed`, `Series A`–`Series E`, `Series F+`, `Growth`, `Bridge`, `Debt`, `Grant`, `IPO`, `Secondary`, `Other`. This is the value the `standardized_round` filter matches. example: Series B valuation: type: - number - 'null' description: >- Post-money valuation in the active currency at the time of this round, as a whole-unit integer. Null when the valuation was not disclosed. example: 5000000000 is_verified: type: - boolean - 'null' description: Whether the round has been verified by Dealroom. example: true is_vc_round: type: - boolean - 'null' description: Whether the round is a venture-capital round. example: true is_exit: type: - boolean - 'null' description: 'Whether the transaction represents an exit (e.g. IPO, acquisition).' example: false company: $ref: '#/components/schemas/OrganizationSummary' investors: type: - array - 'null' items: type: object properties: is_lead: type: - boolean - 'null' description: 'Whether this investor led the round, when known.' example: true investor: $ref: '#/components/schemas/EntityRef' required: - is_lead - investor description: 'Participating investors, leads first. `null` for callers without the premium tier.' source_url: type: - string - 'null' description: >- URL of the news article or press release that is the source for this round. Null when no source is recorded. example: 'https://techcrunch.com/2024/03/21/acme-raises-series-b' deleted_at: type: - string - 'null' format: date-time description: ISO 8601 timestamp when this record was soft-deleted (null = active) example: null required: - id - amount - announced_date - round_type - standardized_round - valuation - is_verified - is_vc_round - is_exit - company - investors - source_url - deleted_at TransactionDetailResponse: type: object properties: data: $ref: '#/components/schemas/Transaction' currency: type: string required: - data - currency ValuationListResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/Valuation' page: $ref: '#/components/schemas/CappedPaginationPage' currency: type: string required: - data - page - currency Valuation: type: object properties: id: type: number description: Stable Dealroom valuation id. example: 1234567 value: type: - number - 'null' description: >- Valuation amount, in the response `currency` (default USD). Null when the source amount is unknown. example: 92000000 valued_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'When the valuation applies, at source precision.' example: 2024-03 is_estimate: type: - boolean - 'null' description: Whether the value is a Dealroom estimate rather than a reported figure. example: false entity: $ref: '#/components/schemas/EntityRef' deleted_at: type: - string - 'null' format: date-time description: ISO 8601 timestamp when this record was soft-deleted (null = active) example: null required: - id - value - valued_date - is_estimate - entity - deleted_at ValuationDetailResponse: type: object properties: data: $ref: '#/components/schemas/Valuation' currency: type: string required: - data - currency InvestorListResponse: oneOf: - $ref: '#/components/schemas/InvestorListResponseFull' - $ref: '#/components/schemas/InvestorListResponseSummary' discriminator: propertyName: view mapping: full: '#/components/schemas/InvestorListResponseFull' summary: '#/components/schemas/InvestorListResponseSummary' description: 'Investors: full rows by default, summary rows with `view=summary`.' type: object InvestorListResponseFull: type: object properties: view: type: string enum: - full description: 'The view served: full rows.' data: type: array items: $ref: '#/components/schemas/InvestorCollectionItem' page: $ref: '#/components/schemas/CappedPaginationPage' currency: type: string required: - view - data - page - currency title: Investors — full rows InvestorCollectionItem: oneOf: - $ref: '#/components/schemas/Person' - $ref: '#/components/schemas/Investor' discriminator: propertyName: type mapping: person: '#/components/schemas/Person' organization: '#/components/schemas/Investor' type: object Person: type: object properties: uuid: type: string description: Stable UUID of the entity; the sole public identifier. example: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c type: type: string enum: - person description: >- Top-level entity type — exactly one of `organization` or `person`. For organizations, `subtype` carries the specific kind (company / university / gov_ngo / investor). Persons always have a null `subtype`. subtype: type: 'null' description: >- Organization subtype — one of `company`, `university`, `gov_ngo`, `investor`. Mutually exclusive. Always null for persons. example: null name: type: string description: Display name. example: Patrick Collison tagline: type: - string - 'null' description: One-line description. about: type: - string - 'null' description: Long-form description. image: type: - string - 'null' description: Absolute profile image URL. dealroom_url: type: - string - 'null' description: Canonical profile URL on app.dealroom.co. links: type: object properties: linkedin: type: - string - 'null' description: LinkedIn profile URL. twitter: type: - string - 'null' description: Twitter / X profile URL. angellist: type: - string - 'null' description: AngelList URL or handle. crunchbase: type: - string - 'null' description: Crunchbase profile URL. required: - linkedin - twitter - angellist - crunchbase description: The person's own presence on the web; each null when unknown. locations: type: array items: type: object properties: role: $ref: '#/components/schemas/LocationRole' city: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: City; null when not known. state: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: State or region; null when none. country: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: Country. continent: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: Continent. lat: type: - number - 'null' description: 'Entity coordinates when known, otherwise the city centroid.' lon: type: - number - 'null' description: 'Entity coordinates when known, otherwise the city centroid.' required: - role - city - state - country - continent - lat - lon description: Where the person is based; empty when unknown. roles: type: array items: $ref: '#/components/schemas/EntityRole' description: 'Roles the person plays: `founder`, `executive`, `partner`, `investor`.' classifications: type: array items: $ref: '#/components/schemas/Classification' description: Dealroom founder labels; empty when none. taxonomy: type: array items: type: object properties: id: type: number description: Numeric identifier of the tag. name: type: string description: Display name of the tag. type: $ref: '#/components/schemas/TagType' required: - id - name - type description: 'Taxonomy terms, backgrounds included; empty when none.' gender: anyOf: - $ref: '#/components/schemas/Gender' - type: 'null' description: Gender of the person. signal_rating: type: - number - 'null' description: Dealroom founder Signal rating (0-100). investor: type: - object - 'null' properties: rank: type: - number - 'null' description: Dealroom investor ranking (1 = top). Full view only. types: type: array items: type: object properties: id: type: number description: Tag id. name: type: string description: Display name. code: type: string description: Machine-readable code. required: - id - name - code description: Investor types; empty when none. stages: type: array items: type: object properties: id: type: number description: Tag id. name: type: string description: Display name. code: type: string description: Machine-readable code. required: - id - name - code description: Stages invested in; empty when none. deal_size: type: - object - 'null' properties: min: type: - number - 'null' description: 'Smallest ticket, active currency.' max: type: - number - 'null' description: 'Largest ticket, active currency.' required: - min - max description: Ticket size range; null when unknown. investments: type: object properties: count: type: - number - 'null' description: Investments made. total_invested: type: - number - 'null' description: >- Total size of the funding rounds the investor participated in (the full round amounts, not the investor's own ticket), active currency. preferred_round: type: - string - 'null' description: 'Most frequent round stage, e.g. `series_a`.' last_round_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'Date of the most recent investment round, at source precision.' required: - count - total_invested - preferred_round - last_round_date description: Investment activity. portfolio: type: - object - 'null' properties: rounds_count: type: - number - 'null' description: Funding rounds taken part in. total_valuation: type: - number - 'null' description: 'Combined latest valuation of the companies backed, active currency.' companies: type: object properties: total: type: integer description: 'How many exist in total, including those `items` leaves out.' sort: type: string enum: - '-last_round_date' description: 'The order of `items`, in the sub-resource''s `sort` syntax.' items: type: array items: type: object properties: is_lead: type: boolean description: Led at least one of these rounds. rounds_count: type: integer description: Rounds taken part in. last_round_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'Date of the most recent of those rounds, at source precision.' company: $ref: '#/components/schemas/EntityRef' required: - is_lead - rounds_count - last_round_date - company description: >- A capped preview: the first items in `sort` order. When it holds fewer than `total`, page the full list from the sub-resource named above. required: - total - sort - items description: 'Companies backed: the first 10 of `/investors/{id}/portfolio`.' required: - rounds_count - total_valuation - companies description: Companies backed; detail on the `/portfolio` sub-resource. Full view only. exits: type: - object - 'null' properties: count: type: - number - 'null' description: Portfolio companies that exited. total_value: type: - number - 'null' description: 'Combined exit value, active currency.' pct: type: - number - 'null' description: 'Share of the portfolio that exited, %.' required: - count - total_value - pct description: Portfolio exits. Full view only. match: type: - object - 'null' properties: companies_count: type: - number - 'null' description: Portfolio companies matching the request's portfolio filters. invested: type: - number - 'null' description: 'Invested in those companies, active currency.' required: - companies_count - invested description: >- Portfolio companies matching the request's `portfolio_count_*` filters; null when the request carries none. Full view only. required: - rank - types - stages - deal_size - investments - portfolio - exits - match description: The person's investing profile; null unless they invest. founded_companies: type: - object - 'null' properties: count: type: - number - 'null' description: Companies the person founded. total_funding: type: - number - 'null' description: 'Combined funding of the companies founded, active currency.' required: - count - total_funding description: Companies the person founded. Full view only. career: type: object properties: total: type: integer description: 'How many exist in total, including those `items` leaves out.' sort: type: string enum: - '-is_founder,is_past,-start_date' description: 'The order of `items`, in the sub-resource''s `sort` syntax.' items: type: array items: type: object properties: raw_title: type: - string - 'null' description: Job title as recorded. titles: type: array items: type: string description: Normalized job titles. is_founder: type: boolean description: Founded the organization. is_executive: type: boolean description: Holds an executive role there. is_partner: type: boolean description: Holds a partner role there. is_past: type: boolean description: Every role there has ended. start_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'When the first role there started, at source precision.' end_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: When the last role there ended; null while any is current. company: $ref: '#/components/schemas/EntityRef' required: - raw_title - titles - is_founder - is_executive - is_partner - is_past - start_date - end_date - company description: >- A capped preview: the first items in `sort` order. When it holds fewer than `total`, page the full list from the sub-resource named above. required: - total - sort - items description: >- Organizations the person is or was part of: the first 5 of `/people/{id}/career`, founding roles first, then current ones. education: type: object properties: total: type: integer description: 'How many exist in total, including those `items` leaves out.' sort: type: string enum: - '-start_date' description: 'The order of `items`, in the sub-resource''s `sort` syntax.' items: type: array items: type: object properties: degree: type: - object - 'null' properties: id: type: number description: Numeric id. name: type: string description: Display name. required: - id - name description: 'Degree obtained, when known.' majors: type: array items: type: object properties: id: type: number description: Numeric id. name: type: string description: Display name. required: - id - name description: Fields of study. start_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: When the studies started. end_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: When the studies ended. university: $ref: '#/components/schemas/EntityRef' required: - degree - majors - start_date - end_date - university description: >- A capped preview: the first items in `sort` order. When it holds fewer than `total`, page the full list from the sub-resource named above. required: - total - sort - items description: 'Education records: the first 5 of `/people/{id}/education`, most recent first.' available: type: array items: $ref: '#/components/schemas/PersonFullBlock' description: >- Full-only blocks that hold data for this row, listed even when the caller's tier withholds them. added_at: type: - string - 'null' format: date-time description: When the organization was added to Dealroom (RFC 3339). updated_at: type: - string - 'null' format: date-time description: When the record was last modified (RFC 3339). required: - uuid - type - subtype - name - tagline - about - image - dealroom_url - links - locations - roles - classifications - taxonomy - gender - signal_rating - investor - founded_companies - career - education - available - added_at - updated_at title: Person Investor: type: object properties: uuid: type: string description: Stable UUID of the entity; the sole public identifier. example: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c type: type: string enum: - organization description: >- Top-level entity type — exactly one of `organization` or `person`. For organizations, `subtype` carries the specific kind (company / university / gov_ngo / investor). Persons always have a null `subtype`. domain: type: - string - 'null' description: 'Registrable domain, e.g. "stripe.com".' example: stripe.com name: type: string description: Display name. example: Stripe tagline: type: - string - 'null' description: One-line description. about: type: - string - 'null' description: Long-form description. image: type: - string - 'null' description: Absolute logo URL. dealroom_url: type: - string - 'null' description: Canonical profile URL on app.dealroom.co. links: type: object properties: website: type: - string - 'null' description: Website URL. linkedin: type: - string - 'null' description: LinkedIn profile URL. twitter: type: - string - 'null' description: Twitter / X profile URL. instagram: type: - string - 'null' description: Instagram URL or handle. angellist: type: - string - 'null' description: AngelList URL or handle. crunchbase: type: - string - 'null' description: Crunchbase profile URL. required: - website - linkedin - twitter - instagram - angellist - crunchbase description: The entity's own presence on the web; each null when unknown. locations: type: array items: type: object properties: role: $ref: '#/components/schemas/LocationRole' city: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: City; null when not known. state: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: State or region; null when none. country: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: Country. continent: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: Continent. lat: type: - number - 'null' description: 'Entity coordinates when known, otherwise the city centroid.' lon: type: - number - 'null' description: 'Entity coordinates when known, otherwise the city centroid.' required: - role - city - state - country - continent - lat - lon description: 'Every location: hq, founding, then offices; empty when none.' roles: type: array items: $ref: '#/components/schemas/EntityRole' description: 'Roles the organization plays: `investor`, `limited_partner`, `fund_manager`.' taxonomy: type: array items: type: object properties: id: type: number description: Numeric identifier of the tag. name: type: string description: Display name of the tag. type: $ref: '#/components/schemas/TagType' required: - id - name - type description: 'Taxonomy terms (industries, sectors, technologies, …); empty when none.' launch_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'When the organization was founded, at source precision.' closing_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: When the organization closed; null while active. employees_count: type: - number - 'null' description: Number of employees. added_at: type: - string - 'null' format: date-time description: When the organization was added to Dealroom (RFC 3339). updated_at: type: - string - 'null' format: date-time description: When the record was last modified (RFC 3339). subtype: type: string enum: - investor description: >- Organization subtype — one of `company`, `university`, `gov_ngo`, `investor`. Mutually exclusive. Always null for persons. signal_rating: type: - number - 'null' description: Dealroom Signal rating (0-100). rank: type: - number - 'null' description: Dealroom investor ranking (1 = top). Full view only. types: type: array items: type: object properties: id: type: number description: Tag id. name: type: string description: Display name. code: type: string description: Machine-readable code. required: - id - name - code description: Investor types; empty when none. stages: type: array items: type: object properties: id: type: number description: Tag id. name: type: string description: Display name. code: type: string description: Machine-readable code. required: - id - name - code description: Stages invested in; empty when none. deal_size: type: - object - 'null' properties: min: type: - number - 'null' description: 'Smallest ticket, active currency.' max: type: - number - 'null' description: 'Largest ticket, active currency.' required: - min - max description: Ticket size range; null when unknown. investments: type: object properties: count: type: - number - 'null' description: Investments made. total_invested: type: - number - 'null' description: >- Total size of the funding rounds the investor participated in (the full round amounts, not the investor's own ticket), active currency. preferred_round: type: - string - 'null' description: 'Most frequent round stage, e.g. `series_a`.' last_round_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'Date of the most recent investment round, at source precision.' required: - count - total_invested - preferred_round - last_round_date description: Investment activity. portfolio: type: - object - 'null' properties: rounds_count: type: - number - 'null' description: Funding rounds taken part in. total_valuation: type: - number - 'null' description: 'Combined latest valuation of the companies backed, active currency.' companies: type: object properties: total: type: integer description: 'How many exist in total, including those `items` leaves out.' sort: type: string enum: - '-last_round_date' description: 'The order of `items`, in the sub-resource''s `sort` syntax.' items: type: array items: type: object properties: is_lead: type: boolean description: Led at least one of these rounds. rounds_count: type: integer description: Rounds taken part in. last_round_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'Date of the most recent of those rounds, at source precision.' company: $ref: '#/components/schemas/EntityRef' required: - is_lead - rounds_count - last_round_date - company description: >- A capped preview: the first items in `sort` order. When it holds fewer than `total`, page the full list from the sub-resource named above. required: - total - sort - items description: 'Companies backed: the first 10 of `/investors/{id}/portfolio`.' required: - rounds_count - total_valuation - companies description: Companies backed; detail on the `/portfolio` sub-resource. Full view only. exits: type: - object - 'null' properties: count: type: - number - 'null' description: Portfolio companies that exited. total_value: type: - number - 'null' description: 'Combined exit value, active currency.' pct: type: - number - 'null' description: 'Share of the portfolio that exited, %.' required: - count - total_value - pct description: Portfolio exits. Full view only. match: type: - object - 'null' properties: companies_count: type: - number - 'null' description: Portfolio companies matching the request's portfolio filters. invested: type: - number - 'null' description: 'Invested in those companies, active currency.' required: - companies_count - invested description: >- Portfolio companies matching the request's `portfolio_count_*` filters; null when the request carries none. Full view only. investor: type: 'null' description: 'Always null: an investor''s profile is flat at the root.' available: type: array items: $ref: '#/components/schemas/InvestorFullBlock' description: >- Full-only blocks that hold data for this row, listed even when the caller's tier withholds them. required: - uuid - type - domain - name - tagline - about - image - dealroom_url - links - locations - roles - taxonomy - launch_date - closing_date - employees_count - added_at - updated_at - subtype - signal_rating - rank - types - stages - deal_size - investments - portfolio - exits - match - investor - available title: Investor firm InvestorListResponseSummary: type: object properties: view: type: string enum: - summary description: 'The view served: summary rows.' data: type: array items: $ref: '#/components/schemas/InvestorCollectionSummary' page: $ref: '#/components/schemas/CappedPaginationPage' currency: type: string required: - view - data - page - currency title: Investors — summary rows InvestorCollectionSummary: oneOf: - $ref: '#/components/schemas/PersonSummary' - $ref: '#/components/schemas/InvestorSummary' discriminator: propertyName: type mapping: person: '#/components/schemas/PersonSummary' organization: '#/components/schemas/InvestorSummary' description: 'An entity as it appears on another row: its type''s row without the full-only blocks.' type: object InvestorGeoResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/InvestorGeoPoint' page: type: object properties: total: type: - number - 'null' limit: type: number offset: type: number next_cursor: type: - string - 'null' description: Opaque cursor for the next page. Null when no further pages exist. prev_cursor: type: - string - 'null' description: Opaque cursor for the previous page. Null when on the first page. required: - total - limit - offset - next_cursor - prev_cursor required: - data - page InvestorGeoPoint: type: object properties: id: type: string description: Stable UUID of the investor example: b4e2c9a1-7f3d-4e8b-9c2a-1d5f6e8a3b7c name: type: - string - 'null' lat: type: number description: HQ latitude (WGS84) lon: type: number description: HQ longitude (WGS84) logo: type: - string - 'null' description: >- Logo/avatar image URL for the investor (powers the map's logo layer); null when the entity has no image. May be a bare host/path or a full URL. value: type: - number - 'null' description: >- The `size_by` dimension's value for this investor (USD for monetary dimensions); null when there is no value or no `size_by` was requested required: - id - name - lat - lon - logo - value InvestorDetailResponse: type: object properties: data: $ref: '#/components/schemas/InvestorCollectionItem' currency: type: string required: - data - currency EntityInvestmentsResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/EntityInvestmentItem' page: type: object properties: total: type: - number - 'null' limit: type: number offset: type: number next_cursor: type: - string - 'null' description: Opaque cursor for the next page. Null when no further pages exist. prev_cursor: type: - string - 'null' description: Opaque cursor for the previous page. Null when on the first page. required: - total - limit - offset - next_cursor - prev_cursor currency: type: string description: Currency the portfolio-company monetary fields are expressed in (default USD). example: EUR required: - data - page - currency EntityInvestmentItem: type: object properties: is_lead: type: boolean description: Led at least one of these rounds. rounds_count: type: integer description: Rounds taken part in. last_round_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'Date of the most recent of those rounds, at source precision.' company: $ref: '#/components/schemas/OrganizationSummary' required: - is_lead - rounds_count - last_round_date - company EntityFundsResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/EntityFundItem' page: type: object properties: total: type: - number - 'null' limit: type: number offset: type: number next_cursor: type: - string - 'null' description: Opaque cursor for the next page. Null when no further pages exist. prev_cursor: type: - string - 'null' description: Opaque cursor for the previous page. Null when on the first page. required: - total - limit - offset - next_cursor - prev_cursor currency: type: string description: >- Requested response currency (default USD) — the currency `amount` is expressed in. The original native value is in `amount_source`. example: EUR required: - data - page - currency EntityFundItem: type: object properties: id: type: number description: Stable Dealroom fund id (source `bobjects_funds.id`). example: 20386 name: type: - string - 'null' example: Anterra F&A Ventures III fund_type: type: - string - 'null' description: >- Fund category — one of `Venture Capital`, `Private Equity`, `Growth Equity`, `Corporate`, `Life Sciences`, `Renewables`, `Fund of Funds`, `Other`. example: Venture Capital amount: type: - number - 'null' description: >- Fund size in the requested response `currency` (the top-level envelope `currency`, default USD), converted from the native amount. Null when the source amount is unknown or its native currency has no exchange rate. example: 92000000 amount_source: $ref: '#/components/schemas/EntityFundAmountSource' announced_date: type: - string - 'null' format: date description: Day the fund was announced. example: '2024-03-01' is_closed: type: - boolean - 'null' description: Whether the fund is closed to new commitments. example: false source_url: type: - string - 'null' description: External news / press URL announcing the fund. example: 'https://techfundingnews.com/anterra-closes-fund-iii/' required: - id - name - fund_type - amount - amount_source - announced_date - is_closed - source_url EntityFundAmountSource: type: object properties: amount: type: - number - 'null' description: 'Fund size as stored, in the fund''s own native currency.' example: 100000000 currency: type: - string - 'null' description: ISO 4217 code of the fund's native currency. example: CAD required: - amount - currency description: 'The original as-stored fund size and its native currency, before conversion.' FundListResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/Fund' page: $ref: '#/components/schemas/CappedPaginationPage' currency: type: string description: >- Requested response currency (default USD) — the currency `amount` is expressed in. The original native value is in `amount_source`. example: EUR required: - data - page - currency Fund: type: object properties: id: type: number description: Stable Dealroom fund id (source `bobjects_funds.id`). example: 20386 name: type: - string - 'null' description: Fund name as reported. example: Anterra F&A Ventures III fund_type: type: - string - 'null' description: >- Fund category — one of `Venture Capital`, `Private Equity`, `Growth Equity`, `Corporate`, `Life Sciences`, `Renewables`, `Fund of Funds`, `Other`. example: Venture Capital amount: type: - number - 'null' description: >- Fund size in the requested response `currency` (the top-level envelope `currency`, default USD), converted from the native amount. Null when the source amount is unknown or its native currency has no exchange rate. example: 92000000 amount_source: $ref: '#/components/schemas/FundAmountSource' announced_date: type: - string - 'null' format: date description: Day the fund was announced. example: '2024-03-01' is_closed: type: - boolean - 'null' description: Whether the fund is closed to new commitments. example: false source_url: type: - string - 'null' description: External news / press URL announcing the fund. example: 'https://techfundingnews.com/anterra-closes-fund-iii/' manager: $ref: '#/components/schemas/EntityRef' required: - id - name - fund_type - amount - amount_source - announced_date - is_closed - source_url - manager FundAmountSource: type: object properties: amount: type: - number - 'null' description: 'Fund size as stored, in the fund''s own native currency.' example: 100000000 currency: type: - string - 'null' description: ISO 4217 code of the fund's native currency. example: CAD required: - amount - currency description: 'The original as-stored fund size and its native currency, before conversion.' FundDetailResponse: type: object properties: data: $ref: '#/components/schemas/Fund' currency: type: string description: >- Requested response currency (default USD) — the currency `amount` is expressed in. The original native value is in `amount_source`. example: EUR required: - data - currency FounderListResponse: oneOf: - $ref: '#/components/schemas/FounderListResponseFull' - $ref: '#/components/schemas/FounderListResponseSummary' discriminator: propertyName: view mapping: full: '#/components/schemas/FounderListResponseFull' summary: '#/components/schemas/FounderListResponseSummary' description: 'Founders: full rows by default, summary rows with `view=summary`.' type: object FounderListResponseFull: type: object properties: view: type: string enum: - full description: 'The view served: full rows.' data: type: array items: $ref: '#/components/schemas/Founder' page: $ref: '#/components/schemas/CappedPaginationPage' currency: type: string description: Currency the founder monetary fields are expressed in (default USD). example: EUR required: - view - data - page - currency title: Founders — full rows Founder: type: object properties: uuid: type: string description: Stable UUID of the entity; the sole public identifier. example: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c type: type: string enum: - person description: >- Top-level entity type — exactly one of `organization` or `person`. For organizations, `subtype` carries the specific kind (company / university / gov_ngo / investor). Persons always have a null `subtype`. subtype: type: 'null' description: >- Organization subtype — one of `company`, `university`, `gov_ngo`, `investor`. Mutually exclusive. Always null for persons. example: null name: type: string description: Display name. example: Patrick Collison tagline: type: - string - 'null' description: One-line description. about: type: - string - 'null' description: Long-form description. image: type: - string - 'null' description: Absolute profile image URL. dealroom_url: type: - string - 'null' description: Canonical profile URL on app.dealroom.co. links: type: object properties: linkedin: type: - string - 'null' description: LinkedIn profile URL. twitter: type: - string - 'null' description: Twitter / X profile URL. angellist: type: - string - 'null' description: AngelList URL or handle. crunchbase: type: - string - 'null' description: Crunchbase profile URL. required: - linkedin - twitter - angellist - crunchbase description: The person's own presence on the web; each null when unknown. locations: type: array items: type: object properties: role: $ref: '#/components/schemas/LocationRole' city: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: City; null when not known. state: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: State or region; null when none. country: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: Country. continent: type: - object - 'null' properties: id: type: number description: 'Location id, as accepted by the location filters.' name: type: string description: Location name. required: - id - name description: Continent. lat: type: - number - 'null' description: 'Entity coordinates when known, otherwise the city centroid.' lon: type: - number - 'null' description: 'Entity coordinates when known, otherwise the city centroid.' required: - role - city - state - country - continent - lat - lon description: Where the person is based; empty when unknown. roles: type: array items: $ref: '#/components/schemas/EntityRole' description: 'Roles the person plays: `founder`, `executive`, `partner`, `investor`.' classifications: type: array items: $ref: '#/components/schemas/Classification' description: Dealroom founder labels; empty when none. taxonomy: type: array items: type: object properties: id: type: number description: Numeric identifier of the tag. name: type: string description: Display name of the tag. type: $ref: '#/components/schemas/TagType' required: - id - name - type description: 'Taxonomy terms, backgrounds included; empty when none.' gender: anyOf: - $ref: '#/components/schemas/Gender' - type: 'null' description: Gender of the person. signal_rating: type: - number - 'null' description: Dealroom founder Signal rating (0-100). investor: type: - object - 'null' properties: rank: type: - number - 'null' description: Dealroom investor ranking (1 = top). Full view only. types: type: array items: type: object properties: id: type: number description: Tag id. name: type: string description: Display name. code: type: string description: Machine-readable code. required: - id - name - code description: Investor types; empty when none. stages: type: array items: type: object properties: id: type: number description: Tag id. name: type: string description: Display name. code: type: string description: Machine-readable code. required: - id - name - code description: Stages invested in; empty when none. deal_size: type: - object - 'null' properties: min: type: - number - 'null' description: 'Smallest ticket, active currency.' max: type: - number - 'null' description: 'Largest ticket, active currency.' required: - min - max description: Ticket size range; null when unknown. investments: type: object properties: count: type: - number - 'null' description: Investments made. total_invested: type: - number - 'null' description: >- Total size of the funding rounds the investor participated in (the full round amounts, not the investor's own ticket), active currency. preferred_round: type: - string - 'null' description: 'Most frequent round stage, e.g. `series_a`.' last_round_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'Date of the most recent investment round, at source precision.' required: - count - total_invested - preferred_round - last_round_date description: Investment activity. portfolio: type: - object - 'null' properties: rounds_count: type: - number - 'null' description: Funding rounds taken part in. total_valuation: type: - number - 'null' description: 'Combined latest valuation of the companies backed, active currency.' companies: type: object properties: total: type: integer description: 'How many exist in total, including those `items` leaves out.' sort: type: string enum: - '-last_round_date' description: 'The order of `items`, in the sub-resource''s `sort` syntax.' items: type: array items: type: object properties: is_lead: type: boolean description: Led at least one of these rounds. rounds_count: type: integer description: Rounds taken part in. last_round_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'Date of the most recent of those rounds, at source precision.' company: $ref: '#/components/schemas/EntityRef' required: - is_lead - rounds_count - last_round_date - company description: >- A capped preview: the first items in `sort` order. When it holds fewer than `total`, page the full list from the sub-resource named above. required: - total - sort - items description: 'Companies backed: the first 10 of `/investors/{id}/portfolio`.' required: - rounds_count - total_valuation - companies description: Companies backed; detail on the `/portfolio` sub-resource. Full view only. exits: type: - object - 'null' properties: count: type: - number - 'null' description: Portfolio companies that exited. total_value: type: - number - 'null' description: 'Combined exit value, active currency.' pct: type: - number - 'null' description: 'Share of the portfolio that exited, %.' required: - count - total_value - pct description: Portfolio exits. Full view only. match: type: - object - 'null' properties: companies_count: type: - number - 'null' description: Portfolio companies matching the request's portfolio filters. invested: type: - number - 'null' description: 'Invested in those companies, active currency.' required: - companies_count - invested description: >- Portfolio companies matching the request's `portfolio_count_*` filters; null when the request carries none. Full view only. required: - rank - types - stages - deal_size - investments - portfolio - exits - match description: The person's investing profile; null unless they invest. founded_companies: type: - object - 'null' properties: count: type: - number - 'null' description: Companies the person founded. total_funding: type: - number - 'null' description: 'Combined funding of the companies founded, active currency.' required: - count - total_funding description: Companies the person founded. Full view only. career: type: object properties: total: type: integer description: 'How many exist in total, including those `items` leaves out.' sort: type: string enum: - '-is_founder,is_past,-start_date' description: 'The order of `items`, in the sub-resource''s `sort` syntax.' items: type: array items: type: object properties: raw_title: type: - string - 'null' description: Job title as recorded. titles: type: array items: type: string description: Normalized job titles. is_founder: type: boolean description: Founded the organization. is_executive: type: boolean description: Holds an executive role there. is_partner: type: boolean description: Holds a partner role there. is_past: type: boolean description: Every role there has ended. start_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'When the first role there started, at source precision.' end_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: When the last role there ended; null while any is current. company: $ref: '#/components/schemas/EntityRef' required: - raw_title - titles - is_founder - is_executive - is_partner - is_past - start_date - end_date - company description: >- A capped preview: the first items in `sort` order. When it holds fewer than `total`, page the full list from the sub-resource named above. required: - total - sort - items description: >- Organizations the person is or was part of: the first 5 of `/people/{id}/career`, founding roles first, then current ones. education: type: object properties: total: type: integer description: 'How many exist in total, including those `items` leaves out.' sort: type: string enum: - '-start_date' description: 'The order of `items`, in the sub-resource''s `sort` syntax.' items: type: array items: type: object properties: degree: type: - object - 'null' properties: id: type: number description: Numeric id. name: type: string description: Display name. required: - id - name description: 'Degree obtained, when known.' majors: type: array items: type: object properties: id: type: number description: Numeric id. name: type: string description: Display name. required: - id - name description: Fields of study. start_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: When the studies started. end_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: When the studies ended. university: $ref: '#/components/schemas/EntityRef' required: - degree - majors - start_date - end_date - university description: >- A capped preview: the first items in `sort` order. When it holds fewer than `total`, page the full list from the sub-resource named above. required: - total - sort - items description: 'Education records: the first 5 of `/people/{id}/education`, most recent first.' available: type: array items: $ref: '#/components/schemas/PersonFullBlock' description: >- Full-only blocks that hold data for this row, listed even when the caller's tier withholds them. added_at: type: - string - 'null' format: date-time description: When the organization was added to Dealroom (RFC 3339). updated_at: type: - string - 'null' format: date-time description: When the record was last modified (RFC 3339). required: - uuid - type - subtype - name - tagline - about - image - dealroom_url - links - locations - roles - classifications - taxonomy - gender - signal_rating - investor - founded_companies - career - education - available - added_at - updated_at title: Founder FounderListResponseSummary: type: object properties: view: type: string enum: - summary description: 'The view served: summary rows.' data: type: array items: $ref: '#/components/schemas/PersonSummary' page: $ref: '#/components/schemas/CappedPaginationPage' currency: type: string description: Currency the founder monetary fields are expressed in (default USD). example: EUR required: - view - data - page - currency title: Founders — summary rows FounderDetailResponse: type: object properties: data: $ref: '#/components/schemas/Founder' currency: type: string description: Currency the founder monetary fields are expressed in (default USD). example: EUR required: - data - currency PersonCareerResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/PersonCareerItem' page: type: object properties: total: type: - number - 'null' limit: type: number offset: type: number next_cursor: type: - string - 'null' description: Opaque cursor for the next page. Null when no further pages exist. prev_cursor: type: - string - 'null' description: Opaque cursor for the previous page. Null when on the first page. required: - total - limit - offset - next_cursor - prev_cursor currency: type: string description: Currency the participant's monetary fields are expressed in (default USD). example: EUR required: - data - page - currency PersonCareerItem: type: object properties: raw_title: type: - string - 'null' description: Job title as recorded. titles: type: array items: type: string description: Normalized job titles. is_founder: type: boolean description: Founded the organization. is_executive: type: boolean description: Holds an executive role there. is_partner: type: boolean description: Holds a partner role there. is_past: type: boolean description: Every role there has ended. start_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: 'When the first role there started, at source precision.' end_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: When the last role there ended; null while any is current. company: $ref: '#/components/schemas/OrganizationSummary' required: - raw_title - titles - is_founder - is_executive - is_partner - is_past - start_date - end_date - company PersonListResponse: oneOf: - $ref: '#/components/schemas/PersonListResponseFull' - $ref: '#/components/schemas/PersonListResponseSummary' discriminator: propertyName: view mapping: full: '#/components/schemas/PersonListResponseFull' summary: '#/components/schemas/PersonListResponseSummary' description: 'People: full rows by default, summary rows with `view=summary`.' type: object PersonListResponseFull: type: object properties: view: type: string enum: - full description: 'The view served: full rows.' data: type: array items: $ref: '#/components/schemas/Person' page: type: object properties: total: type: - number - 'null' limit: type: number offset: type: number next_cursor: type: - string - 'null' description: Opaque cursor for the next page. Null when no further pages exist. prev_cursor: type: - string - 'null' description: Opaque cursor for the previous page. Null when on the first page. required: - total - limit - offset - next_cursor - prev_cursor currency: type: string description: Currency the person monetary fields are expressed in (default USD). example: EUR required: - view - data - page - currency title: People — full rows PersonListResponseSummary: type: object properties: view: type: string enum: - summary description: 'The view served: summary rows.' data: type: array items: $ref: '#/components/schemas/PersonSummary' page: type: object properties: total: type: - number - 'null' limit: type: number offset: type: number next_cursor: type: - string - 'null' description: Opaque cursor for the next page. Null when no further pages exist. prev_cursor: type: - string - 'null' description: Opaque cursor for the previous page. Null when on the first page. required: - total - limit - offset - next_cursor - prev_cursor currency: type: string description: Currency the person monetary fields are expressed in (default USD). example: EUR required: - view - data - page - currency title: People — summary rows PersonDetailResponse: type: object properties: data: $ref: '#/components/schemas/Person' currency: type: string description: Currency the person monetary fields are expressed in (default USD). example: EUR required: - data - currency PersonEducationResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/PersonEducationItem' page: type: object properties: total: type: - number - 'null' limit: type: number offset: type: number next_cursor: type: - string - 'null' description: Opaque cursor for the next page. Null when no further pages exist. prev_cursor: type: - string - 'null' description: Opaque cursor for the previous page. Null when on the first page. required: - total - limit - offset - next_cursor - prev_cursor currency: type: string description: Currency the participant's monetary fields are expressed in (default USD). example: EUR required: - data - page - currency PersonEducationItem: type: object properties: degree: type: - object - 'null' properties: id: type: number description: Numeric id. name: type: string description: Display name. required: - id - name description: 'Degree obtained, when known.' majors: type: array items: type: object properties: id: type: number description: Numeric id. name: type: string description: Display name. required: - id - name description: Fields of study. start_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: When the studies started. end_date: anyOf: - $ref: '#/components/schemas/PartialDate' - type: 'null' description: When the studies ended. university: $ref: '#/components/schemas/OrganizationSummary' required: - degree - majors - start_date - end_date - university NewsListResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/NewsArticle' page: $ref: '#/components/schemas/CappedPaginationPage' currency: type: string required: - data - page - currency NewsArticle: type: object properties: id: type: number description: Stable Dealroom note ID. example: 9876543 url: type: - string - 'null' description: >- Canonical URL of the note on its publisher's site. Null for in-house editorial notes, which have no external source. example: 'https://techcrunch.com/2024/06/15/example-startup-raises-50m' slug: type: string description: 'URL-safe note slug, unique per note; canonical routing key for /notes/:slug.' example: example-startup-raises-50m-series-b-2024 title: type: - string - 'null' description: Note headline. example: Example Startup raises $50M Series B led by Sequoia summary: type: - string - 'null' description: Short note summary (1-2 sentences). example: Example Startup announced a $50M Series B round… preview: type: - string - 'null' description: Short preview/teaser text distinct from `summary`. example: Example Startup announced… image_url: type: - string - 'null' description: 'Hero image URL for the note, if available.' example: 'https://images.example.com/notes/note-9876543.jpg' image_source: type: - string - 'null' description: 'Attribution/source of the hero image, if available.' example: Unsplash source: type: string description: Publisher / source identifier. Always `dealroom` — every note is in-house. example: dealroom article_type: type: - string - 'null' description: >- Note type. Common values: `vc_round`, `ipo`, `acquisition`, `insight`, `event`, `partnership`. example: vc_round category: type: - string - 'null' description: >- Display category: the `article_type` label, else the first industry of the entity the note is about, else `sector`. Null when none applies. example: Funding rounds news_types: type: array items: type: object properties: id: type: number description: BigQuery-side news-type id. example: 3 name: type: - string - 'null' description: >- News-type label, denormalised from BigQuery. Null when the source struct carried no name. example: Funding rounds required: - id - name description: >- Full list of BigQuery news-type tags for this note. `article_type` is a single whitelisted value derived from this array for backward compatibility; this is the complete, uncrushed list. example: - id: 3 name: Funding rounds - id: 9 name: Fintech is_news: type: boolean description: >- Whether this note is editorially selected as a news article. The `/data/news` lens filters on this flag; `/data/notes` does not. example: true type: type: string description: Note type classification. `public` today; the pitch types are reserved. example: public status: type: string description: 'Note publication status. `published`, or `expired` for a few legacy news notes.' example: published published_at: type: - string - 'null' format: date-time description: When the note was published (RFC 3339). example: '2024-06-15T09:30:00.000Z' amount: type: - number - 'null' description: >- Deal amount in the active currency, for `vc_round`/`acquisition` notes, as a whole-unit integer. example: 50000000 round_type: type: - string - 'null' description: Round type for VC-round notes (matches Transactions). example: SERIES_B deal_date: type: - string - 'null' format: date description: Day the deal closed (may differ from `published_at`). example: '2024-06-14' sector: type: - string - 'null' description: 'Sector classification, when known.' example: Fintech hq_country: type: - string - 'null' description: HQ country of the primary mentioned company. example: United States enriched_summary: type: - string - 'null' description: >- Reserved: always null. `notes` has no enriched_summary column (the legacy column was always null in production too). example: null importance_score: type: - number - 'null' description: Editorial ranking score — higher is more prominent. Null when unscored. example: 87.5 is_pinned: type: boolean description: >- Whether this is the single most prominent (pinned) story. At most one note is pinned at a time. example: false source_urls: type: array items: type: string description: 'Full list of external source links, when known.' example: - 'https://techcrunch.com/2024/06/15/example-startup-raises-50m' references: type: array items: type: string description: Additional reference URLs cited by the note. example: [] video_urls: type: array items: type: string description: 'Embedded/linked video URLs, when available.' example: [] pitch_deck_urls: type: array items: type: string description: 'Linked pitch deck URLs, when available.' example: [] author_entity_id: type: - number - 'null' description: 'Numeric ID of the authoring entity, when known.' example: null author_kind: type: - string - 'null' description: 'Author classification (e.g. `editorial`, `contributor`), when known.' example: null created_at: type: - string - 'null' format: date-time description: ISO 8601 timestamp the note itself was created (source system). example: '2024-06-15T10:30:00.000Z' updated_at: type: - string - 'null' format: date-time description: ISO 8601 timestamp the note was last updated (source system). example: '2024-06-15T10:30:00.000Z' entities: type: array items: type: object properties: mention_role: type: - string - 'null' description: >- How the entity features in the note — e.g. `subject` for the company a story is about, `investor` for a participant in its round. example: subject is_primary: type: - boolean - 'null' description: True for the single entity the note is principally about. example: true entity: $ref: '#/components/schemas/EntityRef' required: - mention_role - is_primary - entity description: >- Dealroom entities (companies, investors) referenced in the note, the primary one first, each as its reference. required: - id - url - slug - title - summary - preview - image_url - image_source - source - article_type - category - news_types - is_news - type - status - published_at - amount - round_type - deal_date - sector - hq_country - enriched_summary - importance_score - is_pinned - source_urls - references - video_urls - pitch_deck_urls - author_entity_id - author_kind - created_at - updated_at - entities NewsDetailResponse: type: object properties: data: $ref: '#/components/schemas/NewsArticle' currency: type: string required: - data - currency NotesListResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/Note' page: $ref: '#/components/schemas/CappedPaginationPage' currency: type: string required: - data - page - currency Note: type: object properties: id: type: number description: Stable Dealroom note ID. example: 9876543 url: type: - string - 'null' description: >- Canonical URL of the note on its publisher's site. Null for in-house editorial notes, which have no external source. example: 'https://techcrunch.com/2024/06/15/example-startup-raises-50m' slug: type: string description: 'URL-safe note slug, unique per note; canonical routing key for /notes/:slug.' example: example-startup-raises-50m-series-b-2024 title: type: - string - 'null' description: Note headline. example: Example Startup raises $50M Series B led by Sequoia summary: type: - string - 'null' description: Short note summary (1-2 sentences). example: Example Startup announced a $50M Series B round… preview: type: - string - 'null' description: Short preview/teaser text distinct from `summary`. example: Example Startup announced… image_url: type: - string - 'null' description: 'Hero image URL for the note, if available.' example: 'https://images.example.com/notes/note-9876543.jpg' image_source: type: - string - 'null' description: 'Attribution/source of the hero image, if available.' example: Unsplash source: type: string description: Publisher / source identifier. Always `dealroom` — every note is in-house. example: dealroom article_type: type: - string - 'null' description: >- Note type. Common values: `vc_round`, `ipo`, `acquisition`, `insight`, `event`, `partnership`. example: vc_round category: type: - string - 'null' description: >- Display category: the `article_type` label, else the first industry of the entity the note is about, else `sector`. Null when none applies. example: Funding rounds news_types: type: array items: type: object properties: id: type: number description: BigQuery-side news-type id. example: 3 name: type: - string - 'null' description: >- News-type label, denormalised from BigQuery. Null when the source struct carried no name. example: Funding rounds required: - id - name description: >- Full list of BigQuery news-type tags for this note. `article_type` is a single whitelisted value derived from this array for backward compatibility; this is the complete, uncrushed list. example: - id: 3 name: Funding rounds - id: 9 name: Fintech is_news: type: boolean description: >- Whether this note is editorially selected as a news article. The `/data/news` lens filters on this flag; `/data/notes` does not. example: true type: type: string description: Note type classification. `public` today; the pitch types are reserved. example: public status: type: string description: 'Note publication status. `published`, or `expired` for a few legacy news notes.' example: published published_at: type: - string - 'null' format: date-time description: When the note was published (RFC 3339). example: '2024-06-15T09:30:00.000Z' amount: type: - number - 'null' description: >- Deal amount in the active currency, for `vc_round`/`acquisition` notes, as a whole-unit integer. example: 50000000 round_type: type: - string - 'null' description: Round type for VC-round notes (matches Transactions). example: SERIES_B deal_date: type: - string - 'null' format: date description: Day the deal closed (may differ from `published_at`). example: '2024-06-14' sector: type: - string - 'null' description: 'Sector classification, when known.' example: Fintech hq_country: type: - string - 'null' description: HQ country of the primary mentioned company. example: United States enriched_summary: type: - string - 'null' description: >- Reserved: always null. `notes` has no enriched_summary column (the legacy column was always null in production too). example: null importance_score: type: - number - 'null' description: Editorial ranking score — higher is more prominent. Null when unscored. example: 87.5 is_pinned: type: boolean description: >- Whether this is the single most prominent (pinned) story. At most one note is pinned at a time. example: false source_urls: type: array items: type: string description: 'Full list of external source links, when known.' example: - 'https://techcrunch.com/2024/06/15/example-startup-raises-50m' references: type: array items: type: string description: Additional reference URLs cited by the note. example: [] video_urls: type: array items: type: string description: 'Embedded/linked video URLs, when available.' example: [] pitch_deck_urls: type: array items: type: string description: 'Linked pitch deck URLs, when available.' example: [] author_entity_id: type: - number - 'null' description: 'Numeric ID of the authoring entity, when known.' example: null author_kind: type: - string - 'null' description: 'Author classification (e.g. `editorial`, `contributor`), when known.' example: null created_at: type: - string - 'null' format: date-time description: ISO 8601 timestamp the note itself was created (source system). example: '2024-06-15T10:30:00.000Z' updated_at: type: - string - 'null' format: date-time description: ISO 8601 timestamp the note was last updated (source system). example: '2024-06-15T10:30:00.000Z' entities: type: array items: type: object properties: mention_role: type: - string - 'null' description: >- How the entity features in the note — e.g. `subject` for the company a story is about, `investor` for a participant in its round. example: subject is_primary: type: - boolean - 'null' description: True for the single entity the note is principally about. example: true entity: $ref: '#/components/schemas/EntityRef' required: - mention_role - is_primary - entity description: >- Dealroom entities (companies, investors) referenced in the note, the primary one first, each as its reference. required: - id - url - slug - title - summary - preview - image_url - image_source - source - article_type - category - news_types - is_news - type - status - published_at - amount - round_type - deal_date - sector - hq_country - enriched_summary - importance_score - is_pinned - source_urls - references - video_urls - pitch_deck_urls - author_entity_id - author_kind - created_at - updated_at - entities NoteDetailResponse: type: object properties: data: $ref: '#/components/schemas/Note' currency: type: string required: - data - currency JobsListResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/Job' page: $ref: '#/components/schemas/CappedPaginationPage' currency: type: string required: - data - page - currency Job: type: object properties: id: type: number description: Stable Dealroom job opening ID. example: 8765432 entity: $ref: '#/components/schemas/EntityRef' title: type: - string - 'null' description: Job title as provided by the source. example: Senior Backend Engineer url: type: - string - 'null' description: Canonical URL of the job posting. example: 'https://jobs.example.com/senior-backend-engineer' source: type: - string - 'null' description: 'Source / provider of the posting (e.g. `linkedin`, `predictleads`).' example: linkedin job_type: type: - string - 'null' description: Job type / category as classified by the source. example: engineering formatted_location: type: - string - 'null' description: Human-readable location string as provided by the source. example: 'Berlin, Germany' post_language: type: - string - 'null' description: Detected language of the posting (ISO 639-1). example: en latitude: type: - number - 'null' description: Latitude of the opening location in decimal degrees. example: 52.52 longitude: type: - number - 'null' description: Longitude of the opening location in decimal degrees. example: 13.405 posted_at: type: - string - 'null' format: date-time description: ISO 8601 timestamp the opening was posted. example: '2024-06-15T00:00:00.000Z' city_unique_id: type: - number - 'null' description: Dealroom location ID (`locations.id`) for the city. Use as `city_id` filter value. example: 1297711 state_unique_id: type: - number - 'null' description: Dealroom location ID (`locations.id`) for the state/province. example: 8205 country_unique_id: type: - number - 'null' description: Dealroom location ID (`locations.id`) for the country. example: 133 continent_unique_id: type: - number - 'null' description: Dealroom location ID (`locations.id`) for the continent. example: 64 city_region_unique_ids: type: - array - 'null' items: type: number description: >- Dealroom location IDs (`locations.id`) for city-regions this opening belongs to. Use as `region_id` filter values. example: - 8205 required: - id - entity - title - url - source - job_type - formatted_location - post_language - latitude - longitude - posted_at - city_unique_id - state_unique_id - country_unique_id - continent_unique_id - city_region_unique_ids JobDetailResponse: type: object properties: data: $ref: '#/components/schemas/Job' currency: type: string required: - data - currency SearchResponse: type: object properties: data: type: array items: type: object properties: uuid: type: string type: type: string enum: - investor - person - company - university - gov_ngo entity_type: type: string enum: - organization - person name: type: string tagline: type: - string - 'null' image: type: - string - 'null' is_unicorn: type: - boolean - 'null' investor_rank: type: - number - 'null' website_domain: type: - string - 'null' hq_city: type: - string - 'null' hq_country: type: - string - 'null' required: - uuid - type - entity_type - name - tagline - image - is_unicorn - investor_rank - website_domain - hq_city - hq_country required: - data AggregateResponse: type: object properties: data: type: array items: type: object additionalProperties: anyOf: - type: string - type: number - type: 'null' query_info: type: object properties: source: type: string group_by: type: string metric: type: string groups_count: type: number required: - source - group_by - metric - groups_count currency: type: string required: - data - query_info - currency MultiMetricGroupedResponse: type: object properties: data: type: array items: type: object additionalProperties: anyOf: - type: string - type: number - type: 'null' query_info: type: object properties: source: type: string group_by: type: string metrics: type: array items: type: object properties: label: type: string type: type: string required: - label - type groups_count: type: number required: - source - group_by - metrics - groups_count currency: type: string required: - data - query_info - currency title: Grouped by dimension MultiMetricFlatResponse: type: object properties: data: type: array items: type: object additionalProperties: type: - number - 'null' query_info: type: object properties: source: type: string metrics: type: array items: type: object properties: label: type: string type: type: string required: - label - type required: - source - metrics currency: type: string required: - data - query_info - currency title: Totals (no grouping) TimeseriesResponse: type: object properties: data: type: array items: type: object properties: year: type: integer value: type: - number - 'null' required: - year - value query_info: type: object properties: metric: type: string enum: - employees - revenue - valuation - ebitda - vc_funding - unicorns - vc_backed aggregation: type: string enum: - sum - avg - median - count years_count: type: integer timing_ms: type: number required: - metric - aggregation - years_count - timing_ms currency: type: string required: - data - query_info FiltersResponse: type: object properties: data: type: array items: type: object properties: key: type: string filter_key: type: string pinned_sub_type: type: string label: type: string description: type: string description_long: type: string examples: type: array items: type: object properties: value: anyOf: - type: string - type: number - type: boolean label: type: string required: - value type: type: string enum: - id_lookup - enum - boolean - numeric - date - text category: type: string operators: type: array items: type: string format: type: string enum: - currency - year - count supports_type_filter: type: boolean sub_types: type: array items: type: object properties: key: type: string label: type: string required: - key - label data_status: type: object properties: kind: type: string enum: - stub - data-incomplete - unloaded - partial reason: type: string gap_id: type: string required: - kind - reason - gap_id description: >- Present only when the filter is not fully functional today. See `docs/api-gaps.md` for the full registry. deprecated: type: string description: >- Present when the filter is deprecated: the notice explains the preferred replacement (the filter still works for now). required: - key - filter_key - label - type - category - operators required: - data FilterSearchResponse: type: object properties: data: type: array items: oneOf: - type: object properties: kind: type: string enum: - value filter_key: type: string filter_picker_key: type: string filter_label: type: string pinned_sub_type: type: string label: type: string value: type: string entities_count: type: number source_type: type: string required: - kind - filter_key - filter_picker_key - filter_label - label - value title: Filter value - type: object properties: kind: type: string enum: - filter filter_key: type: string filter_picker_key: type: string filter_label: type: string pinned_sub_type: type: string description: type: string category: type: string required: - kind - filter_key - filter_picker_key - filter_label - category title: Filter - type: object properties: kind: type: string enum: - year filter_key: type: string filter_picker_key: type: string filter_label: type: string pinned_sub_type: type: string label: type: string value: type: string operator: type: string enum: - gte - lte - eq required: - kind - filter_key - filter_picker_key - filter_label - label - value - operator title: Year required: - data FilterValuesResponse: type: object properties: data: type: array items: type: object properties: id: anyOf: - type: number - type: string code: type: - string - 'null' name: type: string entities_count: type: - number - 'null' description: >- Number of matching entities in the requested scope. `null` unless `include_counts=true`. type: type: string parent_name: type: - string - 'null' state_name: type: - string - 'null' description: >- State or region of a city location, when it has one. `parent_name` stays the country. lat: type: - number - 'null' lon: type: - number - 'null' description: type: - string - 'null' image: type: - string - 'null' hq_city: type: - string - 'null' hq_country: type: - string - 'null' website_domain: type: - string - 'null' required: - id - code - name - entities_count page: type: object properties: total: type: number description: >- Row count in this response — NOT the total match count. Use `has_more` to detect a next page. limit: type: number offset: type: number has_more: type: boolean description: Whether more values exist beyond this page (offset + limit). required: - total - limit - offset - has_more required: - data - page parameters: ApiVersion: name: API-Version in: header required: false schema: type: string format: date example: '2026-10-09' description: >- Pin a Stripe-style date-based API version (`YYYY-MM-DD`). Omit to use the latest version (`2026-10-09`). A pinned version is supported for 30 days after it is superseded, after which it returns `400`. headers: Deprecation: description: >- Present when the request pinned a superseded version: the date that version was deprecated (`YYYY-MM-DD`). schema: type: string format: date Sunset: description: >- Present when the request pinned a superseded version: the date the version stops working and requests begin returning `400` (`YYYY-MM-DD`). schema: type: string format: date X-Credits-Used: description: >- Credits this request consumed, under the current credit schedule. Present on every response to an API-key request under `/data`, `/analytics` and `/reference`; `0` on an error response or a free endpoint. Absent when the request was not authenticated with an API key (so never on a `401`), or on unmetered endpoints. During open beta credits are drawn from the team's balance but not billed. schema: type: integer minimum: 0 example: 25 paths: /health: get: operationId: health security: [] tags: - Health summary: Check API health description: >- Public liveness probe. Returns `200` when the API can reach the database, `503` otherwise. No authentication required — safe to use from uptime monitors and load-balancer health checks. responses: '200': description: Service is healthy content: application/json: schema: $ref: '#/components/schemas/HealthResponse' headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '503': description: Service is unhealthy content: application/json: schema: $ref: '#/components/schemas/HealthResponse' headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' parameters: - $ref: '#/components/parameters/ApiVersion' /: get: operationId: getApiRoot security: [] tags: - Discovery summary: API Root Discovery description: >- Programmatic entry point for the Dealroom API. Returns available functional namespaces and links to documentation. Follow a namespace `url` to discover the resources it contains. responses: '200': description: API discovery metadata content: application/json: schema: $ref: '#/components/schemas/DiscoveryResponse' headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' parameters: - $ref: '#/components/parameters/ApiVersion' /data: get: operationId: getDataNamespace security: [] tags: - Discovery summary: Data Namespace Discovery description: >- Lists the resources available under the `data` namespace. Raw domain data: companies, investors, founders, people, funding rounds, valuations, news, jobs, and cross-resource search. responses: '200': description: data namespace metadata content: application/json: schema: $ref: '#/components/schemas/NamespaceDiscoveryResponse' headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' parameters: - $ref: '#/components/parameters/ApiVersion' /analytics: get: operationId: getAnalyticsNamespace security: [] tags: - Discovery summary: Analytics Namespace Discovery description: >- Lists the resources available under the `analytics` namespace. Computed metrics: composable single- and multi-metric aggregates and yearly entity timeseries. responses: '200': description: analytics namespace metadata content: application/json: schema: $ref: '#/components/schemas/NamespaceDiscoveryResponse' headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' parameters: - $ref: '#/components/parameters/ApiVersion' /reference: get: operationId: getReferenceNamespace security: [] tags: - Discovery summary: Reference Namespace Discovery description: >- Lists the resources available under the `reference` namespace. Taxonomy & discovery: filters and curated landscapes. responses: '200': description: reference namespace metadata content: application/json: schema: $ref: '#/components/schemas/NamespaceDiscoveryResponse' headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' parameters: - $ref: '#/components/parameters/ApiVersion' /data/entities: get: operationId: listEntities security: - oauth2: - 'read:entities' - bearerAuth: - 'read:entities' tags: - Entities summary: List entities description: >- Returns a paginated list of entities — the unified index across companies, investors, people, and universities. Each row is one of the per-class variants of the `Entity` union, selected by its own `type` and `organization_subtype`, and carries exactly the facets that class owns. Filter by 90+ keys (funding, location, sector, status, etc.), sort by any indexed field, and page through results. Monetary fields are converted to the requested `?currency=` (default USD). parameters: - schema: type: string description: > Filter expression using nested syntax. Examples: - Single: total_funding[gte]:1000000 - Explicit ref: entity.total_funding[gte]:1000000 - AND: and(total_funding[gte]:1000000,classification[in_any]:unicorn) - OR: or(hq_location[eq]:628061,hq_location[eq]:1297711) - Nested: and(or(hq_location[eq]:628061,hq_location[eq]:1297711),total_funding[gte]:1000000) - Relationship path: investor.total_invested_usd[gte]:100000000 - Two-hop relationship: founder__employer.taxonomy_id[eq]:123 Operators: eq, neq, gt, gte, lt, lte, in_any, nin_any in_all / nin_all are available on repeated related-record filters and on the classification / roles flag sets. Default ref: 'entity' (can be omitted for entity filters) Relationship filters: Use dot syntax (investor.field) for single-hop and double-underscore+dot (outerRel__innerRel.field) for two-hop relationships. example: 'and(total_funding[gte]:1000000,hq_location[eq]:233)' required: false description: > Filter expression using nested syntax. Examples: - Single: total_funding[gte]:1000000 - Explicit ref: entity.total_funding[gte]:1000000 - AND: and(total_funding[gte]:1000000,classification[in_any]:unicorn) - OR: or(hq_location[eq]:628061,hq_location[eq]:1297711) - Nested: and(or(hq_location[eq]:628061,hq_location[eq]:1297711),total_funding[gte]:1000000) - Relationship path: investor.total_invested_usd[gte]:100000000 - Two-hop relationship: founder__employer.taxonomy_id[eq]:123 Operators: eq, neq, gt, gte, lt, lte, in_any, nin_any in_all / nin_all are available on repeated related-record filters and on the classification / roles flag sets. Default ref: 'entity' (can be omitted for entity filters) Relationship filters: Use dot syntax (investor.field) for single-hop and double-underscore+dot (outerRel__innerRel.field) for two-hop relationships. name: filter in: query - schema: type: integer format: int32 minimum: 1 maximum: 500 default: 25 description: 'Number of results to return (1-500, default 25)' example: 25 required: false description: 'Number of results to return (1-500, default 25)' name: limit in: query - schema: type: string description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. example: eyJ2IjoxLCJkIjoibmV4dCJ9 required: false description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. name: cursor in: query - schema: type: string pattern: '^(?:-?\w+)?(?:,(?:-?\w+)?)*$' description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. example: '-launch_date' required: false description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. name: sort in: query - schema: type: boolean description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. example: true required: false description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. name: include_total in: query - schema: type: string description: ISO 4217 currency code for monetary field conversion. Defaults to USD. example: EUR required: false description: ISO 4217 currency code for monetary field conversion. Defaults to USD. name: currency in: query - schema: type: string enum: - full - summary default: full description: >- Which row shape to return, echoed as `view` in the response. `full` is the complete row, priced as a full record. `summary` drops the full-only blocks (founders, revenue, traffic, patents, alumni, founded_companies, career, education, portfolio, exits, match, rank) and is priced as a summary record. example: summary required: false description: >- Which row shape to return, echoed as `view` in the response. `full` is the complete row, priced as a full record. `summary` drops the full-only blocks (founders, revenue, traffic, patents, alumni, founded_companies, career, education, portfolio, exits, match, rank) and is priced as a summary record. name: view in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: List of entities content: application/json: schema: $ref: '#/components/schemas/EntityListResponse' examples: person_full: summary: Person — full row value: view: full data: - uuid: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c type: person subtype: null name: Patrick Collison tagline: about: image: dealroom_url: links: linkedin: twitter: angellist: crunchbase: locations: - role: hq city: id: 123 name: state: id: 123 name: country: id: 123 name: continent: id: 123 name: lat: 123 lon: 123 roles: - founder classifications: - startup taxonomy: - id: 123 name: type: sector gender: male signal_rating: 123 investor: rank: 123 types: - id: 123 name: code: stages: - id: 123 name: code: deal_size: min: 123 max: 123 investments: count: 123 total_invested: 123 preferred_round: last_round_date: 2024-03 portfolio: rounds_count: 123 total_valuation: 123 companies: total: 123 sort: '-last_round_date' items: - is_lead: true rounds_count: 123 last_round_date: 2024-03 company: uuid: type: organization subtype: company name: image: dealroom_url: exits: count: 123 total_value: 123 pct: 123 match: companies_count: 123 invested: 123 founded_companies: count: 123 total_funding: 123 career: total: 123 sort: '-is_founder,is_past,-start_date' items: - raw_title: titles: - is_founder: true is_executive: true is_partner: true is_past: true start_date: 2024-03 end_date: 2024-03 company: uuid: type: organization subtype: company name: image: dealroom_url: education: total: 123 sort: '-start_date' items: - degree: id: 123 name: majors: - id: 123 name: start_date: 2024-03 end_date: 2024-03 university: uuid: type: organization subtype: university name: image: dealroom_url: available: - founded_companies added_at: updated_at: page: total: 123 limit: 123 offset: 123 next_cursor: prev_cursor: capped: true tier: anonymous ecosystem: currency: company_full: summary: Company — full row value: view: full data: - uuid: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c type: organization domain: stripe.com name: Stripe tagline: about: image: dealroom_url: links: website: linkedin: twitter: instagram: angellist: crunchbase: locations: - role: hq city: id: 123 name: state: id: 123 name: country: id: 123 name: continent: id: 123 name: lat: 123 lon: 123 roles: - founder taxonomy: - id: 123 name: type: sector launch_date: 2024-03 closing_date: 2024-03 employees_count: 123 added_at: updated_at: subtype: company classifications: - startup employee_count_1y_growth: 123 status: operational signal_rating: 123 unicorn_type: became_unicorn_date: 2024-03 became_thoroughbred_date: 2024-03 exit_date: 2024-03 investor: rank: 123 types: - id: 123 name: code: stages: - id: 123 name: code: deal_size: min: 123 max: 123 investments: count: 123 total_invested: 123 preferred_round: last_round_date: 2024-03 portfolio: rounds_count: 123 total_valuation: 123 companies: total: 123 sort: '-last_round_date' items: - is_lead: true rounds_count: 123 last_round_date: 2024-03 company: uuid: type: organization subtype: company name: image: dealroom_url: exits: count: 123 total_value: 123 pct: 123 match: companies_count: 123 invested: 123 funding: total: 123 total_vc: 123 rounds_count: 123 valuation: value: 123 year: 123 month: 123 jobs: is_hiring: true open_count: 123 revenue: value: 123 year: 123 traffic: monthly_visits: 123 growth_3m: 123 patents: count: 123 founders: total: 123 sort: '-is_strong_founder,-signal_rating' items: - raw_title: titles: - is_founder: true is_executive: true is_partner: true is_past: true start_date: 2024-03 end_date: 2024-03 person: uuid: type: person subtype: null name: image: dealroom_url: classifications: - serial_founder available: - founders page: total: 123 limit: 123 offset: 123 next_cursor: prev_cursor: capped: true tier: anonymous ecosystem: currency: university_full: summary: University — full row value: view: full data: - uuid: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c type: organization domain: stripe.com name: Stripe tagline: about: image: dealroom_url: links: website: linkedin: twitter: instagram: angellist: crunchbase: locations: - role: hq city: id: 123 name: state: id: 123 name: country: id: 123 name: continent: id: 123 name: lat: 123 lon: 123 roles: - founder taxonomy: - id: 123 name: type: sector launch_date: 2024-03 closing_date: 2024-03 employees_count: 123 added_at: updated_at: subtype: university spinouts_count: 123 investor: rank: 123 types: - id: 123 name: code: stages: - id: 123 name: code: deal_size: min: 123 max: 123 investments: count: 123 total_invested: 123 preferred_round: last_round_date: 2024-03 portfolio: rounds_count: 123 total_valuation: 123 companies: total: 123 sort: '-last_round_date' items: - is_lead: true rounds_count: 123 last_round_date: 2024-03 company: uuid: type: organization subtype: company name: image: dealroom_url: exits: count: 123 total_value: 123 pct: 123 match: companies_count: 123 invested: 123 patents: count: 123 alumni: count: 123 founders_count: 123 founded_companies_count: 123 unicorn_companies_count: 123 available: - alumni page: total: 123 limit: 123 offset: 123 next_cursor: prev_cursor: capped: true tier: anonymous ecosystem: currency: government_ngo_full: summary: Government & NGO — full row value: view: full data: - uuid: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c type: organization domain: stripe.com name: Stripe tagline: about: image: dealroom_url: links: website: linkedin: twitter: instagram: angellist: crunchbase: locations: - role: hq city: id: 123 name: state: id: 123 name: country: id: 123 name: continent: id: 123 name: lat: 123 lon: 123 roles: - founder taxonomy: - id: 123 name: type: sector launch_date: 2024-03 closing_date: 2024-03 employees_count: 123 added_at: updated_at: subtype: gov_ngo classifications: - startup signal_rating: 123 investor: rank: 123 types: - id: 123 name: code: stages: - id: 123 name: code: deal_size: min: 123 max: 123 investments: count: 123 total_invested: 123 preferred_round: last_round_date: 2024-03 portfolio: rounds_count: 123 total_valuation: 123 companies: total: 123 sort: '-last_round_date' items: - is_lead: true rounds_count: 123 last_round_date: 2024-03 company: uuid: type: organization subtype: company name: image: dealroom_url: exits: count: 123 total_value: 123 pct: 123 match: companies_count: 123 invested: 123 funding: total: 123 total_vc: 123 rounds_count: 123 jobs: is_hiring: true open_count: 123 traffic: monthly_visits: 123 growth_3m: 123 patents: count: 123 founders: total: 123 sort: '-is_strong_founder,-signal_rating' items: - raw_title: titles: - is_founder: true is_executive: true is_partner: true is_past: true start_date: 2024-03 end_date: 2024-03 person: uuid: type: person subtype: null name: image: dealroom_url: classifications: - serial_founder available: - founders page: total: 123 limit: 123 offset: 123 next_cursor: prev_cursor: capped: true tier: anonymous ecosystem: currency: investor_firm_full: summary: Investor firm — full row value: view: full data: - uuid: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c type: organization domain: stripe.com name: Stripe tagline: about: image: dealroom_url: links: website: linkedin: twitter: instagram: angellist: crunchbase: locations: - role: hq city: id: 123 name: state: id: 123 name: country: id: 123 name: continent: id: 123 name: lat: 123 lon: 123 roles: - founder taxonomy: - id: 123 name: type: sector launch_date: 2024-03 closing_date: 2024-03 employees_count: 123 added_at: updated_at: subtype: investor signal_rating: 123 rank: 123 types: - id: 123 name: code: stages: - id: 123 name: code: deal_size: min: 123 max: 123 investments: count: 123 total_invested: 123 preferred_round: last_round_date: 2024-03 portfolio: rounds_count: 123 total_valuation: 123 companies: total: 123 sort: '-last_round_date' items: - is_lead: true rounds_count: 123 last_round_date: 2024-03 company: uuid: type: organization subtype: company name: image: dealroom_url: exits: count: 123 total_value: 123 pct: 123 match: companies_count: 123 invested: 123 investor: null available: - portfolio page: total: 123 limit: 123 offset: 123 next_cursor: prev_cursor: capped: true tier: anonymous ecosystem: currency: person_summary: summary: Person — summary row value: view: summary data: - uuid: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c type: person subtype: null name: Patrick Collison tagline: about: image: dealroom_url: links: linkedin: twitter: angellist: crunchbase: locations: - role: hq city: id: 123 name: state: id: 123 name: country: id: 123 name: continent: id: 123 name: lat: 123 lon: 123 roles: - founder classifications: - startup taxonomy: - id: 123 name: type: sector gender: male signal_rating: 123 investor: types: - id: 123 name: code: stages: - id: 123 name: code: deal_size: min: 123 max: 123 investments: count: 123 total_invested: 123 preferred_round: last_round_date: 2024-03 added_at: updated_at: page: total: 123 limit: 123 offset: 123 next_cursor: prev_cursor: capped: true tier: anonymous ecosystem: currency: company_summary: summary: Company — summary row value: view: summary data: - uuid: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c type: organization domain: stripe.com name: Stripe tagline: about: image: dealroom_url: links: website: linkedin: twitter: instagram: angellist: crunchbase: locations: - role: hq city: id: 123 name: state: id: 123 name: country: id: 123 name: continent: id: 123 name: lat: 123 lon: 123 roles: - founder taxonomy: - id: 123 name: type: sector launch_date: 2024-03 closing_date: 2024-03 employees_count: 123 added_at: updated_at: subtype: company classifications: - startup employee_count_1y_growth: 123 status: operational signal_rating: 123 unicorn_type: became_unicorn_date: 2024-03 became_thoroughbred_date: 2024-03 exit_date: 2024-03 investor: types: - id: 123 name: code: stages: - id: 123 name: code: deal_size: min: 123 max: 123 investments: count: 123 total_invested: 123 preferred_round: last_round_date: 2024-03 funding: total: 123 total_vc: 123 rounds_count: 123 valuation: value: 123 year: 123 month: 123 jobs: is_hiring: true open_count: 123 page: total: 123 limit: 123 offset: 123 next_cursor: prev_cursor: capped: true tier: anonymous ecosystem: currency: university_summary: summary: University — summary row value: view: summary data: - uuid: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c type: organization domain: stripe.com name: Stripe tagline: about: image: dealroom_url: links: website: linkedin: twitter: instagram: angellist: crunchbase: locations: - role: hq city: id: 123 name: state: id: 123 name: country: id: 123 name: continent: id: 123 name: lat: 123 lon: 123 roles: - founder taxonomy: - id: 123 name: type: sector launch_date: 2024-03 closing_date: 2024-03 employees_count: 123 added_at: updated_at: subtype: university spinouts_count: 123 investor: types: - id: 123 name: code: stages: - id: 123 name: code: deal_size: min: 123 max: 123 investments: count: 123 total_invested: 123 preferred_round: last_round_date: 2024-03 page: total: 123 limit: 123 offset: 123 next_cursor: prev_cursor: capped: true tier: anonymous ecosystem: currency: government_ngo_summary: summary: Government & NGO — summary row value: view: summary data: - uuid: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c type: organization domain: stripe.com name: Stripe tagline: about: image: dealroom_url: links: website: linkedin: twitter: instagram: angellist: crunchbase: locations: - role: hq city: id: 123 name: state: id: 123 name: country: id: 123 name: continent: id: 123 name: lat: 123 lon: 123 roles: - founder taxonomy: - id: 123 name: type: sector launch_date: 2024-03 closing_date: 2024-03 employees_count: 123 added_at: updated_at: subtype: gov_ngo classifications: - startup signal_rating: 123 investor: types: - id: 123 name: code: stages: - id: 123 name: code: deal_size: min: 123 max: 123 investments: count: 123 total_invested: 123 preferred_round: last_round_date: 2024-03 funding: total: 123 total_vc: 123 rounds_count: 123 jobs: is_hiring: true open_count: 123 page: total: 123 limit: 123 offset: 123 next_cursor: prev_cursor: capped: true tier: anonymous ecosystem: currency: investor_firm_summary: summary: Investor firm — summary row value: view: summary data: - uuid: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c type: organization domain: stripe.com name: Stripe tagline: about: image: dealroom_url: links: website: linkedin: twitter: instagram: angellist: crunchbase: locations: - role: hq city: id: 123 name: state: id: 123 name: country: id: 123 name: continent: id: 123 name: lat: 123 lon: 123 roles: - founder taxonomy: - id: 123 name: type: sector launch_date: 2024-03 closing_date: 2024-03 employees_count: 123 added_at: updated_at: subtype: investor signal_rating: 123 types: - id: 123 name: code: stages: - id: 123 name: code: deal_size: min: 123 max: 123 investments: count: 123 total_invested: 123 preferred_round: last_round_date: 2024-03 investor: null page: total: 123 limit: 123 offset: 123 next_cursor: prev_cursor: capped: true tier: anonymous ecosystem: currency: headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '400': description: Invalid request parameters content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: VALIDATION_ERROR message: The request was malformed or failed validation. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' /data/entities/geo: get: operationId: listEntityGeo security: - oauth2: - 'read:entities' - bearerAuth: - 'read:entities' tags: - Entities summary: List entity geo points description: >- Lightweight endpoint designed to power map/geo visualizations, returning only id, name, lat, lon, country, and city. Supports the same filters as the entity list but with higher limits (up to 5000) and minimal payload. parameters: - schema: type: string description: | Filter expression for geo points (same syntax as entity list). Examples: - Single: organization_subtype[eq]:company - AND: and(organization_subtype[eq]:company,hq_location[eq]:233) Operators: eq, neq, gt, gte, lt, lte, in_any, nin_any example: 'and(organization_subtype[eq]:company,hq_location[eq]:233)' required: false description: | Filter expression for geo points (same syntax as entity list). Examples: - Single: organization_subtype[eq]:company - AND: and(organization_subtype[eq]:company,hq_location[eq]:233) Operators: eq, neq, gt, gte, lt, lte, in_any, nin_any name: filter in: query - schema: type: integer format: int32 minimum: 1 maximum: 5000 default: 25 description: 'Number of results to return (1-5000, default 25)' example: 25 required: false description: 'Number of results to return (1-5000, default 25)' name: limit in: query - schema: type: string description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. example: eyJ2IjoxLCJkIjoibmV4dCJ9 required: false description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. name: cursor in: query - schema: type: string pattern: '^(?:-?\w+)?(?:,(?:-?\w+)?)*$' description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. example: '-launch_date' required: false description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. name: sort in: query - schema: type: boolean description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. example: true required: false description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. name: include_total in: query - schema: type: string description: ISO 4217 currency code for monetary field conversion. Defaults to USD. example: EUR required: false description: ISO 4217 currency code for monetary field conversion. Defaults to USD. name: currency in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: List of geo points content: application/json: schema: $ref: '#/components/schemas/GeoPointListResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '400': description: Invalid request parameters content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: VALIDATION_ERROR message: The request was malformed or failed validation. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '/data/entities/{id}': get: operationId: getEntity security: - oauth2: - 'read:entities' - bearerAuth: - 'read:entities' tags: - Entities summary: Get single entity description: >- Returns the full entity record by UUID (numeric IDs are not accepted). The response is one of the per-class variants of the `Entity` union — a company, university, gov/NGO, investor or person shape — selected by the row's own `type` and then its `organization_subtype`. Every variant carries the shared base fields plus exactly the facets its class owns, all always present; narrow on those two fields rather than presence-checking each facet. Read the `type` / `organization_subtype` / role flags here, then call the matching typed collection for relationship sub-resources (e.g. `/companies/{id}/team`, `/investors/{id}/portfolio`). Monetary fields convert to the requested `?currency=` (default USD). parameters: - schema: type: string minLength: 1 format: uuid example: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c description: Stable UUID of the entity. Numeric ids are not accepted. required: true description: Stable UUID of the entity. Numeric ids are not accepted. name: id in: path - schema: type: string description: ISO 4217 currency code for monetary field conversion. Defaults to USD. example: EUR required: false description: ISO 4217 currency code for monetary field conversion. Defaults to USD. name: currency in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: Single entity content: application/json: schema: $ref: '#/components/schemas/EntityDetailResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '404': description: Entity not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: NOT_FOUND message: The requested resource was not found. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '/data/entities/{id}/lp-funds': get: operationId: entityLpFunds security: - oauth2: - 'read:entities' - bearerAuth: - 'read:entities' tags: - Entities summary: List LP fund positions description: >- Lists the investor firms whose known limited partners include this entity — e.g. the accelerator programmes and VC firms a university has committed capital to. Each row is an investor-firm entity (not an `investment_fund` vehicle) and carries its investor type names. The source data holds only the LP↔firm pair, so no commitment amount or date is available. Retained on `/entities/{id}` (the one facet-scoping exception) until ENG-432 introduces the LP role lens and rename. parameters: - schema: type: string minLength: 1 format: uuid example: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c description: Stable UUID of the entity. Numeric ids are not accepted. required: true description: Stable UUID of the entity. Numeric ids are not accepted. name: id in: path - schema: type: string description: | Filter expression for the investor firms — same syntax and keys as /data/investors. Operators: eq, neq, gt, gte, lt, lte, in_any, nin_any Default ref: 'entity' example: 'investor_type[eq]:venture_capital' required: false description: | Filter expression for the investor firms — same syntax and keys as /data/investors. Operators: eq, neq, gt, gte, lt, lte, in_any, nin_any Default ref: 'entity' name: filter in: query - schema: type: integer format: int32 minimum: 1 maximum: 500 default: 25 description: 'Number of results to return (1-500, default 25)' example: 25 required: false description: 'Number of results to return (1-500, default 25)' name: limit in: query - schema: type: string description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. example: eyJ2IjoxLCJkIjoibmV4dCJ9 required: false description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. name: cursor in: query - schema: type: boolean description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. example: true required: false description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. name: include_total in: query - schema: type: string description: ISO 4217 currency code for monetary field conversion. Defaults to USD. example: EUR required: false description: ISO 4217 currency code for monetary field conversion. Defaults to USD. name: currency in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: Investor firms with this entity as a known LP content: application/json: schema: $ref: '#/components/schemas/EntityLpFundsResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '400': description: Invalid entity ID content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: VALIDATION_ERROR message: The request was malformed or failed validation. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' /data/companies: get: operationId: listCompanies security: - oauth2: - 'read:entities' - bearerAuth: - 'read:entities' tags: - Companies summary: List companies description: >- Returns a paginated list of companies (entities with `organization_subtype = company`) — the subset of the entity index that excludes investors, universities, and gov/NGOs. Supports the full entity filter syntax, sorting, and pagination. Monetary fields convert to the requested `?currency=` (default USD). parameters: - schema: type: string description: > Filter expression for companies (organization_subtype = company) using nested syntax. Examples: - Single: total_funding[gte]:1000000 - AND: and(total_funding[gte]:1000000,classification[in_any]:unicorn) - OR: or(hq_location[eq]:628061,hq_location[eq]:1297711) - Relationship path: investor.total_invested_usd[gte]:100000000 Operators: eq, neq, gt, gte, lt, lte, in_any, nin_any in_all / nin_all are available on repeated related-record filters and on the classification / roles flag sets. Default ref: 'entity' (can be omitted for entity filters) example: 'and(total_funding[gte]:1000000,classification[in_any]:unicorn)' required: false description: > Filter expression for companies (organization_subtype = company) using nested syntax. Examples: - Single: total_funding[gte]:1000000 - AND: and(total_funding[gte]:1000000,classification[in_any]:unicorn) - OR: or(hq_location[eq]:628061,hq_location[eq]:1297711) - Relationship path: investor.total_invested_usd[gte]:100000000 Operators: eq, neq, gt, gte, lt, lte, in_any, nin_any in_all / nin_all are available on repeated related-record filters and on the classification / roles flag sets. Default ref: 'entity' (can be omitted for entity filters) name: filter in: query - schema: type: integer format: int32 minimum: 1 maximum: 500 default: 25 description: 'Number of results to return (1-500, default 25)' example: 25 required: false description: 'Number of results to return (1-500, default 25)' name: limit in: query - schema: type: string description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. example: eyJ2IjoxLCJkIjoibmV4dCJ9 required: false description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. name: cursor in: query - schema: type: string pattern: '^(?:-?\w+)?(?:,(?:-?\w+)?)*$' description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. example: '-launch_date' required: false description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. name: sort in: query - schema: type: boolean description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. example: true required: false description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. name: include_total in: query - schema: type: string description: ISO 4217 currency code for monetary field conversion. Defaults to USD. example: EUR required: false description: ISO 4217 currency code for monetary field conversion. Defaults to USD. name: currency in: query - schema: type: string enum: - full - summary default: full description: >- Which row shape to return, echoed as `view` in the response. `full` is the complete row, priced as a full record. `summary` drops the full-only blocks (founders, revenue, traffic, patents, alumni, founded_companies, career, education, portfolio, exits, match, rank) and is priced as a summary record. example: summary required: false description: >- Which row shape to return, echoed as `view` in the response. `full` is the complete row, priced as a full record. `summary` drops the full-only blocks (founders, revenue, traffic, patents, alumni, founded_companies, career, education, portfolio, exits, match, rank) and is priced as a summary record. name: view in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: List of companies content: application/json: schema: $ref: '#/components/schemas/CompanyListResponse' examples: company_full: summary: Company — full row value: view: full data: - uuid: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c type: organization domain: stripe.com name: Stripe tagline: about: image: dealroom_url: links: website: linkedin: twitter: instagram: angellist: crunchbase: locations: - role: hq city: id: 123 name: state: id: 123 name: country: id: 123 name: continent: id: 123 name: lat: 123 lon: 123 roles: - founder taxonomy: - id: 123 name: type: sector launch_date: 2024-03 closing_date: 2024-03 employees_count: 123 added_at: updated_at: subtype: company classifications: - startup employee_count_1y_growth: 123 status: operational signal_rating: 123 unicorn_type: became_unicorn_date: 2024-03 became_thoroughbred_date: 2024-03 exit_date: 2024-03 investor: rank: 123 types: - id: 123 name: code: stages: - id: 123 name: code: deal_size: min: 123 max: 123 investments: count: 123 total_invested: 123 preferred_round: last_round_date: 2024-03 portfolio: rounds_count: 123 total_valuation: 123 companies: total: 123 sort: '-last_round_date' items: - is_lead: true rounds_count: 123 last_round_date: 2024-03 company: uuid: type: organization subtype: company name: image: dealroom_url: exits: count: 123 total_value: 123 pct: 123 match: companies_count: 123 invested: 123 funding: total: 123 total_vc: 123 rounds_count: 123 valuation: value: 123 year: 123 month: 123 jobs: is_hiring: true open_count: 123 revenue: value: 123 year: 123 traffic: monthly_visits: 123 growth_3m: 123 patents: count: 123 founders: total: 123 sort: '-is_strong_founder,-signal_rating' items: - raw_title: titles: - is_founder: true is_executive: true is_partner: true is_past: true start_date: 2024-03 end_date: 2024-03 person: uuid: type: person subtype: null name: image: dealroom_url: classifications: - serial_founder available: - founders page: total: 123 limit: 123 offset: 123 next_cursor: prev_cursor: capped: true tier: anonymous ecosystem: currency: company_summary: summary: Company — summary row value: view: summary data: - uuid: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c type: organization domain: stripe.com name: Stripe tagline: about: image: dealroom_url: links: website: linkedin: twitter: instagram: angellist: crunchbase: locations: - role: hq city: id: 123 name: state: id: 123 name: country: id: 123 name: continent: id: 123 name: lat: 123 lon: 123 roles: - founder taxonomy: - id: 123 name: type: sector launch_date: 2024-03 closing_date: 2024-03 employees_count: 123 added_at: updated_at: subtype: company classifications: - startup employee_count_1y_growth: 123 status: operational signal_rating: 123 unicorn_type: became_unicorn_date: 2024-03 became_thoroughbred_date: 2024-03 exit_date: 2024-03 investor: types: - id: 123 name: code: stages: - id: 123 name: code: deal_size: min: 123 max: 123 investments: count: 123 total_invested: 123 preferred_round: last_round_date: 2024-03 funding: total: 123 total_vc: 123 rounds_count: 123 valuation: value: 123 year: 123 month: 123 jobs: is_hiring: true open_count: 123 page: total: 123 limit: 123 offset: 123 next_cursor: prev_cursor: capped: true tier: anonymous ecosystem: currency: headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '400': description: Invalid request parameters content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: VALIDATION_ERROR message: The request was malformed or failed validation. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' /data/companies/geo: get: operationId: listCompanyGeoPoints security: - oauth2: - 'read:entities' - bearerAuth: - 'read:entities' tags: - Companies summary: List company map points description: >- Slim company payload for map rendering (the startup map's dot layer): one point per company with HQ coordinates and an optional `size_by` metric value. Accepts the same filter syntax as `/companies`. When `size_by` is set, points sort by that dimension descending, so a bounded page keeps the highest-value points; continue with `cursor` from `page.next_cursor`. Companies without usable HQ coordinates are omitted. Monetary values are USD. For per-area counts (the map's choropleth layer), use the aggregate endpoint: GET /analytics/aggregate/companies?metric=count&group_by=map_area. parameters: - schema: type: string description: >- Filter expression for companies — identical syntax and semantics to the `/companies` list filter. example: 'and(total_funding[gte]:1000000,classification[in_any]:unicorn)' required: false description: >- Filter expression for companies — identical syntax and semantics to the `/companies` list filter. name: filter in: query - schema: type: string enum: - total_funding - employees_count - latest_valuation - total_invested - investments_count - alumni_count - alumni_founders_count description: >- Numeric dimension returned as each point's `value` (for proportional dot sizing). Monetary dimensions are USD. Also sorts the result descending, so a capped response keeps the highest-value points. Omitted → `value` is null and the default sort applies. example: total_funding required: false description: >- Numeric dimension returned as each point's `value` (for proportional dot sizing). Monetary dimensions are USD. Also sorts the result descending, so a capped response keeps the highest-value points. Omitted → `value` is null and the default sort applies. name: size_by in: query - schema: type: integer format: int32 minimum: 1 maximum: 5000 default: 5000 description: 'Number of results to return (1-5000, default 5000)' example: 5000 required: false description: 'Number of results to return (1-5000, default 5000)' name: limit in: query - schema: type: string description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. example: eyJ2IjoxLCJkIjoibmV4dCJ9 required: false description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. name: cursor in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: Company map points content: application/json: schema: $ref: '#/components/schemas/CompanyGeoResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '400': description: Invalid request parameters content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: VALIDATION_ERROR message: The request was malformed or failed validation. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '/data/companies/{id}': get: operationId: getCompany security: - oauth2: - 'read:entities' - bearerAuth: - 'read:entities' tags: - Companies summary: Get single company description: >- Returns the full company record by UUID (numeric IDs are not accepted), including the `company` sub-object (unicorn/VC-backed flags, status, traffic) alongside the shared entity base fields. Monetary fields convert to the requested `?currency=` (default USD). parameters: - schema: type: string minLength: 1 format: uuid example: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c description: Stable UUID of the entity. Numeric ids are not accepted. required: true description: Stable UUID of the entity. Numeric ids are not accepted. name: id in: path - schema: type: string description: ISO 4217 currency code for monetary field conversion. Defaults to USD. example: EUR required: false description: ISO 4217 currency code for monetary field conversion. Defaults to USD. name: currency in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: Single company content: application/json: schema: $ref: '#/components/schemas/CompanyDetailResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '404': description: Company not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: NOT_FOUND message: The requested resource was not found. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '/data/companies/{id}/funding-rounds': get: operationId: companyFundingRounds security: - oauth2: - 'read:entities' - bearerAuth: - 'read:entities' tags: - Companies summary: List funding rounds description: >- Funding-related transactions (rounds, equity events, debt, grants) for a company, newest first. The same underlying transactions as the `/data/transactions` collection, scoped to this company, but in a slimmer shape — the collection's `entity_uuid`, `company` and `deleted_at` fields are omitted. Soft-deleted rounds are excluded. Monetary fields (`amount`, `valuation`) convert to the requested `?currency=` (default USD). `limit` sets the first page's size; continue with `cursor` from `page.next_cursor`. parameters: - schema: type: string minLength: 1 format: uuid example: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c description: Stable UUID of the entity. Numeric ids are not accepted. required: true description: Stable UUID of the entity. Numeric ids are not accepted. name: id in: path - schema: type: integer format: int32 minimum: 1 maximum: 500 default: 25 description: 'Number of results to return (1-500, default 25)' example: 25 required: false description: 'Number of results to return (1-500, default 25)' name: limit in: query - schema: type: string description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. example: eyJ2IjoxLCJkIjoibmV4dCJ9 required: false description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. name: cursor in: query - schema: type: string description: ISO 4217 currency code for monetary field conversion. Defaults to USD. example: EUR required: false description: ISO 4217 currency code for monetary field conversion. Defaults to USD. name: currency in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: Company funding rounds content: application/json: schema: $ref: '#/components/schemas/EntityTransactionsResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '400': description: Invalid entity ID content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: VALIDATION_ERROR message: The request was malformed or failed validation. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '/data/companies/{id}/valuations': get: operationId: companyValuations security: - oauth2: - 'read:entities' - bearerAuth: - 'read:entities' tags: - Companies summary: List valuations description: >- Valuation history (one row per recorded `valued_date`) for a company, newest first. The `value` field converts to the requested `?currency=` (default USD). `limit` sets the first page's size; continue with `cursor` from `page.next_cursor`. parameters: - schema: type: string minLength: 1 format: uuid example: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c description: Stable UUID of the entity. Numeric ids are not accepted. required: true description: Stable UUID of the entity. Numeric ids are not accepted. name: id in: path - schema: type: integer format: int32 minimum: 1 maximum: 500 default: 25 description: 'Number of results to return (1-500, default 25)' example: 25 required: false description: 'Number of results to return (1-500, default 25)' name: limit in: query - schema: type: string description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. example: eyJ2IjoxLCJkIjoibmV4dCJ9 required: false description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. name: cursor in: query - schema: type: string description: ISO 4217 currency code for monetary field conversion. Defaults to USD. example: EUR required: false description: ISO 4217 currency code for monetary field conversion. Defaults to USD. name: currency in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: Company valuations content: application/json: schema: $ref: '#/components/schemas/EntityValuationsResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '400': description: Invalid entity ID content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: VALIDATION_ERROR message: The request was malformed or failed validation. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '/data/companies/{id}/investors': get: operationId: companyInvestors security: - oauth2: - 'read:entities' - bearerAuth: - 'read:entities' tags: - Companies summary: List investors description: >- Investors that invested in the company, de-duplicated to one row per investor with their aggregate involvement. Includes investors not attributed to any disclosed round (`rounds_count: 0`); pass `?scope=additional` to fetch only those (they sort last, so large round-investor lists otherwise push them past the page limit). Supports the same entity `?filter[...]` DSL as `/data/investors`. parameters: - schema: type: string minLength: 1 format: uuid example: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c description: Stable UUID of the entity. Numeric ids are not accepted. required: true description: Stable UUID of the entity. Numeric ids are not accepted. name: id in: path - schema: type: string description: | Filter expression for the investors — same syntax and keys as /data/investors. Operators: eq, neq, gt, gte, lt, lte, in_any, nin_any Default ref: 'entity' example: 'investor_type[eq]:venture_capital' required: false description: | Filter expression for the investors — same syntax and keys as /data/investors. Operators: eq, neq, gt, gte, lt, lte, in_any, nin_any Default ref: 'entity' name: filter in: query - schema: type: integer format: int32 minimum: 1 maximum: 500 default: 25 description: 'Number of results to return (1-500, default 25)' example: 25 required: false description: 'Number of results to return (1-500, default 25)' name: limit in: query - schema: type: string description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. example: eyJ2IjoxLCJkIjoibmV4dCJ9 required: false description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. name: cursor in: query - schema: type: boolean description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. example: true required: false description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. name: include_total in: query - schema: type: string description: ISO 4217 currency code for monetary field conversion. Defaults to USD. example: EUR required: false description: ISO 4217 currency code for monetary field conversion. Defaults to USD. name: currency in: query - schema: type: string enum: - all - rounds - additional description: >- Which investors to return. `all` (default) returns every investor; `rounds` returns only round participants (`rounds_count > 0`); `additional` returns only investors not attributed to any disclosed round (`rounds_count: 0`). Use `additional` to fetch the profile strip without paginating past a large round-investor list. example: additional required: false description: >- Which investors to return. `all` (default) returns every investor; `rounds` returns only round participants (`rounds_count > 0`); `additional` returns only investors not attributed to any disclosed round (`rounds_count: 0`). Use `additional` to fetch the profile strip without paginating past a large round-investor list. name: scope in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: Company investors content: application/json: schema: $ref: '#/components/schemas/EntityInvestorsResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '400': description: Invalid entity ID content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: VALIDATION_ERROR message: The request was malformed or failed validation. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '/data/companies/{id}/financials': get: operationId: companyFinancials security: - oauth2: - 'read:entities' - bearerAuth: - 'read:entities' tags: - Companies summary: Get financials description: >- > ⚠ **DATA INCOMPLETE** — `profit` and `rnd` come from company filings (legacy `bobjects_financials` types 8 and 22), concentrated in companies with public annual reports. Measured coverage (2026-08-04): profit ~119k companies (slightly more than EBITDA's ~89k, well below revenue's ~295k); R&D ~19k companies. (ENG-320) One row per recorded year of revenue, EBITDA, profit, R&D spend, valuation, and employee count. Monetary values convert to the requested `?currency=` (default USD). parameters: - schema: type: string minLength: 1 format: uuid example: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c description: Stable UUID of the entity. Numeric ids are not accepted. required: true description: Stable UUID of the entity. Numeric ids are not accepted. name: id in: path - schema: type: string description: ISO 4217 currency code for monetary field conversion. Defaults to USD. example: EUR required: false description: ISO 4217 currency code for monetary field conversion. Defaults to USD. name: currency in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: Company financials by year content: application/json: schema: $ref: '#/components/schemas/EntityFinancialsResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '400': description: Invalid entity ID content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: VALIDATION_ERROR message: The request was malformed or failed validation. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' x-data-status: kind: data-incomplete gapId: financials-profit-rnd-sparse reason: >- `profit` and `rnd` come from company filings (legacy `bobjects_financials` types 8 and 22), concentrated in companies with public annual reports. Measured coverage (2026-08-04): profit ~119k companies (slightly more than EBITDA's ~89k, well below revenue's ~295k); R&D ~19k companies. observable: >- `rnd` is NULL for the vast majority of companies; `profit` coverage is comparable to `ebitda` — both a small fraction of all companies and well below revenue. ticket: ENG-320 '/data/companies/{id}/web-traffic': get: operationId: companyWebTraffic security: - oauth2: - 'read:entities' - bearerAuth: - 'read:entities' tags: - Companies summary: Get web traffic description: >- Full monthly web-visit estimate series for a company, ordered chronologically (oldest first) — the data behind the web-traffic trend chart on the company profile. Visit counts are SimilarWeb-derived estimates. Returns an empty list for companies with no recorded traffic. parameters: - schema: type: string minLength: 1 format: uuid example: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c description: Stable UUID of the entity. Numeric ids are not accepted. required: true description: Stable UUID of the entity. Numeric ids are not accepted. name: id in: path - $ref: '#/components/parameters/ApiVersion' responses: '200': description: Company monthly web-traffic series content: application/json: schema: $ref: '#/components/schemas/EntityWebTrafficResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '400': description: Invalid entity ID content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: VALIDATION_ERROR message: The request was malformed or failed validation. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '/data/companies/{id}/headcount-breakdown': get: operationId: companyHeadcountBreakdown security: - oauth2: - 'read:entities' - bearerAuth: - 'read:entities' tags: - Companies summary: Get headcount breakdown description: >- Full monthly employee-distribution series for a company across both breakdown dimensions — `country` (employee distribution by country) and `department` — ordered chronologically (oldest first). Each row is one item's percentage share of headcount for a month. Narrow to a single dimension with `?type=country|department`. Powers the headcount donut and stacked-area charts on the company profile. Returns an empty list for companies with no recorded breakdown. parameters: - schema: type: string minLength: 1 format: uuid example: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c description: Stable UUID of the entity. Numeric ids are not accepted. required: true description: Stable UUID of the entity. Numeric ids are not accepted. name: id in: path - schema: type: string enum: - country - department description: >- Restrict to a single breakdown dimension: `country` (employee distribution by country) or `department`. Omit to return both. example: country required: false description: >- Restrict to a single breakdown dimension: `country` (employee distribution by country) or `department`. Omit to return both. name: type in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: Company monthly headcount breakdown series content: application/json: schema: $ref: '#/components/schemas/EntityHeadcountBreakdownResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '400': description: Invalid entity ID or request parameters content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: VALIDATION_ERROR message: The request was malformed or failed validation. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '/data/companies/{id}/team': get: operationId: companyTeam security: - oauth2: - 'read:entities' - 'read:people' - bearerAuth: - 'read:entities' - 'read:people' tags: - Companies summary: List company team members description: >- People associated with the company through the people_entities relationship (founders, executives, partners, and other team members). Supports the same person filter DSL as `/data/people`, plus `role` and `is_past` relationship filters. parameters: - schema: type: string minLength: 1 format: uuid example: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c description: Stable UUID of the entity. Numeric ids are not accepted. required: true description: Stable UUID of the entity. Numeric ids are not accepted. name: id in: path - schema: type: string description: | Filter expression for team members — same syntax and keys as /data/people. Examples: - Single: hq_location[eq]:233 - AND: and(hq_location[eq]:233,gender[eq]:female) Operators: eq, neq, gt, gte, lt, lte, in_any, nin_any Default ref: 'entity' example: 'gender[eq]:female' required: false description: | Filter expression for team members — same syntax and keys as /data/people. Examples: - Single: hq_location[eq]:233 - AND: and(hq_location[eq]:233,gender[eq]:female) Operators: eq, neq, gt, gte, lt, lte, in_any, nin_any Default ref: 'entity' name: filter in: query - schema: type: integer format: int32 minimum: 1 maximum: 500 default: 25 description: 'Number of results to return (1-500, default 25)' example: 25 required: false description: 'Number of results to return (1-500, default 25)' name: limit in: query - schema: type: string description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. example: eyJ2IjoxLCJkIjoibmV4dCJ9 required: false description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. name: cursor in: query - schema: type: string pattern: '^(?:-?\w+)?(?:,(?:-?\w+)?)*$' description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. example: name required: false description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. name: sort in: query - schema: type: boolean description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. example: true required: false description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. name: include_total in: query - schema: type: string description: ISO 4217 currency code for monetary field conversion. Defaults to USD. example: EUR required: false description: ISO 4217 currency code for monetary field conversion. Defaults to USD. name: currency in: query - schema: type: string enum: - founder - executive - partner description: >- Restrict to a single relationship role at this entity: `founder`, `executive`, or `partner`. Omit to include everyone. example: founder required: false description: >- Restrict to a single relationship role at this entity: `founder`, `executive`, or `partner`. Omit to include everyone. name: role in: query - schema: type: boolean description: >- Filter by tenure at this entity. `false` = current members, `true` = former members. Omit to include both. example: false required: false description: >- Filter by tenure at this entity. `false` = current members, `true` = former members. Omit to include both. name: is_past in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: Company team members content: application/json: schema: $ref: '#/components/schemas/EntityTeamResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '400': description: Invalid entity ID or request parameters content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: VALIDATION_ERROR message: The request was malformed or failed validation. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '/data/companies/{id}/patents': get: operationId: companyPatents security: - oauth2: - 'read:entities' - bearerAuth: - 'read:entities' tags: - Companies summary: List company patents description: >- > ⚠ **PARTIAL IMPLEMENTATION** — `patents_count` (and the `patents` object's `total_value_usd`/`average_value_usd`) is sourced from PatSnap's `valued_patent_count` — every patent PatSnap assigned a value to. This list is sourced from the separate, PatSnap-curated `high_value_patent_pns` array, which patent_details only has full records for. The two are different PatSnap-internal populations: corpus-wide (2026-09), only 15% of entities have them match exactly; the list averages ~9% the size of `patents_count`. (ENG-960) The company's high-value patents, from PatSnap. parameters: - schema: type: string minLength: 1 format: uuid example: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c description: Stable UUID of the entity. Numeric ids are not accepted. required: true description: Stable UUID of the entity. Numeric ids are not accepted. name: id in: path - schema: type: integer format: int32 minimum: 1 maximum: 500 default: 25 description: 'Number of results to return (1-500, default 25)' example: 25 required: false description: 'Number of results to return (1-500, default 25)' name: limit in: query - schema: type: string description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. example: eyJ2IjoxLCJkIjoibmV4dCJ9 required: false description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. name: cursor in: query - schema: type: string pattern: '^(?:-?\w+)?(?:,(?:-?\w+)?)*$' description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. example: '-value' required: false description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. name: sort in: query - schema: type: boolean description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. example: true required: false description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. name: include_total in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: Company patents content: application/json: schema: $ref: '#/components/schemas/EntityPatentsResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '400': description: Invalid entity ID or request parameters content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: VALIDATION_ERROR message: The request was malformed or failed validation. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' x-data-status: kind: partial gapId: patents-count-list-size-mismatch-companies reason: >- `patents_count` (and the `patents` object's `total_value_usd`/`average_value_usd`) is sourced from PatSnap's `valued_patent_count` — every patent PatSnap assigned a value to. This list is sourced from the separate, PatSnap-curated `high_value_patent_pns` array, which patent_details only has full records for. The two are different PatSnap-internal populations: corpus-wide (2026-09), only 15% of entities have them match exactly; the list averages ~9% the size of `patents_count`. observable: >- `patents_count` on the parent entity is usually larger than `GET .../patents`'s `page.total` for the same entity — sometimes by an order of magnitude (e.g. patents_count 42 vs. 1 list row). ticket: ENG-960 '/data/companies/{id}/similar': get: operationId: companySimilar security: - oauth2: - 'read:entities' - bearerAuth: - 'read:entities' tags: - Companies summary: List similar companies description: >- Companies ranked by similarity to this company, scored by weighted overlap of shared categorical tags (sector, sub-industry, industry, client focus, technology, income stream) — the legacy app.dealroom.co similar-companies model. Force-sorted by score; supports the full company filter DSL to narrow the candidate pool (e.g. by location). Pages by `cursor` (from `page.next_cursor`) within the first 1000 ranked results. parameters: - schema: type: string minLength: 1 format: uuid example: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c description: Stable UUID of the entity. Numeric ids are not accepted. required: true description: Stable UUID of the entity. Numeric ids are not accepted. name: id in: path - schema: type: string description: > Filter expression for companies (organization_subtype = company) using nested syntax. Examples: - Single: total_funding[gte]:1000000 - AND: and(total_funding[gte]:1000000,classification[in_any]:unicorn) - OR: or(hq_location[eq]:628061,hq_location[eq]:1297711) - Relationship path: investor.total_invested_usd[gte]:100000000 Operators: eq, neq, gt, gte, lt, lte, in_any, nin_any in_all / nin_all are available on repeated related-record filters and on the classification / roles flag sets. Default ref: 'entity' (can be omitted for entity filters) example: 'and(total_funding[gte]:1000000,classification[in_any]:unicorn)' required: false description: > Filter expression for companies (organization_subtype = company) using nested syntax. Examples: - Single: total_funding[gte]:1000000 - AND: and(total_funding[gte]:1000000,classification[in_any]:unicorn) - OR: or(hq_location[eq]:628061,hq_location[eq]:1297711) - Relationship path: investor.total_invested_usd[gte]:100000000 Operators: eq, neq, gt, gte, lt, lte, in_any, nin_any in_all / nin_all are available on repeated related-record filters and on the classification / roles flag sets. Default ref: 'entity' (can be omitted for entity filters) name: filter in: query - schema: type: integer format: int32 minimum: 1 maximum: 500 default: 25 description: 'Number of results to return (1-500, default 25)' example: 25 required: false description: 'Number of results to return (1-500, default 25)' name: limit in: query - schema: type: string description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. example: eyJ2IjoxLCJkIjoibmV4dCJ9 required: false description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. name: cursor in: query - schema: type: string pattern: '^(?:-?\w+)?(?:,(?:-?\w+)?)*$' description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. example: '-launch_date' required: false description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. name: sort in: query - schema: type: boolean description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. example: true required: false description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. name: include_total in: query - schema: type: string description: ISO 4217 currency code for monetary field conversion. Defaults to USD. example: EUR required: false description: ISO 4217 currency code for monetary field conversion. Defaults to USD. name: currency in: query - schema: type: string enum: - full - summary default: full description: >- Which row shape to return, echoed as `view` in the response. `full` is the complete row, priced as a full record. `summary` drops the full-only blocks (founders, revenue, traffic, patents, alumni, founded_companies, career, education, portfolio, exits, match, rank) and is priced as a summary record. example: summary required: false description: >- Which row shape to return, echoed as `view` in the response. `full` is the complete row, priced as a full record. `summary` drops the full-only blocks (founders, revenue, traffic, patents, alumni, founded_companies, career, education, portfolio, exits, match, rank) and is priced as a summary record. name: view in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: Similar companies content: application/json: schema: $ref: '#/components/schemas/CompanyListResponse' examples: company_full: summary: Company — full row value: view: full data: - uuid: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c type: organization domain: stripe.com name: Stripe tagline: about: image: dealroom_url: links: website: linkedin: twitter: instagram: angellist: crunchbase: locations: - role: hq city: id: 123 name: state: id: 123 name: country: id: 123 name: continent: id: 123 name: lat: 123 lon: 123 roles: - founder taxonomy: - id: 123 name: type: sector launch_date: 2024-03 closing_date: 2024-03 employees_count: 123 added_at: updated_at: subtype: company classifications: - startup employee_count_1y_growth: 123 status: operational signal_rating: 123 unicorn_type: became_unicorn_date: 2024-03 became_thoroughbred_date: 2024-03 exit_date: 2024-03 investor: rank: 123 types: - id: 123 name: code: stages: - id: 123 name: code: deal_size: min: 123 max: 123 investments: count: 123 total_invested: 123 preferred_round: last_round_date: 2024-03 portfolio: rounds_count: 123 total_valuation: 123 companies: total: 123 sort: '-last_round_date' items: - is_lead: true rounds_count: 123 last_round_date: 2024-03 company: uuid: type: organization subtype: company name: image: dealroom_url: exits: count: 123 total_value: 123 pct: 123 match: companies_count: 123 invested: 123 funding: total: 123 total_vc: 123 rounds_count: 123 valuation: value: 123 year: 123 month: 123 jobs: is_hiring: true open_count: 123 revenue: value: 123 year: 123 traffic: monthly_visits: 123 growth_3m: 123 patents: count: 123 founders: total: 123 sort: '-is_strong_founder,-signal_rating' items: - raw_title: titles: - is_founder: true is_executive: true is_partner: true is_past: true start_date: 2024-03 end_date: 2024-03 person: uuid: type: person subtype: null name: image: dealroom_url: classifications: - serial_founder available: - founders page: total: 123 limit: 123 offset: 123 next_cursor: prev_cursor: capped: true tier: anonymous ecosystem: currency: company_summary: summary: Company — summary row value: view: summary data: - uuid: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c type: organization domain: stripe.com name: Stripe tagline: about: image: dealroom_url: links: website: linkedin: twitter: instagram: angellist: crunchbase: locations: - role: hq city: id: 123 name: state: id: 123 name: country: id: 123 name: continent: id: 123 name: lat: 123 lon: 123 roles: - founder taxonomy: - id: 123 name: type: sector launch_date: 2024-03 closing_date: 2024-03 employees_count: 123 added_at: updated_at: subtype: company classifications: - startup employee_count_1y_growth: 123 status: operational signal_rating: 123 unicorn_type: became_unicorn_date: 2024-03 became_thoroughbred_date: 2024-03 exit_date: 2024-03 investor: types: - id: 123 name: code: stages: - id: 123 name: code: deal_size: min: 123 max: 123 investments: count: 123 total_invested: 123 preferred_round: last_round_date: 2024-03 funding: total: 123 total_vc: 123 rounds_count: 123 valuation: value: 123 year: 123 month: 123 jobs: is_hiring: true open_count: 123 page: total: 123 limit: 123 offset: 123 next_cursor: prev_cursor: capped: true tier: anonymous ecosystem: currency: headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '400': description: >- Invalid request — e.g. malformed entity id, or a page beyond the similarity window cap (1000) content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: VALIDATION_ERROR message: The request was malformed or failed validation. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '404': description: Anchor entity not found in this collection content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: NOT_FOUND message: The requested resource was not found. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' /data/universities: get: operationId: listUniversities security: - oauth2: - 'read:entities' - bearerAuth: - 'read:entities' tags: - Universities summary: List universities description: >- Returns a paginated list of universities (entities with `organization_subtype = university`). The `university` sub-object carries alumni metrics (founder count, founded/unicorn companies). Supports the full entity filter syntax, sorting, and pagination. parameters: - schema: type: string description: > Filter expression for universities (organization_subtype = university) using nested syntax. Examples: - Single: alumni_founders_count[gte]:100 - AND: and(alumni_founders_count[gte]:100,hq_location[eq]:233) Operators: eq, neq, gt, gte, lt, lte, in_any, nin_any Default ref: 'entity' (can be omitted for entity filters) example: 'and(alumni_founders_count[gte]:100,hq_location[eq]:233)' required: false description: > Filter expression for universities (organization_subtype = university) using nested syntax. Examples: - Single: alumni_founders_count[gte]:100 - AND: and(alumni_founders_count[gte]:100,hq_location[eq]:233) Operators: eq, neq, gt, gte, lt, lte, in_any, nin_any Default ref: 'entity' (can be omitted for entity filters) name: filter in: query - schema: type: integer format: int32 minimum: 1 maximum: 500 default: 25 description: 'Number of results to return (1-500, default 25)' example: 25 required: false description: 'Number of results to return (1-500, default 25)' name: limit in: query - schema: type: string description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. example: eyJ2IjoxLCJkIjoibmV4dCJ9 required: false description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. name: cursor in: query - schema: type: string pattern: '^(?:-?\w+)?(?:,(?:-?\w+)?)*$' description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. example: '-launch_date' required: false description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. name: sort in: query - schema: type: boolean description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. example: true required: false description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. name: include_total in: query - schema: type: string description: ISO 4217 currency code for monetary field conversion. Defaults to USD. example: EUR required: false description: ISO 4217 currency code for monetary field conversion. Defaults to USD. name: currency in: query - schema: type: string enum: - full - summary default: full description: >- Which row shape to return, echoed as `view` in the response. `full` is the complete row, priced as a full record. `summary` drops the full-only blocks (founders, revenue, traffic, patents, alumni, founded_companies, career, education, portfolio, exits, match, rank) and is priced as a summary record. example: summary required: false description: >- Which row shape to return, echoed as `view` in the response. `full` is the complete row, priced as a full record. `summary` drops the full-only blocks (founders, revenue, traffic, patents, alumni, founded_companies, career, education, portfolio, exits, match, rank) and is priced as a summary record. name: view in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: List of universities content: application/json: schema: $ref: '#/components/schemas/UniversityListResponse' examples: university_full: summary: University — full row value: view: full data: - uuid: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c type: organization domain: stripe.com name: Stripe tagline: about: image: dealroom_url: links: website: linkedin: twitter: instagram: angellist: crunchbase: locations: - role: hq city: id: 123 name: state: id: 123 name: country: id: 123 name: continent: id: 123 name: lat: 123 lon: 123 roles: - founder taxonomy: - id: 123 name: type: sector launch_date: 2024-03 closing_date: 2024-03 employees_count: 123 added_at: updated_at: subtype: university spinouts_count: 123 investor: rank: 123 types: - id: 123 name: code: stages: - id: 123 name: code: deal_size: min: 123 max: 123 investments: count: 123 total_invested: 123 preferred_round: last_round_date: 2024-03 portfolio: rounds_count: 123 total_valuation: 123 companies: total: 123 sort: '-last_round_date' items: - is_lead: true rounds_count: 123 last_round_date: 2024-03 company: uuid: type: organization subtype: company name: image: dealroom_url: exits: count: 123 total_value: 123 pct: 123 match: companies_count: 123 invested: 123 patents: count: 123 alumni: count: 123 founders_count: 123 founded_companies_count: 123 unicorn_companies_count: 123 available: - alumni page: total: 123 limit: 123 offset: 123 next_cursor: prev_cursor: currency: university_summary: summary: University — summary row value: view: summary data: - uuid: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c type: organization domain: stripe.com name: Stripe tagline: about: image: dealroom_url: links: website: linkedin: twitter: instagram: angellist: crunchbase: locations: - role: hq city: id: 123 name: state: id: 123 name: country: id: 123 name: continent: id: 123 name: lat: 123 lon: 123 roles: - founder taxonomy: - id: 123 name: type: sector launch_date: 2024-03 closing_date: 2024-03 employees_count: 123 added_at: updated_at: subtype: university spinouts_count: 123 investor: types: - id: 123 name: code: stages: - id: 123 name: code: deal_size: min: 123 max: 123 investments: count: 123 total_invested: 123 preferred_round: last_round_date: 2024-03 page: total: 123 limit: 123 offset: 123 next_cursor: prev_cursor: currency: headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '400': description: Invalid request parameters content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: VALIDATION_ERROR message: The request was malformed or failed validation. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' /data/universities/geo: get: operationId: listUniversityGeoPoints security: - oauth2: - 'read:entities' - bearerAuth: - 'read:entities' tags: - Universities summary: List university map points description: >- Slim university payload for map rendering (the startup map's dot layer): one point per university with HQ coordinates and an optional `size_by` metric value. Accepts the same filter syntax as `/universities`. When `size_by` is set, points sort by that dimension descending, so a bounded page keeps the highest-value points; continue with `cursor` from `page.next_cursor`. Universities without usable HQ coordinates are omitted. Monetary values are USD. For per-area counts (the map's choropleth layer), use GET /analytics/aggregate/universities?metric=count&group_by=map_area. parameters: - schema: type: string description: >- Filter expression for universities — identical syntax and semantics to the `/universities` list filter. example: 'and(alumni_founders_count[gte]:100,hq_location[eq]:233)' required: false description: >- Filter expression for universities — identical syntax and semantics to the `/universities` list filter. name: filter in: query - schema: type: string enum: - total_funding - employees_count - latest_valuation - total_invested - investments_count - alumni_count - alumni_founders_count description: >- Numeric dimension returned as each point's `value` (for proportional dot sizing). Monetary dimensions are USD. Also sorts the result descending, so a capped response keeps the highest-value points. Omitted → `value` is null and the default sort applies. example: total_funding required: false description: >- Numeric dimension returned as each point's `value` (for proportional dot sizing). Monetary dimensions are USD. Also sorts the result descending, so a capped response keeps the highest-value points. Omitted → `value` is null and the default sort applies. name: size_by in: query - schema: type: integer format: int32 minimum: 1 maximum: 5000 default: 5000 description: 'Number of results to return (1-5000, default 5000)' example: 5000 required: false description: 'Number of results to return (1-5000, default 5000)' name: limit in: query - schema: type: string description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. example: eyJ2IjoxLCJkIjoibmV4dCJ9 required: false description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. name: cursor in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: University map points content: application/json: schema: $ref: '#/components/schemas/UniversityGeoResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '400': description: Invalid request parameters content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: VALIDATION_ERROR message: The request was malformed or failed validation. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '/data/universities/{id}': get: operationId: getUniversity security: - oauth2: - 'read:entities' - bearerAuth: - 'read:entities' tags: - Universities summary: Get single university description: >- Returns the full university record by UUID (numeric IDs are not accepted), including the `university` sub-object (alumni metrics) alongside the shared entity base fields. parameters: - schema: type: string minLength: 1 format: uuid example: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c description: Stable UUID of the entity. Numeric ids are not accepted. required: true description: Stable UUID of the entity. Numeric ids are not accepted. name: id in: path - schema: type: string description: ISO 4217 currency code for monetary field conversion. Defaults to USD. example: EUR required: false description: ISO 4217 currency code for monetary field conversion. Defaults to USD. name: currency in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: Single university content: application/json: schema: $ref: '#/components/schemas/UniversityDetailResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '404': description: University not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: NOT_FOUND message: The requested resource was not found. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '/data/universities/{id}/team': get: operationId: universityTeam security: - oauth2: - 'read:entities' - 'read:people' - bearerAuth: - 'read:entities' - 'read:people' tags: - Universities summary: List university team members description: >- People associated with the university through the people_entities relationship. Supports the same person filter DSL as `/data/people`, plus `role` and `is_past` relationship filters. parameters: - schema: type: string minLength: 1 format: uuid example: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c description: Stable UUID of the entity. Numeric ids are not accepted. required: true description: Stable UUID of the entity. Numeric ids are not accepted. name: id in: path - schema: type: string description: | Filter expression for team members — same syntax and keys as /data/people. Examples: - Single: hq_location[eq]:233 - AND: and(hq_location[eq]:233,gender[eq]:female) Operators: eq, neq, gt, gte, lt, lte, in_any, nin_any Default ref: 'entity' example: 'gender[eq]:female' required: false description: | Filter expression for team members — same syntax and keys as /data/people. Examples: - Single: hq_location[eq]:233 - AND: and(hq_location[eq]:233,gender[eq]:female) Operators: eq, neq, gt, gte, lt, lte, in_any, nin_any Default ref: 'entity' name: filter in: query - schema: type: integer format: int32 minimum: 1 maximum: 500 default: 25 description: 'Number of results to return (1-500, default 25)' example: 25 required: false description: 'Number of results to return (1-500, default 25)' name: limit in: query - schema: type: string description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. example: eyJ2IjoxLCJkIjoibmV4dCJ9 required: false description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. name: cursor in: query - schema: type: string pattern: '^(?:-?\w+)?(?:,(?:-?\w+)?)*$' description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. example: name required: false description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. name: sort in: query - schema: type: boolean description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. example: true required: false description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. name: include_total in: query - schema: type: string description: ISO 4217 currency code for monetary field conversion. Defaults to USD. example: EUR required: false description: ISO 4217 currency code for monetary field conversion. Defaults to USD. name: currency in: query - schema: type: string enum: - founder - executive - partner description: >- Restrict to a single relationship role at this entity: `founder`, `executive`, or `partner`. Omit to include everyone. example: founder required: false description: >- Restrict to a single relationship role at this entity: `founder`, `executive`, or `partner`. Omit to include everyone. name: role in: query - schema: type: boolean description: >- Filter by tenure at this entity. `false` = current members, `true` = former members. Omit to include both. example: false required: false description: >- Filter by tenure at this entity. `false` = current members, `true` = former members. Omit to include both. name: is_past in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: University team members content: application/json: schema: $ref: '#/components/schemas/EntityTeamResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '400': description: Invalid entity ID or request parameters content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: VALIDATION_ERROR message: The request was malformed or failed validation. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '/data/universities/{id}/alumni': get: operationId: universityAlumni security: - oauth2: - 'read:entities' - 'read:people' - bearerAuth: - 'read:entities' - 'read:people' tags: - Universities summary: List alumni description: >- People who studied at the university (via people_education), one row per alum with the degree(s) earned and study years here, most recent first. Founder alumni carry `is_founder: true` so callers can surface them. Supports the same person filter DSL as `/data/people`. parameters: - schema: type: string minLength: 1 format: uuid example: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c description: Stable UUID of the entity. Numeric ids are not accepted. required: true description: Stable UUID of the entity. Numeric ids are not accepted. name: id in: path - schema: type: string description: | Filter expression for alumni — same syntax and keys as /data/people. Examples: - Single: gender[eq]:female - AND: and(gender[eq]:female,hq_location[eq]:233) Operators: eq, neq, gt, gte, lt, lte, in_any, nin_any Default ref: 'entity' example: 'gender[eq]:female' required: false description: | Filter expression for alumni — same syntax and keys as /data/people. Examples: - Single: gender[eq]:female - AND: and(gender[eq]:female,hq_location[eq]:233) Operators: eq, neq, gt, gte, lt, lte, in_any, nin_any Default ref: 'entity' name: filter in: query - schema: type: integer format: int32 minimum: 1 maximum: 500 default: 25 description: 'Number of results to return (1-500, default 25)' example: 25 required: false description: 'Number of results to return (1-500, default 25)' name: limit in: query - schema: type: string description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. example: eyJ2IjoxLCJkIjoibmV4dCJ9 required: false description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. name: cursor in: query - schema: type: string pattern: '^(?:-?\w+)?(?:,(?:-?\w+)?)*$' description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. example: name required: false description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. name: sort in: query - schema: type: boolean description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. example: true required: false description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. name: include_total in: query - schema: type: string description: ISO 4217 currency code for monetary field conversion. Defaults to USD. example: EUR required: false description: ISO 4217 currency code for monetary field conversion. Defaults to USD. name: currency in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: University alumni content: application/json: schema: $ref: '#/components/schemas/UniversityAlumniResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '400': description: Invalid entity ID content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: VALIDATION_ERROR message: The request was malformed or failed validation. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '/data/universities/{id}/patents': get: operationId: universityPatents security: - oauth2: - 'read:entities' - bearerAuth: - 'read:entities' tags: - Universities summary: List university patents description: >- > ⚠ **PARTIAL IMPLEMENTATION** — Same as `companyPatents`: `patents_count` (`valued_patent_count`) and this list (`high_value_patent_pns`) are different PatSnap-internal populations. (ENG-960) The university's high-value patents, from PatSnap. parameters: - schema: type: string minLength: 1 format: uuid example: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c description: Stable UUID of the entity. Numeric ids are not accepted. required: true description: Stable UUID of the entity. Numeric ids are not accepted. name: id in: path - schema: type: integer format: int32 minimum: 1 maximum: 500 default: 25 description: 'Number of results to return (1-500, default 25)' example: 25 required: false description: 'Number of results to return (1-500, default 25)' name: limit in: query - schema: type: string description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. example: eyJ2IjoxLCJkIjoibmV4dCJ9 required: false description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. name: cursor in: query - schema: type: string pattern: '^(?:-?\w+)?(?:,(?:-?\w+)?)*$' description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. example: '-value' required: false description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. name: sort in: query - schema: type: boolean description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. example: true required: false description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. name: include_total in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: University patents content: application/json: schema: $ref: '#/components/schemas/EntityPatentsResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '400': description: Invalid entity ID or request parameters content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: VALIDATION_ERROR message: The request was malformed or failed validation. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' x-data-status: kind: partial gapId: patents-count-list-size-mismatch-universities reason: >- Same as `companyPatents`: `patents_count` (`valued_patent_count`) and this list (`high_value_patent_pns`) are different PatSnap-internal populations. observable: >- `patents_count` on the parent entity is usually larger than `GET .../patents`'s `page.total` for the same entity. ticket: ENG-960 /data/gov-ngo: get: operationId: listGovNgo security: - oauth2: - 'read:entities' - bearerAuth: - 'read:entities' tags: - Government & NGO summary: List government & NGO entities description: >- Returns a paginated list of government bodies and NGOs (entities with `organization_subtype = gov_ngo`). Supports the full entity filter syntax, sorting, and pagination. parameters: - schema: type: string description: | Filter expression for government & NGO entities (organization_subtype = gov_ngo) using nested syntax. Examples: - Single: hq_location[eq]:233 - AND: and(hq_location[eq]:233,launch_date[gte]:2000) Operators: eq, neq, gt, gte, lt, lte, in_any, nin_any Default ref: 'entity' (can be omitted for entity filters) example: 'hq_location[eq]:233' required: false description: | Filter expression for government & NGO entities (organization_subtype = gov_ngo) using nested syntax. Examples: - Single: hq_location[eq]:233 - AND: and(hq_location[eq]:233,launch_date[gte]:2000) Operators: eq, neq, gt, gte, lt, lte, in_any, nin_any Default ref: 'entity' (can be omitted for entity filters) name: filter in: query - schema: type: integer format: int32 minimum: 1 maximum: 500 default: 25 description: 'Number of results to return (1-500, default 25)' example: 25 required: false description: 'Number of results to return (1-500, default 25)' name: limit in: query - schema: type: string description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. example: eyJ2IjoxLCJkIjoibmV4dCJ9 required: false description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. name: cursor in: query - schema: type: string pattern: '^(?:-?\w+)?(?:,(?:-?\w+)?)*$' description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. example: '-launch_date' required: false description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. name: sort in: query - schema: type: boolean description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. example: true required: false description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. name: include_total in: query - schema: type: string description: ISO 4217 currency code for monetary field conversion. Defaults to USD. example: EUR required: false description: ISO 4217 currency code for monetary field conversion. Defaults to USD. name: currency in: query - schema: type: string enum: - full - summary default: full description: >- Which row shape to return, echoed as `view` in the response. `full` is the complete row, priced as a full record. `summary` drops the full-only blocks (founders, revenue, traffic, patents, alumni, founded_companies, career, education, portfolio, exits, match, rank) and is priced as a summary record. example: summary required: false description: >- Which row shape to return, echoed as `view` in the response. `full` is the complete row, priced as a full record. `summary` drops the full-only blocks (founders, revenue, traffic, patents, alumni, founded_companies, career, education, portfolio, exits, match, rank) and is priced as a summary record. name: view in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: List of government & NGO entities content: application/json: schema: $ref: '#/components/schemas/GovNgoListResponse' examples: government_ngo_full: summary: Government & NGO — full row value: view: full data: - uuid: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c type: organization domain: stripe.com name: Stripe tagline: about: image: dealroom_url: links: website: linkedin: twitter: instagram: angellist: crunchbase: locations: - role: hq city: id: 123 name: state: id: 123 name: country: id: 123 name: continent: id: 123 name: lat: 123 lon: 123 roles: - founder taxonomy: - id: 123 name: type: sector launch_date: 2024-03 closing_date: 2024-03 employees_count: 123 added_at: updated_at: subtype: gov_ngo classifications: - startup signal_rating: 123 investor: rank: 123 types: - id: 123 name: code: stages: - id: 123 name: code: deal_size: min: 123 max: 123 investments: count: 123 total_invested: 123 preferred_round: last_round_date: 2024-03 portfolio: rounds_count: 123 total_valuation: 123 companies: total: 123 sort: '-last_round_date' items: - is_lead: true rounds_count: 123 last_round_date: 2024-03 company: uuid: type: organization subtype: company name: image: dealroom_url: exits: count: 123 total_value: 123 pct: 123 match: companies_count: 123 invested: 123 funding: total: 123 total_vc: 123 rounds_count: 123 jobs: is_hiring: true open_count: 123 traffic: monthly_visits: 123 growth_3m: 123 patents: count: 123 founders: total: 123 sort: '-is_strong_founder,-signal_rating' items: - raw_title: titles: - is_founder: true is_executive: true is_partner: true is_past: true start_date: 2024-03 end_date: 2024-03 person: uuid: type: person subtype: null name: image: dealroom_url: classifications: - serial_founder available: - founders page: total: 123 limit: 123 offset: 123 next_cursor: prev_cursor: currency: government_ngo_summary: summary: Government & NGO — summary row value: view: summary data: - uuid: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c type: organization domain: stripe.com name: Stripe tagline: about: image: dealroom_url: links: website: linkedin: twitter: instagram: angellist: crunchbase: locations: - role: hq city: id: 123 name: state: id: 123 name: country: id: 123 name: continent: id: 123 name: lat: 123 lon: 123 roles: - founder taxonomy: - id: 123 name: type: sector launch_date: 2024-03 closing_date: 2024-03 employees_count: 123 added_at: updated_at: subtype: gov_ngo classifications: - startup signal_rating: 123 investor: types: - id: 123 name: code: stages: - id: 123 name: code: deal_size: min: 123 max: 123 investments: count: 123 total_invested: 123 preferred_round: last_round_date: 2024-03 funding: total: 123 total_vc: 123 rounds_count: 123 jobs: is_hiring: true open_count: 123 page: total: 123 limit: 123 offset: 123 next_cursor: prev_cursor: currency: headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '400': description: Invalid request parameters content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: VALIDATION_ERROR message: The request was malformed or failed validation. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' /data/gov-ngo/geo: get: operationId: listGovNgoGeoPoints security: - oauth2: - 'read:entities' - bearerAuth: - 'read:entities' tags: - Government & NGO summary: List government & NGO map points description: >- Slim government/NGO payload for map rendering (the startup map's dot layer): one point per entity with HQ coordinates and an optional `size_by` metric value. Accepts the same filter syntax as `/gov-ngo`. When `size_by` is set, points sort by that dimension descending, so a bounded page keeps the highest-value points; continue with `cursor` from `page.next_cursor`. Entities without usable HQ coordinates are omitted. Monetary values are USD. For per-area counts (the map's choropleth layer), use GET /analytics/aggregate/gov-ngo?metric=count&group_by=map_area. parameters: - schema: type: string description: >- Filter expression for government & NGO entities — identical syntax and semantics to the `/gov-ngo` list filter. example: 'hq_location[eq]:233' required: false description: >- Filter expression for government & NGO entities — identical syntax and semantics to the `/gov-ngo` list filter. name: filter in: query - schema: type: string enum: - total_funding - employees_count - latest_valuation - total_invested - investments_count - alumni_count - alumni_founders_count description: >- Numeric dimension returned as each point's `value` (for proportional dot sizing). Monetary dimensions are USD. Also sorts the result descending, so a capped response keeps the highest-value points. Omitted → `value` is null and the default sort applies. example: total_funding required: false description: >- Numeric dimension returned as each point's `value` (for proportional dot sizing). Monetary dimensions are USD. Also sorts the result descending, so a capped response keeps the highest-value points. Omitted → `value` is null and the default sort applies. name: size_by in: query - schema: type: integer format: int32 minimum: 1 maximum: 5000 default: 5000 description: 'Number of results to return (1-5000, default 5000)' example: 5000 required: false description: 'Number of results to return (1-5000, default 5000)' name: limit in: query - schema: type: string description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. example: eyJ2IjoxLCJkIjoibmV4dCJ9 required: false description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. name: cursor in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: Government & NGO map points content: application/json: schema: $ref: '#/components/schemas/GovNgoGeoResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '400': description: Invalid request parameters content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: VALIDATION_ERROR message: The request was malformed or failed validation. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '/data/gov-ngo/{id}': get: operationId: getGovNgo security: - oauth2: - 'read:entities' - bearerAuth: - 'read:entities' tags: - Government & NGO summary: Get single government/NGO entity description: >- Returns the full government/NGO record by UUID (numeric IDs are not accepted), alongside the shared entity base fields. parameters: - schema: type: string minLength: 1 format: uuid example: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c description: Stable UUID of the entity. Numeric ids are not accepted. required: true description: Stable UUID of the entity. Numeric ids are not accepted. name: id in: path - schema: type: string description: ISO 4217 currency code for monetary field conversion. Defaults to USD. example: EUR required: false description: ISO 4217 currency code for monetary field conversion. Defaults to USD. name: currency in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: Single government/NGO entity content: application/json: schema: $ref: '#/components/schemas/GovNgoDetailResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '404': description: Government/NGO entity not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: NOT_FOUND message: The requested resource was not found. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '/data/gov-ngo/{id}/team': get: operationId: govNgoTeam security: - oauth2: - 'read:entities' - 'read:people' - bearerAuth: - 'read:entities' - 'read:people' tags: - Government & NGO summary: List government & NGO team members description: >- People associated with the government body or NGO through the people_entities relationship. Supports the same person filter DSL as `/data/people`, plus `role` and `is_past` relationship filters. parameters: - schema: type: string minLength: 1 format: uuid example: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c description: Stable UUID of the entity. Numeric ids are not accepted. required: true description: Stable UUID of the entity. Numeric ids are not accepted. name: id in: path - schema: type: string description: | Filter expression for team members — same syntax and keys as /data/people. Examples: - Single: hq_location[eq]:233 - AND: and(hq_location[eq]:233,gender[eq]:female) Operators: eq, neq, gt, gte, lt, lte, in_any, nin_any Default ref: 'entity' example: 'gender[eq]:female' required: false description: | Filter expression for team members — same syntax and keys as /data/people. Examples: - Single: hq_location[eq]:233 - AND: and(hq_location[eq]:233,gender[eq]:female) Operators: eq, neq, gt, gte, lt, lte, in_any, nin_any Default ref: 'entity' name: filter in: query - schema: type: integer format: int32 minimum: 1 maximum: 500 default: 25 description: 'Number of results to return (1-500, default 25)' example: 25 required: false description: 'Number of results to return (1-500, default 25)' name: limit in: query - schema: type: string description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. example: eyJ2IjoxLCJkIjoibmV4dCJ9 required: false description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. name: cursor in: query - schema: type: string pattern: '^(?:-?\w+)?(?:,(?:-?\w+)?)*$' description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. example: name required: false description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. name: sort in: query - schema: type: boolean description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. example: true required: false description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. name: include_total in: query - schema: type: string description: ISO 4217 currency code for monetary field conversion. Defaults to USD. example: EUR required: false description: ISO 4217 currency code for monetary field conversion. Defaults to USD. name: currency in: query - schema: type: string enum: - founder - executive - partner description: >- Restrict to a single relationship role at this entity: `founder`, `executive`, or `partner`. Omit to include everyone. example: founder required: false description: >- Restrict to a single relationship role at this entity: `founder`, `executive`, or `partner`. Omit to include everyone. name: role in: query - schema: type: boolean description: >- Filter by tenure at this entity. `false` = current members, `true` = former members. Omit to include both. example: false required: false description: >- Filter by tenure at this entity. `false` = current members, `true` = former members. Omit to include both. name: is_past in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: Government & NGO team members content: application/json: schema: $ref: '#/components/schemas/EntityTeamResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '400': description: Invalid entity ID or request parameters content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: VALIDATION_ERROR message: The request was malformed or failed validation. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '/data/gov-ngo/{id}/patents': get: operationId: govNgoPatents security: - oauth2: - 'read:entities' - bearerAuth: - 'read:entities' tags: - Government & NGO summary: List government & NGO patents description: >- > ⚠ **PARTIAL IMPLEMENTATION** — Same as `companyPatents`: `patents_count` (`valued_patent_count`) and this list (`high_value_patent_pns`) are different PatSnap-internal populations. (ENG-960) The organization's high-value patents, from PatSnap. parameters: - schema: type: string minLength: 1 format: uuid example: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c description: Stable UUID of the entity. Numeric ids are not accepted. required: true description: Stable UUID of the entity. Numeric ids are not accepted. name: id in: path - schema: type: integer format: int32 minimum: 1 maximum: 500 default: 25 description: 'Number of results to return (1-500, default 25)' example: 25 required: false description: 'Number of results to return (1-500, default 25)' name: limit in: query - schema: type: string description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. example: eyJ2IjoxLCJkIjoibmV4dCJ9 required: false description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. name: cursor in: query - schema: type: string pattern: '^(?:-?\w+)?(?:,(?:-?\w+)?)*$' description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. example: '-value' required: false description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. name: sort in: query - schema: type: boolean description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. example: true required: false description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. name: include_total in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: Government & NGO patents content: application/json: schema: $ref: '#/components/schemas/EntityPatentsResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '400': description: Invalid entity ID or request parameters content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: VALIDATION_ERROR message: The request was malformed or failed validation. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' x-data-status: kind: partial gapId: patents-count-list-size-mismatch-gov-ngo reason: >- Same as `companyPatents`: `patents_count` (`valued_patent_count`) and this list (`high_value_patent_pns`) are different PatSnap-internal populations. observable: >- `patents_count` on the parent entity is usually larger than `GET .../patents`'s `page.total` for the same entity. ticket: ENG-960 /data/transactions: get: operationId: listTransactions security: - oauth2: - 'read:transactions' - bearerAuth: - 'read:transactions' tags: - Transactions summary: List transactions description: >- Lists company funding-related transactions (rounds, equity events, debt, grants). Supports the structured filter expression syntax shared with `/data/entities` and the same `limit` / `offset` / `sort` / `include_total` pagination model. parameters: - schema: type: string description: > Filter expression for transactions. Examples: - Single: date[gte]:2020 - AND: and(date[gte]:2020,amount[gte]:1000000) - OR: or(round_type[eq]:seed,round_type[eq]:series_a) Operators: eq, neq, gt, gte, lt, lte, in_any, nin_any in_all / nin_all are available on repeated related-record filters and on the classification / roles flag sets. Default ref: 'funding' example: 'and(date[gte]:2020,amount[gte]:1000000)' required: false description: > Filter expression for transactions. Examples: - Single: date[gte]:2020 - AND: and(date[gte]:2020,amount[gte]:1000000) - OR: or(round_type[eq]:seed,round_type[eq]:series_a) Operators: eq, neq, gt, gte, lt, lte, in_any, nin_any in_all / nin_all are available on repeated related-record filters and on the classification / roles flag sets. Default ref: 'funding' name: filter in: query - schema: type: integer format: int32 minimum: 1 maximum: 2000 default: 25 description: 'Number of results to return (1-2000, default 25)' example: 25 required: false description: 'Number of results to return (1-2000, default 25)' name: limit in: query - schema: type: string description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. example: eyJ2IjoxLCJkIjoibmV4dCJ9 required: false description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. name: cursor in: query - schema: type: string pattern: '^(?:-?\w+)?(?:,(?:-?\w+)?)*$' description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. example: '-date' required: false description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. name: sort in: query - schema: type: boolean description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. example: true required: false description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. name: include_total in: query - schema: type: string description: ISO 4217 currency code for monetary field conversion. Defaults to USD. example: EUR required: false description: ISO 4217 currency code for monetary field conversion. Defaults to USD. name: currency in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: List of transactions content: application/json: schema: $ref: '#/components/schemas/TransactionListResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '400': description: Invalid request parameters content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: VALIDATION_ERROR message: The request was malformed or failed validation. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '/data/transactions/{id}': get: operationId: getTransaction security: - oauth2: - 'read:transactions' - bearerAuth: - 'read:transactions' tags: - Transactions summary: Get single transaction description: >- Returns one funding-related transaction by its stable Dealroom id — the same row `GET /data/transactions` returns, so list and detail share one shape. Soft-deleted transactions are not found. parameters: - schema: type: string minLength: 1 example: '12345' description: Numeric Dealroom transaction (funding round) ID. required: true description: Numeric Dealroom transaction (funding round) ID. name: id in: path - schema: type: string description: ISO 4217 currency code for monetary field conversion. Defaults to USD. example: EUR required: false description: ISO 4217 currency code for monetary field conversion. Defaults to USD. name: currency in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: Single transaction content: application/json: schema: $ref: '#/components/schemas/TransactionDetailResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '400': description: Invalid transaction ID content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: VALIDATION_ERROR message: The request was malformed or failed validation. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '404': description: Transaction not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: NOT_FOUND message: The requested resource was not found. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' /data/valuations: get: operationId: listValuations security: - oauth2: - 'read:valuations' - bearerAuth: - 'read:valuations' tags: - Valuations summary: List valuations description: >- Returns the cross-entity valuation history. Each row is one company's recorded valuation at its `valued_date`, with the valuation source where available. Use `/data/companies/{id}/valuations` for a single-entity view. parameters: - schema: type: string description: > Filter expression for valuations. Examples: - Single: date[gte]:2020 - AND: and(date[gte]:2020,value[gte]:1000000000) Operators: eq, neq, gt, gte, lt, lte, in_any, nin_any in_all / nin_all are available on repeated related-record filters and on the classification / roles flag sets. Default ref: 'valuation' example: 'and(date[gte]:2020,value[gte]:1000000000)' required: false description: > Filter expression for valuations. Examples: - Single: date[gte]:2020 - AND: and(date[gte]:2020,value[gte]:1000000000) Operators: eq, neq, gt, gte, lt, lte, in_any, nin_any in_all / nin_all are available on repeated related-record filters and on the classification / roles flag sets. Default ref: 'valuation' name: filter in: query - schema: type: integer format: int32 minimum: 1 maximum: 2000 default: 25 description: 'Number of results to return (1-2000, default 25)' example: 25 required: false description: 'Number of results to return (1-2000, default 25)' name: limit in: query - schema: type: string description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. example: eyJ2IjoxLCJkIjoibmV4dCJ9 required: false description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. name: cursor in: query - schema: type: string pattern: '^(?:-?\w+)?(?:,(?:-?\w+)?)*$' description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. example: '-date' required: false description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. name: sort in: query - schema: type: boolean description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. example: true required: false description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. name: include_total in: query - schema: type: string description: ISO 4217 currency code for monetary field conversion. Defaults to USD. example: EUR required: false description: ISO 4217 currency code for monetary field conversion. Defaults to USD. name: currency in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: List of valuations content: application/json: schema: $ref: '#/components/schemas/ValuationListResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '400': description: Invalid request parameters content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: VALIDATION_ERROR message: The request was malformed or failed validation. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '/data/valuations/{id}': get: operationId: getValuation security: - oauth2: - 'read:valuations' - bearerAuth: - 'read:valuations' tags: - Valuations summary: Get single valuation description: >- Returns one valuation by its stable Dealroom id — the same row `GET /data/valuations` returns, so list and detail share one shape. Soft-deleted valuations are not found. parameters: - schema: type: string minLength: 1 example: '1234567' description: Numeric Dealroom valuation ID. required: true description: Numeric Dealroom valuation ID. name: id in: path - schema: type: string description: ISO 4217 currency code for monetary field conversion. Defaults to USD. example: EUR required: false description: ISO 4217 currency code for monetary field conversion. Defaults to USD. name: currency in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: Single valuation content: application/json: schema: $ref: '#/components/schemas/ValuationDetailResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '400': description: Invalid valuation ID content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: VALIDATION_ERROR message: The request was malformed or failed validation. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '404': description: Valuation not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: NOT_FOUND message: The requested resource was not found. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' /data/investors: get: operationId: listInvestors security: - oauth2: - 'read:investors' - bearerAuth: - 'read:investors' tags: - Investors summary: List investors description: >- Returns a paginated list of investors (VCs, corporates, angels, etc.) with optional filters and sorting. All entities with is_investor=true are included. Use portfolio_count_tag and/or portfolio_count_location to compute a portfolio match count (number of investments matching specified tags/locations). When provided, the sort key portfolio_match_count becomes available and match_count appears in the portfolio response object. parameters: - schema: type: string description: > Filter expression for investors using nested syntax. Examples: - Single: total_invested[gte]:1000000 - AND: and(total_invested[gte]:1000000,hq_location[eq]:233) - OR: or(investor_type[eq]:venture_capital,investor_type[eq]:private_equity) Operators: eq, neq, gt, gte, lt, lte, in_any, nin_any in_all / nin_all are available on repeated related-record filters and on the classification / roles flag sets. Default ref: 'entity' (can be omitted for entity filters) example: 'and(total_invested[gte]:1000000,hq_location[eq]:233)' required: false description: > Filter expression for investors using nested syntax. Examples: - Single: total_invested[gte]:1000000 - AND: and(total_invested[gte]:1000000,hq_location[eq]:233) - OR: or(investor_type[eq]:venture_capital,investor_type[eq]:private_equity) Operators: eq, neq, gt, gte, lt, lte, in_any, nin_any in_all / nin_all are available on repeated related-record filters and on the classification / roles flag sets. Default ref: 'entity' (can be omitted for entity filters) name: filter in: query - schema: type: integer format: int32 minimum: 1 maximum: 500 default: 25 description: 'Number of results to return (1-500, default 25)' example: 25 required: false description: 'Number of results to return (1-500, default 25)' name: limit in: query - schema: type: string description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. example: eyJ2IjoxLCJkIjoibmV4dCJ9 required: false description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. name: cursor in: query - schema: type: string pattern: '^(?:-?\w+)?(?:,(?:-?\w+)?)*$' description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. example: '-investments_count' required: false description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. name: sort in: query - schema: type: boolean description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. example: true required: false description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. name: include_total in: query - schema: type: string description: ISO 4217 currency code for monetary field conversion. Defaults to USD. example: EUR required: false description: ISO 4217 currency code for monetary field conversion. Defaults to USD. name: currency in: query - schema: type: string enum: - full - summary default: full description: >- Which row shape to return, echoed as `view` in the response. `full` is the complete row, priced as a full record. `summary` drops the full-only blocks (founders, revenue, traffic, patents, alumni, founded_companies, career, education, portfolio, exits, match, rank) and is priced as a summary record. example: summary required: false description: >- Which row shape to return, echoed as `view` in the response. `full` is the complete row, priced as a full record. `summary` drops the full-only blocks (founders, revenue, traffic, patents, alumni, founded_companies, career, education, portfolio, exits, match, rank) and is priced as a summary record. name: view in: query - schema: type: string pattern: ^\d+(\|\d+)*$ description: >- Pipe-separated tag IDs to count matching portfolio investments. Enables the portfolio_match_count sort key and match_count response field. example: '22680' required: false description: >- Pipe-separated tag IDs to count matching portfolio investments. Enables the portfolio_match_count sort key and match_count response field. name: portfolio_count_tag in: query - schema: type: string pattern: ^\d+(\|\d+)*$ description: >- Pipe-separated location IDs to count matching portfolio investments. Enables the portfolio_match_count sort key and match_count response field. example: '165' required: false description: >- Pipe-separated location IDs to count matching portfolio investments. Enables the portfolio_match_count sort key and match_count response field. name: portfolio_count_location in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: List of investors content: application/json: schema: $ref: '#/components/schemas/InvestorListResponse' examples: person_full: summary: Person — full row value: view: full data: - uuid: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c type: person subtype: null name: Patrick Collison tagline: about: image: dealroom_url: links: linkedin: twitter: angellist: crunchbase: locations: - role: hq city: id: 123 name: state: id: 123 name: country: id: 123 name: continent: id: 123 name: lat: 123 lon: 123 roles: - founder classifications: - startup taxonomy: - id: 123 name: type: sector gender: male signal_rating: 123 investor: rank: 123 types: - id: 123 name: code: stages: - id: 123 name: code: deal_size: min: 123 max: 123 investments: count: 123 total_invested: 123 preferred_round: last_round_date: 2024-03 portfolio: rounds_count: 123 total_valuation: 123 companies: total: 123 sort: '-last_round_date' items: - is_lead: true rounds_count: 123 last_round_date: 2024-03 company: uuid: type: organization subtype: company name: image: dealroom_url: exits: count: 123 total_value: 123 pct: 123 match: companies_count: 123 invested: 123 founded_companies: count: 123 total_funding: 123 career: total: 123 sort: '-is_founder,is_past,-start_date' items: - raw_title: titles: - is_founder: true is_executive: true is_partner: true is_past: true start_date: 2024-03 end_date: 2024-03 company: uuid: type: organization subtype: company name: image: dealroom_url: education: total: 123 sort: '-start_date' items: - degree: id: 123 name: majors: - id: 123 name: start_date: 2024-03 end_date: 2024-03 university: uuid: type: organization subtype: university name: image: dealroom_url: available: - founded_companies added_at: updated_at: page: total: 123 limit: 123 offset: 123 next_cursor: prev_cursor: capped: true tier: anonymous ecosystem: currency: investor_firm_full: summary: Investor firm — full row value: view: full data: - uuid: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c type: organization domain: stripe.com name: Stripe tagline: about: image: dealroom_url: links: website: linkedin: twitter: instagram: angellist: crunchbase: locations: - role: hq city: id: 123 name: state: id: 123 name: country: id: 123 name: continent: id: 123 name: lat: 123 lon: 123 roles: - founder taxonomy: - id: 123 name: type: sector launch_date: 2024-03 closing_date: 2024-03 employees_count: 123 added_at: updated_at: subtype: investor signal_rating: 123 rank: 123 types: - id: 123 name: code: stages: - id: 123 name: code: deal_size: min: 123 max: 123 investments: count: 123 total_invested: 123 preferred_round: last_round_date: 2024-03 portfolio: rounds_count: 123 total_valuation: 123 companies: total: 123 sort: '-last_round_date' items: - is_lead: true rounds_count: 123 last_round_date: 2024-03 company: uuid: type: organization subtype: company name: image: dealroom_url: exits: count: 123 total_value: 123 pct: 123 match: companies_count: 123 invested: 123 investor: null available: - portfolio page: total: 123 limit: 123 offset: 123 next_cursor: prev_cursor: capped: true tier: anonymous ecosystem: currency: person_summary: summary: Person — summary row value: view: summary data: - uuid: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c type: person subtype: null name: Patrick Collison tagline: about: image: dealroom_url: links: linkedin: twitter: angellist: crunchbase: locations: - role: hq city: id: 123 name: state: id: 123 name: country: id: 123 name: continent: id: 123 name: lat: 123 lon: 123 roles: - founder classifications: - startup taxonomy: - id: 123 name: type: sector gender: male signal_rating: 123 investor: types: - id: 123 name: code: stages: - id: 123 name: code: deal_size: min: 123 max: 123 investments: count: 123 total_invested: 123 preferred_round: last_round_date: 2024-03 added_at: updated_at: page: total: 123 limit: 123 offset: 123 next_cursor: prev_cursor: capped: true tier: anonymous ecosystem: currency: investor_firm_summary: summary: Investor firm — summary row value: view: summary data: - uuid: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c type: organization domain: stripe.com name: Stripe tagline: about: image: dealroom_url: links: website: linkedin: twitter: instagram: angellist: crunchbase: locations: - role: hq city: id: 123 name: state: id: 123 name: country: id: 123 name: continent: id: 123 name: lat: 123 lon: 123 roles: - founder taxonomy: - id: 123 name: type: sector launch_date: 2024-03 closing_date: 2024-03 employees_count: 123 added_at: updated_at: subtype: investor signal_rating: 123 types: - id: 123 name: code: stages: - id: 123 name: code: deal_size: min: 123 max: 123 investments: count: 123 total_invested: 123 preferred_round: last_round_date: 2024-03 investor: null page: total: 123 limit: 123 offset: 123 next_cursor: prev_cursor: capped: true tier: anonymous ecosystem: currency: headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '400': description: Invalid request parameters content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: VALIDATION_ERROR message: The request was malformed or failed validation. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' /data/investors/geo: get: operationId: listInvestorGeoPoints security: - oauth2: - 'read:investors' - bearerAuth: - 'read:investors' tags: - Investors summary: List investor map points description: >- Slim investor payload for map rendering (the startup map's dot layer): one point per investor with HQ coordinates and an optional `size_by` metric value. Accepts the same filter syntax as `/investors`. When `size_by` is set, points sort by that dimension descending, so a bounded page keeps the highest-value points; continue with `cursor` from `page.next_cursor`. Investors without usable HQ coordinates are omitted. Monetary values are USD. For per-area counts (the map's choropleth layer), use the aggregate endpoint: GET /analytics/aggregate/investors?metric=count&group_by=map_area. parameters: - schema: type: string description: >- Filter expression for investors — identical syntax and semantics to the `/investors` list filter. example: 'and(total_invested[gte]:1000000,hq_location[eq]:233)' required: false description: >- Filter expression for investors — identical syntax and semantics to the `/investors` list filter. name: filter in: query - schema: type: string enum: - total_funding - employees_count - latest_valuation - total_invested - investments_count - alumni_count - alumni_founders_count description: >- Numeric dimension returned as each point's `value` (for proportional dot sizing). Monetary dimensions are USD. Also sorts the result descending, so a capped response keeps the highest-value points. Omitted → `value` is null and the default sort applies. example: total_funding required: false description: >- Numeric dimension returned as each point's `value` (for proportional dot sizing). Monetary dimensions are USD. Also sorts the result descending, so a capped response keeps the highest-value points. Omitted → `value` is null and the default sort applies. name: size_by in: query - schema: type: integer format: int32 minimum: 1 maximum: 5000 default: 5000 description: 'Number of results to return (1-5000, default 5000)' example: 5000 required: false description: 'Number of results to return (1-5000, default 5000)' name: limit in: query - schema: type: string description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. example: eyJ2IjoxLCJkIjoibmV4dCJ9 required: false description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. name: cursor in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: Investor map points content: application/json: schema: $ref: '#/components/schemas/InvestorGeoResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '400': description: Invalid request parameters content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: VALIDATION_ERROR message: The request was malformed or failed validation. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '/data/investors/{id}': get: operationId: getInvestor security: - oauth2: - 'read:investors' - bearerAuth: - 'read:investors' tags: - Investors summary: Get single investor description: >- Returns the full investor profile by UUID (numeric IDs are not accepted). Includes investor type, stages, deal-size ranges, portfolio summary (top companies, total rounds, size of the rounds participated in), and the underlying entity record. Monetary fields convert to the requested `?currency=`. parameters: - schema: type: string minLength: 1 format: uuid example: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c description: Stable UUID of the entity. Numeric ids are not accepted. required: true description: Stable UUID of the entity. Numeric ids are not accepted. name: id in: path - schema: type: string description: ISO 4217 currency code for monetary field conversion. Defaults to USD. example: EUR required: false description: ISO 4217 currency code for monetary field conversion. Defaults to USD. name: currency in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: Single investor content: application/json: schema: $ref: '#/components/schemas/InvestorDetailResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '404': description: Investor not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: NOT_FOUND message: The requested resource was not found. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '/data/investors/{id}/portfolio': get: operationId: investorPortfolio security: - oauth2: - 'read:investors' - bearerAuth: - 'read:investors' tags: - Investors summary: List portfolio companies description: >- Portfolio companies this investor has backed, de-duplicated to one row per company with aggregate involvement. Includes investments not attributed to any disclosed round (`rounds_count: 0`). Sort by most recent round (default) or latest company valuation, and filter the companies with the same entity `?filter[...]` DSL as `/data/companies`. parameters: - schema: type: string minLength: 1 format: uuid example: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c description: Stable UUID of the entity. Numeric ids are not accepted. required: true description: Stable UUID of the entity. Numeric ids are not accepted. name: id in: path - schema: type: string description: > Filter expression for the portfolio companies — same syntax and keys as /data/companies. Operators: eq, neq, gt, gte, lt, lte, in_any, nin_any Default ref: 'entity' example: 'launch_date[gte]:2015' required: false description: | Filter expression for the portfolio companies — same syntax and keys as /data/companies. Operators: eq, neq, gt, gte, lt, lte, in_any, nin_any Default ref: 'entity' name: filter in: query - schema: type: integer format: int32 minimum: 1 maximum: 500 default: 25 description: 'Number of results to return (1-500, default 25)' example: 25 required: false description: 'Number of results to return (1-500, default 25)' name: limit in: query - schema: type: string description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. example: eyJ2IjoxLCJkIjoibmV4dCJ9 required: false description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. name: cursor in: query - schema: type: string pattern: '^(?:-?\w+)?(?:,(?:-?\w+)?)*$' description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. example: '-latest_valuation' required: false description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. name: sort in: query - schema: type: boolean description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. example: true required: false description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. name: include_total in: query - schema: type: string description: ISO 4217 currency code for monetary field conversion. Defaults to USD. example: EUR required: false description: ISO 4217 currency code for monetary field conversion. Defaults to USD. name: currency in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: Investor portfolio content: application/json: schema: $ref: '#/components/schemas/EntityInvestmentsResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '400': description: Invalid entity ID content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: VALIDATION_ERROR message: The request was malformed or failed validation. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '/data/investors/{id}/funds': get: operationId: investorFunds security: - oauth2: - 'read:investors' - bearerAuth: - 'read:investors' tags: - Investors summary: List funds description: >- The individual fund vehicles this investor firm has raised (e.g. "Fund III", $200M, 2024), newest first. `amount` is the fund size in the requested `?currency=` (default USD); `amount_source` carries the original as-stored amount and native currency. parameters: - schema: type: string minLength: 1 format: uuid example: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c description: Stable UUID of the entity. Numeric ids are not accepted. required: true description: Stable UUID of the entity. Numeric ids are not accepted. name: id in: path - schema: type: string description: | Filter expression for the raised funds — same syntax and keys as /data/funds. Examples: - Single: fund_type[eq]:vc - AND: and(is_closed[eq]:true,amount[gte]:100000000) Operators: eq, neq, gt, gte, lt, lte, in_any, nin_any Default ref: 'funds' example: 'is_closed[eq]:true' required: false description: | Filter expression for the raised funds — same syntax and keys as /data/funds. Examples: - Single: fund_type[eq]:vc - AND: and(is_closed[eq]:true,amount[gte]:100000000) Operators: eq, neq, gt, gte, lt, lte, in_any, nin_any Default ref: 'funds' name: filter in: query - schema: type: integer format: int32 minimum: 1 maximum: 500 default: 25 description: 'Number of results to return (1-500, default 25)' example: 25 required: false description: 'Number of results to return (1-500, default 25)' name: limit in: query - schema: type: string description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. example: eyJ2IjoxLCJkIjoibmV4dCJ9 required: false description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. name: cursor in: query - schema: type: string pattern: '^(?:-?\w+)?(?:,(?:-?\w+)?)*$' description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. example: '-announced_date' required: false description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. name: sort in: query - schema: type: boolean description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. example: true required: false description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. name: include_total in: query - schema: type: string description: ISO 4217 currency code for monetary field conversion. Defaults to USD. example: EUR required: false description: ISO 4217 currency code for monetary field conversion. Defaults to USD. name: currency in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: Funds raised by this investor content: application/json: schema: $ref: '#/components/schemas/EntityFundsResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '400': description: Invalid entity ID content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: VALIDATION_ERROR message: The request was malformed or failed validation. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '/data/investors/{id}/lp-funds': get: operationId: investorLpFunds security: - oauth2: - 'read:investors' - bearerAuth: - 'read:investors' tags: - Investors summary: List LP fund positions description: >- Investor firms whose known limited partners include this entity. Each row is an investor-firm entity (not a fund vehicle) with its investor type names. parameters: - schema: type: string minLength: 1 format: uuid example: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c description: Stable UUID of the entity. Numeric ids are not accepted. required: true description: Stable UUID of the entity. Numeric ids are not accepted. name: id in: path - schema: type: string description: | Filter expression for the investor firms — same syntax and keys as /data/investors. Operators: eq, neq, gt, gte, lt, lte, in_any, nin_any Default ref: 'entity' example: 'investor_type[eq]:venture_capital' required: false description: | Filter expression for the investor firms — same syntax and keys as /data/investors. Operators: eq, neq, gt, gte, lt, lte, in_any, nin_any Default ref: 'entity' name: filter in: query - schema: type: integer format: int32 minimum: 1 maximum: 500 default: 25 description: 'Number of results to return (1-500, default 25)' example: 25 required: false description: 'Number of results to return (1-500, default 25)' name: limit in: query - schema: type: string description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. example: eyJ2IjoxLCJkIjoibmV4dCJ9 required: false description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. name: cursor in: query - schema: type: boolean description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. example: true required: false description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. name: include_total in: query - schema: type: string description: ISO 4217 currency code for monetary field conversion. Defaults to USD. example: EUR required: false description: ISO 4217 currency code for monetary field conversion. Defaults to USD. name: currency in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: Investor firms with this entity as a known LP content: application/json: schema: $ref: '#/components/schemas/EntityLpFundsResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '400': description: Invalid entity ID content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: VALIDATION_ERROR message: The request was malformed or failed validation. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '/data/investors/{id}/team': get: operationId: investorTeam security: - oauth2: - 'read:investors' - 'read:people' - bearerAuth: - 'read:investors' - 'read:people' tags: - Investors summary: List investor team members description: >- People associated with the investor firm through the people_entities relationship (partners, executives, and other team members). Supports the same person filter DSL as `/data/people`, plus `role` and `is_past` relationship filters. Exposed on the investor lens because investor firms are not always `organization_subtype = 'company'`, so this is their guaranteed team path. parameters: - schema: type: string minLength: 1 format: uuid example: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c description: Stable UUID of the entity. Numeric ids are not accepted. required: true description: Stable UUID of the entity. Numeric ids are not accepted. name: id in: path - schema: type: string description: | Filter expression for team members — same syntax and keys as /data/people. Examples: - Single: hq_location[eq]:233 - AND: and(hq_location[eq]:233,gender[eq]:female) Operators: eq, neq, gt, gte, lt, lte, in_any, nin_any Default ref: 'entity' example: 'gender[eq]:female' required: false description: | Filter expression for team members — same syntax and keys as /data/people. Examples: - Single: hq_location[eq]:233 - AND: and(hq_location[eq]:233,gender[eq]:female) Operators: eq, neq, gt, gte, lt, lte, in_any, nin_any Default ref: 'entity' name: filter in: query - schema: type: integer format: int32 minimum: 1 maximum: 500 default: 25 description: 'Number of results to return (1-500, default 25)' example: 25 required: false description: 'Number of results to return (1-500, default 25)' name: limit in: query - schema: type: string description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. example: eyJ2IjoxLCJkIjoibmV4dCJ9 required: false description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. name: cursor in: query - schema: type: string pattern: '^(?:-?\w+)?(?:,(?:-?\w+)?)*$' description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. example: name required: false description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. name: sort in: query - schema: type: boolean description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. example: true required: false description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. name: include_total in: query - schema: type: string description: ISO 4217 currency code for monetary field conversion. Defaults to USD. example: EUR required: false description: ISO 4217 currency code for monetary field conversion. Defaults to USD. name: currency in: query - schema: type: string enum: - founder - executive - partner description: >- Restrict to a single relationship role at this entity: `founder`, `executive`, or `partner`. Omit to include everyone. example: founder required: false description: >- Restrict to a single relationship role at this entity: `founder`, `executive`, or `partner`. Omit to include everyone. name: role in: query - schema: type: boolean description: >- Filter by tenure at this entity. `false` = current members, `true` = former members. Omit to include both. example: false required: false description: >- Filter by tenure at this entity. `false` = current members, `true` = former members. Omit to include both. name: is_past in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: Investor team members content: application/json: schema: $ref: '#/components/schemas/EntityTeamResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '400': description: Invalid entity ID or request parameters content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: VALIDATION_ERROR message: The request was malformed or failed validation. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '/data/investors/{id}/similar': get: operationId: investorSimilar security: - oauth2: - 'read:investors' - bearerAuth: - 'read:investors' tags: - Investors summary: List similar investors description: >- Investors ranked by similarity to this investor, scored by weighted overlap of their investment-portfolio tags — the industries and sectors of the companies each has funded (the legacy investment_categories / investment_sectors signals). Force-sorted by score; supports the full investor filter DSL to narrow the candidate pool. Pages by `cursor` (from `page.next_cursor`) within the first 1000 ranked results. parameters: - schema: type: string minLength: 1 format: uuid example: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c description: Stable UUID of the entity. Numeric ids are not accepted. required: true description: Stable UUID of the entity. Numeric ids are not accepted. name: id in: path - schema: type: string description: > Filter expression for investors using nested syntax. Examples: - Single: total_invested[gte]:1000000 - AND: and(total_invested[gte]:1000000,hq_location[eq]:233) - OR: or(investor_type[eq]:venture_capital,investor_type[eq]:private_equity) Operators: eq, neq, gt, gte, lt, lte, in_any, nin_any in_all / nin_all are available on repeated related-record filters and on the classification / roles flag sets. Default ref: 'entity' (can be omitted for entity filters) example: 'and(total_invested[gte]:1000000,hq_location[eq]:233)' required: false description: > Filter expression for investors using nested syntax. Examples: - Single: total_invested[gte]:1000000 - AND: and(total_invested[gte]:1000000,hq_location[eq]:233) - OR: or(investor_type[eq]:venture_capital,investor_type[eq]:private_equity) Operators: eq, neq, gt, gte, lt, lte, in_any, nin_any in_all / nin_all are available on repeated related-record filters and on the classification / roles flag sets. Default ref: 'entity' (can be omitted for entity filters) name: filter in: query - schema: type: integer format: int32 minimum: 1 maximum: 500 default: 25 description: 'Number of results to return (1-500, default 25)' example: 25 required: false description: 'Number of results to return (1-500, default 25)' name: limit in: query - schema: type: string description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. example: eyJ2IjoxLCJkIjoibmV4dCJ9 required: false description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. name: cursor in: query - schema: type: string pattern: '^(?:-?\w+)?(?:,(?:-?\w+)?)*$' description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. example: '-investments_count' required: false description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. name: sort in: query - schema: type: boolean description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. example: true required: false description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. name: include_total in: query - schema: type: string description: ISO 4217 currency code for monetary field conversion. Defaults to USD. example: EUR required: false description: ISO 4217 currency code for monetary field conversion. Defaults to USD. name: currency in: query - schema: type: string enum: - full - summary default: full description: >- Which row shape to return, echoed as `view` in the response. `full` is the complete row, priced as a full record. `summary` drops the full-only blocks (founders, revenue, traffic, patents, alumni, founded_companies, career, education, portfolio, exits, match, rank) and is priced as a summary record. example: summary required: false description: >- Which row shape to return, echoed as `view` in the response. `full` is the complete row, priced as a full record. `summary` drops the full-only blocks (founders, revenue, traffic, patents, alumni, founded_companies, career, education, portfolio, exits, match, rank) and is priced as a summary record. name: view in: query - schema: type: string pattern: ^\d+(\|\d+)*$ description: >- Pipe-separated tag IDs to count matching portfolio investments. Enables the portfolio_match_count sort key and match_count response field. example: '22680' required: false description: >- Pipe-separated tag IDs to count matching portfolio investments. Enables the portfolio_match_count sort key and match_count response field. name: portfolio_count_tag in: query - schema: type: string pattern: ^\d+(\|\d+)*$ description: >- Pipe-separated location IDs to count matching portfolio investments. Enables the portfolio_match_count sort key and match_count response field. example: '165' required: false description: >- Pipe-separated location IDs to count matching portfolio investments. Enables the portfolio_match_count sort key and match_count response field. name: portfolio_count_location in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: Similar investors content: application/json: schema: $ref: '#/components/schemas/InvestorListResponse' examples: person_full: summary: Person — full row value: view: full data: - uuid: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c type: person subtype: null name: Patrick Collison tagline: about: image: dealroom_url: links: linkedin: twitter: angellist: crunchbase: locations: - role: hq city: id: 123 name: state: id: 123 name: country: id: 123 name: continent: id: 123 name: lat: 123 lon: 123 roles: - founder classifications: - startup taxonomy: - id: 123 name: type: sector gender: male signal_rating: 123 investor: rank: 123 types: - id: 123 name: code: stages: - id: 123 name: code: deal_size: min: 123 max: 123 investments: count: 123 total_invested: 123 preferred_round: last_round_date: 2024-03 portfolio: rounds_count: 123 total_valuation: 123 companies: total: 123 sort: '-last_round_date' items: - is_lead: true rounds_count: 123 last_round_date: 2024-03 company: uuid: type: organization subtype: company name: image: dealroom_url: exits: count: 123 total_value: 123 pct: 123 match: companies_count: 123 invested: 123 founded_companies: count: 123 total_funding: 123 career: total: 123 sort: '-is_founder,is_past,-start_date' items: - raw_title: titles: - is_founder: true is_executive: true is_partner: true is_past: true start_date: 2024-03 end_date: 2024-03 company: uuid: type: organization subtype: company name: image: dealroom_url: education: total: 123 sort: '-start_date' items: - degree: id: 123 name: majors: - id: 123 name: start_date: 2024-03 end_date: 2024-03 university: uuid: type: organization subtype: university name: image: dealroom_url: available: - founded_companies added_at: updated_at: page: total: 123 limit: 123 offset: 123 next_cursor: prev_cursor: capped: true tier: anonymous ecosystem: currency: investor_firm_full: summary: Investor firm — full row value: view: full data: - uuid: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c type: organization domain: stripe.com name: Stripe tagline: about: image: dealroom_url: links: website: linkedin: twitter: instagram: angellist: crunchbase: locations: - role: hq city: id: 123 name: state: id: 123 name: country: id: 123 name: continent: id: 123 name: lat: 123 lon: 123 roles: - founder taxonomy: - id: 123 name: type: sector launch_date: 2024-03 closing_date: 2024-03 employees_count: 123 added_at: updated_at: subtype: investor signal_rating: 123 rank: 123 types: - id: 123 name: code: stages: - id: 123 name: code: deal_size: min: 123 max: 123 investments: count: 123 total_invested: 123 preferred_round: last_round_date: 2024-03 portfolio: rounds_count: 123 total_valuation: 123 companies: total: 123 sort: '-last_round_date' items: - is_lead: true rounds_count: 123 last_round_date: 2024-03 company: uuid: type: organization subtype: company name: image: dealroom_url: exits: count: 123 total_value: 123 pct: 123 match: companies_count: 123 invested: 123 investor: null available: - portfolio page: total: 123 limit: 123 offset: 123 next_cursor: prev_cursor: capped: true tier: anonymous ecosystem: currency: person_summary: summary: Person — summary row value: view: summary data: - uuid: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c type: person subtype: null name: Patrick Collison tagline: about: image: dealroom_url: links: linkedin: twitter: angellist: crunchbase: locations: - role: hq city: id: 123 name: state: id: 123 name: country: id: 123 name: continent: id: 123 name: lat: 123 lon: 123 roles: - founder classifications: - startup taxonomy: - id: 123 name: type: sector gender: male signal_rating: 123 investor: types: - id: 123 name: code: stages: - id: 123 name: code: deal_size: min: 123 max: 123 investments: count: 123 total_invested: 123 preferred_round: last_round_date: 2024-03 added_at: updated_at: page: total: 123 limit: 123 offset: 123 next_cursor: prev_cursor: capped: true tier: anonymous ecosystem: currency: investor_firm_summary: summary: Investor firm — summary row value: view: summary data: - uuid: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c type: organization domain: stripe.com name: Stripe tagline: about: image: dealroom_url: links: website: linkedin: twitter: instagram: angellist: crunchbase: locations: - role: hq city: id: 123 name: state: id: 123 name: country: id: 123 name: continent: id: 123 name: lat: 123 lon: 123 roles: - founder taxonomy: - id: 123 name: type: sector launch_date: 2024-03 closing_date: 2024-03 employees_count: 123 added_at: updated_at: subtype: investor signal_rating: 123 types: - id: 123 name: code: stages: - id: 123 name: code: deal_size: min: 123 max: 123 investments: count: 123 total_invested: 123 preferred_round: last_round_date: 2024-03 investor: null page: total: 123 limit: 123 offset: 123 next_cursor: prev_cursor: capped: true tier: anonymous ecosystem: currency: headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '400': description: >- Invalid request — e.g. malformed entity id, or a page beyond the similarity window cap (1000) content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: VALIDATION_ERROR message: The request was malformed or failed validation. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '404': description: Anchor entity not found in this collection content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: NOT_FOUND message: The requested resource was not found. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' /data/funds: get: operationId: listFunds security: - oauth2: - 'read:entities' - bearerAuth: - 'read:entities' tags: - Funds summary: List funds description: >- Returns a paginated list of funds — the capital vehicles investor firms raise — newest first. Filter via the `filter` expression (`fund_type`, `is_closed`, `amount`, `year`, `investor_id`). Each fund links to its manager (GP). `amount` is the fund size in the requested `?currency=` (default USD); `amount_source` carries the original as-stored amount and its native currency. parameters: - schema: type: string description: | Filter expression for funds (the capital vehicles investor firms raise). Examples: - Single: fund_type[eq]:Venture Capital - AND: and(fund_type[eq]:Venture Capital,year[gte]:2020) - OR: or(fund_type[eq]:Venture Capital,fund_type[eq]:Growth Equity) Filters: fund_type, is_closed, amount (native fund size, not currency-converted), year (vintage), investor_id (manager/GP entity UUID). Operators: eq, neq, gt, gte, lt, lte, in_any, nin_any Default ref: 'funds' example: 'and(fund_type[eq]:Venture Capital,year[gte]:2020)' required: false description: | Filter expression for funds (the capital vehicles investor firms raise). Examples: - Single: fund_type[eq]:Venture Capital - AND: and(fund_type[eq]:Venture Capital,year[gte]:2020) - OR: or(fund_type[eq]:Venture Capital,fund_type[eq]:Growth Equity) Filters: fund_type, is_closed, amount (native fund size, not currency-converted), year (vintage), investor_id (manager/GP entity UUID). Operators: eq, neq, gt, gte, lt, lte, in_any, nin_any Default ref: 'funds' name: filter in: query - schema: type: integer format: int32 minimum: 1 maximum: 2000 default: 25 description: 'Number of results to return (1-2000, default 25)' example: 25 required: false description: 'Number of results to return (1-2000, default 25)' name: limit in: query - schema: type: string description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. example: eyJ2IjoxLCJkIjoibmV4dCJ9 required: false description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. name: cursor in: query - schema: type: string pattern: '^(?:-?\w+)?(?:,(?:-?\w+)?)*$' description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. example: '-announced_date' required: false description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. name: sort in: query - schema: type: boolean description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. example: true required: false description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. name: include_total in: query - schema: type: string description: ISO 4217 currency code for monetary field conversion. Defaults to USD. example: EUR required: false description: ISO 4217 currency code for monetary field conversion. Defaults to USD. name: currency in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: List of funds content: application/json: schema: $ref: '#/components/schemas/FundListResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '400': description: Invalid request parameters content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: VALIDATION_ERROR message: The request was malformed or failed validation. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '/data/funds/{id}': get: operationId: getFund security: - oauth2: - 'read:entities' - bearerAuth: - 'read:entities' tags: - Funds summary: Get single fund description: >- Returns one fund by its stable Dealroom fund id, including the manager (GP) that raised it. `amount` is the fund size in the requested `?currency=` (default USD); `amount_source` carries the original native amount. parameters: - schema: type: string minLength: 1 example: '901234' description: Numeric Dealroom fund ID. required: true description: Numeric Dealroom fund ID. name: id in: path - schema: type: string description: ISO 4217 currency code for monetary field conversion. Defaults to USD. example: EUR required: false description: ISO 4217 currency code for monetary field conversion. Defaults to USD. name: currency in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: Single fund content: application/json: schema: $ref: '#/components/schemas/FundDetailResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '400': description: Invalid fund ID content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: VALIDATION_ERROR message: The request was malformed or failed validation. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '404': description: Fund not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: NOT_FOUND message: The requested resource was not found. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' /data/founders: get: operationId: listFounders security: - oauth2: - 'read:founders' - bearerAuth: - 'read:founders' tags: - Founders summary: List founders description: >- Returns a paginated list of founders (entities with is_founder=true) with company associations, education history, and tags (including professional backgrounds). Supports the same filter syntax as other endpoints. parameters: - schema: type: string description: > Filter expression for founders using nested syntax. Examples: - Single: classification[in_any]:super_founder - AND: and(hq_location[eq]:233,classification[in_any]:promising_founder) Operators: eq, neq, gt, gte, lt, lte, in_any, nin_any in_all / nin_all are available on repeated related-record filters and on the classification / roles flag sets. Default ref: 'entity' (can be omitted for entity filters) example: 'and(classification[in_any]:super_founder,hq_location[eq]:233)' required: false description: > Filter expression for founders using nested syntax. Examples: - Single: classification[in_any]:super_founder - AND: and(hq_location[eq]:233,classification[in_any]:promising_founder) Operators: eq, neq, gt, gte, lt, lte, in_any, nin_any in_all / nin_all are available on repeated related-record filters and on the classification / roles flag sets. Default ref: 'entity' (can be omitted for entity filters) name: filter in: query - schema: type: integer format: int32 minimum: 1 maximum: 500 default: 25 description: 'Number of results to return (1-500, default 25)' example: 25 required: false description: 'Number of results to return (1-500, default 25)' name: limit in: query - schema: type: string description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. example: eyJ2IjoxLCJkIjoibmV4dCJ9 required: false description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. name: cursor in: query - schema: type: string pattern: '^(?:-?\w+)?(?:,(?:-?\w+)?)*$' description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. example: '-signal_rating' required: false description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. name: sort in: query - schema: type: boolean description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. example: true required: false description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. name: include_total in: query - schema: type: string description: ISO 4217 currency code for monetary field conversion. Defaults to USD. example: EUR required: false description: ISO 4217 currency code for monetary field conversion. Defaults to USD. name: currency in: query - schema: type: string enum: - full - summary default: full description: >- Which row shape to return, echoed as `view` in the response. `full` is the complete row, priced as a full record. `summary` drops the full-only blocks (founders, revenue, traffic, patents, alumni, founded_companies, career, education, portfolio, exits, match, rank) and is priced as a summary record. example: summary required: false description: >- Which row shape to return, echoed as `view` in the response. `full` is the complete row, priced as a full record. `summary` drops the full-only blocks (founders, revenue, traffic, patents, alumni, founded_companies, career, education, portfolio, exits, match, rank) and is priced as a summary record. name: view in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: List of founders content: application/json: schema: $ref: '#/components/schemas/FounderListResponse' examples: founder_full: summary: Founder — full row value: view: full data: - uuid: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c type: person subtype: null name: Patrick Collison tagline: about: image: dealroom_url: links: linkedin: twitter: angellist: crunchbase: locations: - role: hq city: id: 123 name: state: id: 123 name: country: id: 123 name: continent: id: 123 name: lat: 123 lon: 123 roles: - founder classifications: - startup taxonomy: - id: 123 name: type: sector gender: male signal_rating: 123 investor: rank: 123 types: - id: 123 name: code: stages: - id: 123 name: code: deal_size: min: 123 max: 123 investments: count: 123 total_invested: 123 preferred_round: last_round_date: 2024-03 portfolio: rounds_count: 123 total_valuation: 123 companies: total: 123 sort: '-last_round_date' items: - is_lead: true rounds_count: 123 last_round_date: 2024-03 company: uuid: type: organization subtype: company name: image: dealroom_url: exits: count: 123 total_value: 123 pct: 123 match: companies_count: 123 invested: 123 founded_companies: count: 123 total_funding: 123 career: total: 123 sort: '-is_founder,is_past,-start_date' items: - raw_title: titles: - is_founder: true is_executive: true is_partner: true is_past: true start_date: 2024-03 end_date: 2024-03 company: uuid: type: organization subtype: company name: image: dealroom_url: education: total: 123 sort: '-start_date' items: - degree: id: 123 name: majors: - id: 123 name: start_date: 2024-03 end_date: 2024-03 university: uuid: type: organization subtype: university name: image: dealroom_url: available: - founded_companies added_at: updated_at: page: total: 123 limit: 123 offset: 123 next_cursor: prev_cursor: capped: true tier: anonymous ecosystem: currency: EUR person_summary: summary: Person — summary row value: view: summary data: - uuid: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c type: person subtype: null name: Patrick Collison tagline: about: image: dealroom_url: links: linkedin: twitter: angellist: crunchbase: locations: - role: hq city: id: 123 name: state: id: 123 name: country: id: 123 name: continent: id: 123 name: lat: 123 lon: 123 roles: - founder classifications: - startup taxonomy: - id: 123 name: type: sector gender: male signal_rating: 123 investor: types: - id: 123 name: code: stages: - id: 123 name: code: deal_size: min: 123 max: 123 investments: count: 123 total_invested: 123 preferred_round: last_round_date: 2024-03 added_at: updated_at: page: total: 123 limit: 123 offset: 123 next_cursor: prev_cursor: capped: true tier: anonymous ecosystem: currency: EUR headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '400': description: Invalid request parameters content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: VALIDATION_ERROR message: The request was malformed or failed validation. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '/data/founders/{id}': get: operationId: getFounder security: - oauth2: - 'read:founders' - bearerAuth: - 'read:founders' tags: - Founders summary: Get single founder description: >- Returns the full founder profile by UUID (numeric IDs are not accepted). Includes biographic details, founder badges (super founder, serial founder, etc.), professional history, education, and links to founded companies. parameters: - schema: type: string minLength: 1 format: uuid example: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c description: Stable UUID of the entity. Numeric ids are not accepted. required: true description: Stable UUID of the entity. Numeric ids are not accepted. name: id in: path - $ref: '#/components/parameters/ApiVersion' responses: '200': description: Single founder content: application/json: schema: $ref: '#/components/schemas/FounderDetailResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '404': description: Founder not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: NOT_FOUND message: The requested resource was not found. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '/data/founders/{id}/founded-companies': get: operationId: founderFoundedCompanies security: - oauth2: - 'read:founders' - bearerAuth: - 'read:founders' tags: - Founders summary: List founded companies description: >- The companies (and other organizations) this person founded — a preset over the person career relationship filtered to the founder role. Same row shape as `/data/people/{id}/career`, newest tenure first. Supports the same entity `?filter[...]` DSL as `/data/companies`. parameters: - schema: type: string minLength: 1 format: uuid example: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c description: Stable UUID of the entity. Numeric ids are not accepted. required: true description: Stable UUID of the entity. Numeric ids are not accepted. name: id in: path - schema: type: string description: > Filter expression for the founded organizations — same syntax and keys as /data/companies. Operators: eq, neq, gt, gte, lt, lte, in_any, nin_any Default ref: 'entity' example: 'launch_date[gte]:2015' required: false description: > Filter expression for the founded organizations — same syntax and keys as /data/companies. Operators: eq, neq, gt, gte, lt, lte, in_any, nin_any Default ref: 'entity' name: filter in: query - schema: type: integer format: int32 minimum: 1 maximum: 500 default: 25 description: 'Number of results to return (1-500, default 25)' example: 25 required: false description: 'Number of results to return (1-500, default 25)' name: limit in: query - schema: type: string description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. example: eyJ2IjoxLCJkIjoibmV4dCJ9 required: false description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. name: cursor in: query - schema: type: string pattern: '^(?:-?\w+)?(?:,(?:-?\w+)?)*$' description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. example: name required: false description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. name: sort in: query - schema: type: boolean description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. example: true required: false description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. name: include_total in: query - schema: type: string description: ISO 4217 currency code for monetary field conversion. Defaults to USD. example: EUR required: false description: ISO 4217 currency code for monetary field conversion. Defaults to USD. name: currency in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: Companies founded by this person content: application/json: schema: $ref: '#/components/schemas/PersonCareerResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '400': description: Invalid entity ID content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: VALIDATION_ERROR message: The request was malformed or failed validation. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' /data/people: get: operationId: listPeople security: - oauth2: - 'read:people' - bearerAuth: - 'read:people' tags: - People summary: List people description: >- Returns a paginated list of all person entities (entity_type='person'), including company associations, education history, and tags (including professional backgrounds). Supports the same filter syntax as other endpoints. parameters: - schema: type: string description: > Filter expression for people using nested syntax. Examples: - Single: hq_location[eq]:233 - AND: and(hq_location[eq]:233,classification[in_any]:super_founder) Operators: eq, neq, gt, gte, lt, lte, in_any, nin_any in_all / nin_all are available on repeated related-record filters and on the classification / roles flag sets. Default ref: 'entity' (can be omitted for entity filters) example: 'hq_location[eq]:233' required: false description: > Filter expression for people using nested syntax. Examples: - Single: hq_location[eq]:233 - AND: and(hq_location[eq]:233,classification[in_any]:super_founder) Operators: eq, neq, gt, gte, lt, lte, in_any, nin_any in_all / nin_all are available on repeated related-record filters and on the classification / roles flag sets. Default ref: 'entity' (can be omitted for entity filters) name: filter in: query - schema: type: integer format: int32 minimum: 1 maximum: 500 default: 25 description: 'Number of results to return (1-500, default 25)' example: 25 required: false description: 'Number of results to return (1-500, default 25)' name: limit in: query - schema: type: string description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. example: eyJ2IjoxLCJkIjoibmV4dCJ9 required: false description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. name: cursor in: query - schema: type: string pattern: '^(?:-?\w+)?(?:,(?:-?\w+)?)*$' description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. example: '-signal_rating' required: false description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. name: sort in: query - schema: type: boolean description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. example: true required: false description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. name: include_total in: query - schema: type: string description: ISO 4217 currency code for monetary field conversion. Defaults to USD. example: EUR required: false description: ISO 4217 currency code for monetary field conversion. Defaults to USD. name: currency in: query - schema: type: string enum: - full - summary default: full description: >- Which row shape to return, echoed as `view` in the response. `full` is the complete row, priced as a full record. `summary` drops the full-only blocks (founders, revenue, traffic, patents, alumni, founded_companies, career, education, portfolio, exits, match, rank) and is priced as a summary record. example: summary required: false description: >- Which row shape to return, echoed as `view` in the response. `full` is the complete row, priced as a full record. `summary` drops the full-only blocks (founders, revenue, traffic, patents, alumni, founded_companies, career, education, portfolio, exits, match, rank) and is priced as a summary record. name: view in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: List of people content: application/json: schema: $ref: '#/components/schemas/PersonListResponse' examples: person_full: summary: Person — full row value: view: full data: - uuid: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c type: person subtype: null name: Patrick Collison tagline: about: image: dealroom_url: links: linkedin: twitter: angellist: crunchbase: locations: - role: hq city: id: 123 name: state: id: 123 name: country: id: 123 name: continent: id: 123 name: lat: 123 lon: 123 roles: - founder classifications: - startup taxonomy: - id: 123 name: type: sector gender: male signal_rating: 123 investor: rank: 123 types: - id: 123 name: code: stages: - id: 123 name: code: deal_size: min: 123 max: 123 investments: count: 123 total_invested: 123 preferred_round: last_round_date: 2024-03 portfolio: rounds_count: 123 total_valuation: 123 companies: total: 123 sort: '-last_round_date' items: - is_lead: true rounds_count: 123 last_round_date: 2024-03 company: uuid: type: organization subtype: company name: image: dealroom_url: exits: count: 123 total_value: 123 pct: 123 match: companies_count: 123 invested: 123 founded_companies: count: 123 total_funding: 123 career: total: 123 sort: '-is_founder,is_past,-start_date' items: - raw_title: titles: - is_founder: true is_executive: true is_partner: true is_past: true start_date: 2024-03 end_date: 2024-03 company: uuid: type: organization subtype: company name: image: dealroom_url: education: total: 123 sort: '-start_date' items: - degree: id: 123 name: majors: - id: 123 name: start_date: 2024-03 end_date: 2024-03 university: uuid: type: organization subtype: university name: image: dealroom_url: available: - founded_companies added_at: updated_at: page: total: 123 limit: 123 offset: 123 next_cursor: prev_cursor: currency: EUR person_summary: summary: Person — summary row value: view: summary data: - uuid: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c type: person subtype: null name: Patrick Collison tagline: about: image: dealroom_url: links: linkedin: twitter: angellist: crunchbase: locations: - role: hq city: id: 123 name: state: id: 123 name: country: id: 123 name: continent: id: 123 name: lat: 123 lon: 123 roles: - founder classifications: - startup taxonomy: - id: 123 name: type: sector gender: male signal_rating: 123 investor: types: - id: 123 name: code: stages: - id: 123 name: code: deal_size: min: 123 max: 123 investments: count: 123 total_invested: 123 preferred_round: last_round_date: 2024-03 added_at: updated_at: page: total: 123 limit: 123 offset: 123 next_cursor: prev_cursor: currency: EUR headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '400': description: Invalid request parameters content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: VALIDATION_ERROR message: The request was malformed or failed validation. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '/data/people/{id}': get: operationId: getPerson security: - oauth2: - 'read:people' - bearerAuth: - 'read:people' tags: - People summary: Get single person description: >- Returns the full person profile by UUID (numeric IDs are not accepted). Covers all person entities (founders, executives, angels, and others). Includes biographic details, professional history, education, and background tags. parameters: - schema: type: string minLength: 1 format: uuid example: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c description: Stable UUID of the entity. Numeric ids are not accepted. required: true description: Stable UUID of the entity. Numeric ids are not accepted. name: id in: path - $ref: '#/components/parameters/ApiVersion' responses: '200': description: Single person content: application/json: schema: $ref: '#/components/schemas/PersonDetailResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '404': description: Person not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: NOT_FOUND message: The requested resource was not found. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '/data/people/{id}/career': get: operationId: personCareer security: - oauth2: - 'read:people' - bearerAuth: - 'read:people' tags: - People summary: List career history description: >- The companies and other organizations this person is or was associated with through the people_entities relationship — with their role flags (founder / executive / partner), title(s), and tenure at each. De-duplicated to one row per organization, founding roles first, then current ones. Use `?role=` to restrict to a single relationship role, and the same entity `?filter[...]` DSL as `/data/companies` to filter the organizations. Each row carries the organization as its summary row; `sort=-is_founder,is_past,-start_date` is the default order and the one the `career` glance on the person row uses. parameters: - schema: type: string minLength: 1 format: uuid example: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c description: Stable UUID of the entity. Numeric ids are not accepted. required: true description: Stable UUID of the entity. Numeric ids are not accepted. name: id in: path - schema: type: string description: > Filter expression for the associated organizations — same syntax and keys as /data/companies. Examples: - Single: launch_date[gte]:2015 - AND: and(launch_date[gte]:2015,hq_location[eq]:233) Operators: eq, neq, gt, gte, lt, lte, in_any, nin_any Default ref: 'entity' example: 'launch_date[gte]:2015' required: false description: > Filter expression for the associated organizations — same syntax and keys as /data/companies. Examples: - Single: launch_date[gte]:2015 - AND: and(launch_date[gte]:2015,hq_location[eq]:233) Operators: eq, neq, gt, gte, lt, lte, in_any, nin_any Default ref: 'entity' name: filter in: query - schema: type: integer format: int32 minimum: 1 maximum: 500 default: 25 description: 'Number of results to return (1-500, default 25)' example: 25 required: false description: 'Number of results to return (1-500, default 25)' name: limit in: query - schema: type: string description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. example: eyJ2IjoxLCJkIjoibmV4dCJ9 required: false description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. name: cursor in: query - schema: type: string pattern: '^(?:-?\w+)?(?:,(?:-?\w+)?)*$' description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. example: name required: false description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. name: sort in: query - schema: type: boolean description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. example: true required: false description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. name: include_total in: query - schema: type: string description: ISO 4217 currency code for monetary field conversion. Defaults to USD. example: EUR required: false description: ISO 4217 currency code for monetary field conversion. Defaults to USD. name: currency in: query - schema: type: string enum: - founder - executive - partner description: >- Restrict to a single relationship role at the associated organization: `founder`, `executive`, or `partner`. Omit to include all. example: founder required: false description: >- Restrict to a single relationship role at the associated organization: `founder`, `executive`, or `partner`. Omit to include all. name: role in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: Person career history content: application/json: schema: $ref: '#/components/schemas/PersonCareerResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '400': description: Invalid entity ID or request parameters content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: VALIDATION_ERROR message: The request was malformed or failed validation. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '/data/people/{id}/education': get: operationId: personEducation security: - oauth2: - 'read:people' - bearerAuth: - 'read:people' tags: - People summary: List education description: >- The person's education records — degree, majors and years — each with the university as its summary row. Most recent first (`sort=-start_date`), the order the `education` glance on the person row uses. parameters: - schema: type: string minLength: 1 format: uuid example: 345d1ab6-33df-4759-9e17-0d0c0ec9ab1c description: Stable UUID of the entity. Numeric ids are not accepted. required: true description: Stable UUID of the entity. Numeric ids are not accepted. name: id in: path - schema: type: integer format: int32 minimum: 1 maximum: 500 default: 25 description: 'Number of results to return (1-500, default 25)' example: 25 required: false description: 'Number of results to return (1-500, default 25)' name: limit in: query - schema: type: string description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. example: eyJ2IjoxLCJkIjoibmV4dCJ9 required: false description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. name: cursor in: query - schema: type: string pattern: '^(?:-?\w+)?(?:,(?:-?\w+)?)*$' description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. example: '-start_date' required: false description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. name: sort in: query - schema: type: boolean description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. example: true required: false description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. name: include_total in: query - schema: type: string description: ISO 4217 currency code for monetary field conversion. Defaults to USD. example: EUR required: false description: ISO 4217 currency code for monetary field conversion. Defaults to USD. name: currency in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: Person education records content: application/json: schema: $ref: '#/components/schemas/PersonEducationResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '400': description: Invalid entity ID or request parameters content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: VALIDATION_ERROR message: The request was malformed or failed validation. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' /data/news: get: operationId: listNews security: - oauth2: - 'read:news' - bearerAuth: - 'read:news' tags: - News summary: List news articles description: >- Returns a paginated list of published news articles. Articles can be about deals (VC rounds, IPOs, M&A), insights, events, partnerships, and more. Supports filtering by source, article type, sector, entity, and date range. parameters: - schema: type: string description: | Filter expression for news articles. Examples: - Single: source[eq]:perplexity - Text search: q[eq]:quantum computing - AND: and(article_type[eq]:vc_round,amount[gte]:1000000) - OR: or(source[eq]:perplexity,source[eq]:substack) Operators: eq, neq, gte, lte, gt, lt, in_any, nin_any Default ref: 'news' Note: 'q' searches headline + body (full-text with trigram fuzzy fallback) and forces relevance ordering, ignoring 'sort='. Cursor pagination stays within the first 1000 ranked results. example: 'and(article_type[eq]:vc_round,amount[gte]:1000000)' required: false description: | Filter expression for news articles. Examples: - Single: source[eq]:perplexity - Text search: q[eq]:quantum computing - AND: and(article_type[eq]:vc_round,amount[gte]:1000000) - OR: or(source[eq]:perplexity,source[eq]:substack) Operators: eq, neq, gte, lte, gt, lt, in_any, nin_any Default ref: 'news' Note: 'q' searches headline + body (full-text with trigram fuzzy fallback) and forces relevance ordering, ignoring 'sort='. Cursor pagination stays within the first 1000 ranked results. name: filter in: query - schema: type: integer format: int32 minimum: 1 maximum: 2000 default: 25 description: 'Number of results to return (1-2000, default 25)' example: 25 required: false description: 'Number of results to return (1-2000, default 25)' name: limit in: query - schema: type: string description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. example: eyJ2IjoxLCJkIjoibmV4dCJ9 required: false description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. name: cursor in: query - schema: type: string pattern: '^(?:-?\w+)?(?:,(?:-?\w+)?)*$' description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. example: '-published_at' required: false description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. name: sort in: query - schema: type: boolean description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. example: true required: false description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. name: include_total in: query - schema: type: string description: ISO 4217 currency code for monetary field conversion. Defaults to USD. example: EUR required: false description: ISO 4217 currency code for monetary field conversion. Defaults to USD. name: currency in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: List of news articles content: application/json: schema: $ref: '#/components/schemas/NewsListResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '400': description: Invalid request parameters content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: VALIDATION_ERROR message: The request was malformed or failed validation. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '/data/news/{id}': get: operationId: getNews security: - oauth2: - 'read:news' - bearerAuth: - 'read:news' tags: - News summary: Get single news article description: >- Returns one news article by numeric ID or slug, including its body excerpt, source, publish date, type, monetary amount (for deal articles, converted to the requested `?currency=`), and any linked Dealroom entities. parameters: - schema: type: string minLength: 1 example: '8765432' description: Numeric Dealroom article ID or slug. required: true description: Numeric Dealroom article ID or slug. name: id in: path - schema: type: string description: ISO 4217 currency code for monetary field conversion. Defaults to USD. example: EUR required: false description: ISO 4217 currency code for monetary field conversion. Defaults to USD. name: currency in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: Single news article content: application/json: schema: $ref: '#/components/schemas/NewsDetailResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '404': description: News article not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: NOT_FOUND message: The requested resource was not found. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' /data/notes: get: operationId: listNotes security: - oauth2: - 'read:news' - bearerAuth: - 'read:news' tags: - Notes summary: List notes description: >- Returns a paginated list of published notes plus every news note — the full note archive (news, editorial, research, and more), a superset of `/data/news`. Supports filtering by `is_news`, `type`, `status`, and `entity_id` (notes mentioning an entity). parameters: - schema: type: string description: | Filter expression for notes. Examples: - Single: type[eq]:public - AND: and(is_news[eq]:true,status[eq]:published) - OR: or(status[eq]:published,status[eq]:expired) Operators: eq, neq, gte, lte, gt, lt, in_any, nin_any Default ref: 'note' example: 'and(is_news[eq]:true,status[eq]:published)' required: false description: | Filter expression for notes. Examples: - Single: type[eq]:public - AND: and(is_news[eq]:true,status[eq]:published) - OR: or(status[eq]:published,status[eq]:expired) Operators: eq, neq, gte, lte, gt, lt, in_any, nin_any Default ref: 'note' name: filter in: query - schema: type: integer format: int32 minimum: 1 maximum: 2000 default: 25 description: 'Number of results to return (1-2000, default 25)' example: 25 required: false description: 'Number of results to return (1-2000, default 25)' name: limit in: query - schema: type: string description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. example: eyJ2IjoxLCJkIjoibmV4dCJ9 required: false description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. name: cursor in: query - schema: type: string pattern: '^(?:-?\w+)?(?:,(?:-?\w+)?)*$' description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. example: '-published_at' required: false description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. name: sort in: query - schema: type: boolean description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. example: true required: false description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. name: include_total in: query - schema: type: string description: ISO 4217 currency code for monetary field conversion. Defaults to USD. example: EUR required: false description: ISO 4217 currency code for monetary field conversion. Defaults to USD. name: currency in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: List of notes content: application/json: schema: $ref: '#/components/schemas/NotesListResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '400': description: Invalid request parameters content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: VALIDATION_ERROR message: The request was malformed or failed validation. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '/data/notes/{id}': get: operationId: getNote security: - oauth2: - 'read:news' - bearerAuth: - 'read:news' tags: - Notes summary: Get single note description: >- Returns one note by numeric ID or slug, including its body excerpt, publish date, type, monetary amount (for deal notes, converted to the requested `?currency=`), and any linked Dealroom entities. parameters: - schema: type: string minLength: 1 example: '8765432' description: Numeric Dealroom note ID or slug. required: true description: Numeric Dealroom note ID or slug. name: id in: path - schema: type: string description: ISO 4217 currency code for monetary field conversion. Defaults to USD. example: EUR required: false description: ISO 4217 currency code for monetary field conversion. Defaults to USD. name: currency in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: Single note content: application/json: schema: $ref: '#/components/schemas/NoteDetailResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '404': description: Note not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: NOT_FOUND message: The requested resource was not found. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' /data/jobs: get: operationId: listJobs security: - oauth2: - 'read:jobs' - bearerAuth: - 'read:jobs' tags: - Jobs summary: List job openings description: >- > ⚠ **DATA INCOMPLETE** — `salary_min`, `salary_max`, `currency`, `department`, and `contract_type` are loaded from BigQuery but have <1% coverage (Predict Leads, ~99% of volume, does not supply them) and are intentionally not exposed in the API. The jobs table also covers active openings only (`expired = 0`). Returns a paginated list of active job openings, each joined to the hiring company. Supports filtering by entity, source, location (city/country/region IDs), and posted-date range. Sorted by `posted_at` descending by default. parameters: - schema: type: string description: > Filter expression for job openings. Examples: - Single: source[eq]:linkedin - AND: and(entity_id[eq]:345d1ab6-33df-4759-9e17-0d0c0ec9ab1c,posted_at[gte]:2024-01-01T00:00:00Z) - OR: or(country_id[eq]:2282,country_id[eq]:93) Operators: eq, neq, gte, lte, in_any, nin_any Default ref: 'jobs' example: >- and(entity_id[eq]:345d1ab6-33df-4759-9e17-0d0c0ec9ab1c,posted_at[gte]:2024-01-01T00:00:00Z) required: false description: > Filter expression for job openings. Examples: - Single: source[eq]:linkedin - AND: and(entity_id[eq]:345d1ab6-33df-4759-9e17-0d0c0ec9ab1c,posted_at[gte]:2024-01-01T00:00:00Z) - OR: or(country_id[eq]:2282,country_id[eq]:93) Operators: eq, neq, gte, lte, in_any, nin_any Default ref: 'jobs' name: filter in: query - schema: type: integer format: int32 minimum: 1 maximum: 2000 default: 25 description: 'Number of results to return (1-2000, default 25)' example: 25 required: false description: 'Number of results to return (1-2000, default 25)' name: limit in: query - schema: type: string description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. example: eyJ2IjoxLCJkIjoibmV4dCJ9 required: false description: >- Opaque cursor token from a previous response's `page.next_cursor` or `page.prev_cursor`. Round-trip it as-is — do not decode or modify. name: cursor in: query - schema: type: string pattern: '^(?:-?\w+)?(?:,(?:-?\w+)?)*$' description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. example: '-posted_at' required: false description: >- Sort by one or more keys. Prefix with `-` for descending order; comma-separated for multi-key sorts. name: sort in: query - schema: type: boolean description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. example: true required: false description: >- Pass `true` to compute `page.total` (the matching record count). By default no count query runs and `page.total` is `null`. name: include_total in: query - schema: type: string description: ISO 4217 currency code for monetary field conversion. Defaults to USD. example: EUR required: false description: ISO 4217 currency code for monetary field conversion. Defaults to USD. name: currency in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: List of job openings content: application/json: schema: $ref: '#/components/schemas/JobsListResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '400': description: Invalid request parameters content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: VALIDATION_ERROR message: The request was malformed or failed validation. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' x-data-status: kind: data-incomplete gapId: jobs-sparse-fields-unexposed reason: >- `salary_min`, `salary_max`, `currency`, `department`, and `contract_type` are loaded from BigQuery but have <1% coverage (Predict Leads, ~99% of volume, does not supply them) and are intentionally not exposed in the API. The jobs table also covers active openings only (`expired = 0`). observable: >- These fields never appear in the `/data/jobs` response; only well-populated fields (title, source, location, posted_at) are returned. '/data/jobs/{id}': get: operationId: getJob security: - oauth2: - 'read:jobs' - bearerAuth: - 'read:jobs' tags: - Jobs summary: Get single job opening description: >- > ⚠ **DATA INCOMPLETE** — Same as `listJobs`: `salary_min`, `salary_max`, `currency`, `department`, and `contract_type` are loaded but intentionally unexposed (<1% coverage), and the table covers active openings only (`expired = 0`). Returns one active job opening by numeric ID, joined to the hiring company. parameters: - schema: type: string minLength: 1 example: '8765432' description: Numeric Dealroom job opening ID. required: true description: Numeric Dealroom job opening ID. name: id in: path - schema: type: string description: ISO 4217 currency code for monetary field conversion. Defaults to USD. example: EUR required: false description: ISO 4217 currency code for monetary field conversion. Defaults to USD. name: currency in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: Single job opening content: application/json: schema: $ref: '#/components/schemas/JobDetailResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '404': description: Job opening not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: NOT_FOUND message: The requested resource was not found. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' x-data-status: kind: data-incomplete gapId: jobs-detail-sparse-fields-unexposed reason: >- Same as `listJobs`: `salary_min`, `salary_max`, `currency`, `department`, and `contract_type` are loaded but intentionally unexposed (<1% coverage), and the table covers active openings only (`expired = 0`). observable: >- These fields never appear in the `/data/jobs/{id}` response; only well-populated fields are returned. /data/search: get: operationId: search security: - oauth2: - 'read:search' - bearerAuth: - 'read:search' tags: - Search summary: Search entities description: >- Searches entities by name and alias and returns a flat, relevance-ranked array of matches (best first). Each row carries its `type` (`company` | `investor` | `person` | `university` | `gov_ngo`) plus the display fields `website_domain`, `hq_city`, and `hq_country` (any of which may be null). Use the `types` parameter to limit the search to specific entity types; types the caller is not permitted to read are omitted from results. parameters: - schema: type: string minLength: 1 description: Search term (minimum 1 character). required: true description: Search term (minimum 1 character). name: q in: query - schema: type: string description: >- Comma-separated entity types to search (investor, person, company, university, gov_ngo). Defaults to every type the caller is permitted to read. example: 'company,investor' required: false description: >- Comma-separated entity types to search (investor, person, company, university, gov_ngo). Defaults to every type the caller is permitted to read. name: types in: query - schema: type: number minimum: 1 maximum: 20 default: 5 description: 'Maximum number of results per request (default 5, max 20)' required: false description: 'Maximum number of results per request (default 5, max 20)' name: limit in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: 'Flat ranked results array, up to `limit` rows' content: application/json: schema: $ref: '#/components/schemas/SearchResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '400': description: Invalid request parameters content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: VALIDATION_ERROR message: The request was malformed or failed validation. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '/analytics/aggregate/{source}': get: operationId: sourceAggregate security: - oauth2: - 'read:aggregate' - bearerAuth: - 'read:aggregate' tags: - Aggregate summary: Aggregate by source description: >- Query a specific source (founders, investors, companies, universities, gov-ngo, funding-rounds, valuations, entities) with structured filter syntax. **Filter syntax** (`filter` param): - Single filter: `filter=key[op]:value` - AND: `filter=and(key1[op]:val1,key2[op]:val2)` - OR: `filter=or(key1[op]:val1,key2[op]:val2)` - Nested: `filter=and(taxonomy_id[eq]:42,or(hq_location[eq]:81,hq_location[eq]:74))` **Available operators:** `eq`, `neq`, `gt`, `gte`, `lt`, `lte`, `in_any`, `nin_any`, `in_all`, `nin_all` `in_all` / `nin_all` work on repeated related-record filters and on the `classification` / `roles` flag sets. **Filter types:** - Direct: `launch_year[gte]:2020`, `total_funding[gt]:1000000`, `classification[in_any]:unicorn` - Location: `hq_location[eq]:81`, `hq_location[in_any]:1234|5678` (also `founding_location`, `office_location`, `founding_or_hq_location`) - Tag: `taxonomy_id[eq]:42`, `taxonomy_id[nin_any]:99` - Region: `region[eq]:123` **Examples:** - Count by country with tag: `?metric=count&group_by=hq_country&filter=taxonomy_id[eq]:42` - Funded startups by year: `?metric=count&group_by=launch_year&filter=and(classification[in_any]:funded,launch_year[gte]:2015)` - Multi-dim: `?metric=sum:amount&group_by=year,hq_country` parameters: - schema: type: string enum: - founders - investors - companies - funding-rounds - valuations - entities - universities - gov-ngo description: >- The source to aggregate (founders, investors, companies, universities, gov-ngo, funding-rounds, valuations, entities) example: founders required: true description: >- The source to aggregate (founders, investors, companies, universities, gov-ngo, funding-rounds, valuations, entities) name: source in: path - schema: type: string description: ISO 4217 currency code for monetary field conversion. Defaults to USD. example: EUR required: false description: ISO 4217 currency code for monetary field conversion. Defaults to USD. name: currency in: query - schema: type: string minLength: 1 description: >- Metric to compute: count, count_distinct:field, sum:field, avg:field, median:field, p25:field, p75:field example: count required: true description: >- Metric to compute: count, count_distinct:field, sum:field, avg:field, median:field, p25:field, p75:field name: metric in: query - schema: type: string minLength: 1 pattern: '^[a-z][a-z0-9_.]*(?:,[a-z][a-z0-9_.]*)*$' description: >- Dimension(s) to group by, at most 4. Location dims: hq_country, hq_city, hq_state, hq_continent, macro_region, region. Ecosystem map areas: map_area — the startup-map choropleth dimension (counts per polygon; requires an active ecosystem, else a validation error). Pair it with the per-entity map dots at GET /data/{companies|investors|universities}/geo. Relationship fields: university.name, employer.city. Multi-dim: year,hq_country example: hq_country required: true description: >- Dimension(s) to group by, at most 4. Location dims: hq_country, hq_city, hq_state, hq_continent, macro_region, region. Ecosystem map areas: map_area — the startup-map choropleth dimension (counts per polygon; requires an active ecosystem, else a validation error). Pair it with the per-entity map dots at GET /data/{companies|investors|universities}/geo. Relationship fields: university.name, employer.city. Multi-dim: year,hq_country name: group_by in: query - schema: type: string description: >- Filter expression using structured syntax: and(key[op]:value,...), or(...). Example: and(taxonomy_id[eq]:42,hq_location[eq]:81) example: 'and(taxonomy_id[eq]:42,launch_year[gte]:2020)' required: false description: >- Filter expression using structured syntax: and(key[op]:value,...), or(...). Example: and(taxonomy_id[eq]:42,hq_location[eq]:81) name: filter in: query - schema: type: string pattern: '^-?[a-z][a-z0-9_]*$' description: Sort by metric key or 'dimension'. Prefix with - for descending example: '-count' required: false description: Sort by metric key or 'dimension'. Prefix with - for descending name: sort in: query - schema: type: string description: 'Number of results to return (1-500, default 25)' example: '25' required: false description: 'Number of results to return (1-500, default 25)' name: limit in: query - $ref: '#/components/parameters/ApiVersion' responses: '200': description: Aggregated results content: application/json: schema: $ref: '#/components/schemas/AggregateResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '400': description: >- Invalid request parameters, filter, metric or group_by (e.g. more dimensions than the cap) content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: VALIDATION_ERROR message: The request was malformed or failed validation. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '401': description: >- Authentication required. The `Authorization` header was missing, the bearer token was malformed, or the token failed signature / expiry validation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: UNAUTHORIZED message: Authentication required — provide a valid bearer token. details: null headers: Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '402': description: >- `CREDITS_EXHAUSTED` — the caller's team has no credits left, or none granted yet. Only API-key and MCP requests are capped. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '403': description: >- Authentication succeeded but the caller's token does not include the permission required for this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: FORBIDDEN message: You do not have permission to perform this action. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' '429': description: Rate limit exceeded. headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' Deprecation: $ref: '#/components/headers/Deprecation' Sunset: $ref: '#/components/headers/Sunset' Retry-After: schema: type: string description: Seconds to wait before retrying. example: '1' required: true description: Seconds to wait before retrying. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: RATE_LIMITED message: Rate limit exceeded — retry after the delay in the `Retry-After` header. details: null '503': description: '`SERVICE_UNAVAILABLE` — the caller''s team credits could not be checked. Retry shortly.' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: error: code: SERVICE_UNAVAILABLE message: The service is temporarily unavailable. details: null headers: X-Credits-Used: $ref: '#/components/headers/X-Credits-Used' '/analytics/aggregate/{source}/multi-metric': get: operationId: multiMetric security: - oauth2: - 'read:aggregate' - bearerAuth: - 'read:aggregate' tags: - Aggregate summary: Multi-metric aggregate description: >- Return multiple labeled metrics from a single SQL query, each with optional per-metric filters using aggregate FILTER (WHERE ...) clauses. Supports all metric types (COUNT, SUM, AVG, MEDIAN, MAX) and optional dimensional grouping (group_by). **Metric param format:** `metric=