> ## Documentation Index
> Fetch the complete documentation index at: https://developers.dealroom.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Get funding funnel

> Cross-tabulates companies by total capital raised (9 buckets) against a chosen dimension.

**Response format:**
- `rows`: Array of `{ label, buckets: [count_per_bucket] }` (one per dimension value)
- `bucket_labels`: Dollar-range labels for the 9 buckets
- `bucket_group_labels`: Human-friendly stage names (Pre-Seed through Unicorn)
- `companies_count_per_bucket`: Companies per bucket across all dimensions
- `companies_count`: Companies across all buckets

**Buckets:** $0-1M, $1-4M, $4-15M, $15-40M, $40-100M, $100-250M, $250M-1B, $1-2B, $2B+. Always in USD, whatever `currency` is; `currency` converts amount filters.



## OpenAPI

````yaml /openapi.yaml get /analytics/funding-analytics/funnel
openapi: 3.1.0
info:
  title: Dealroom API
  version: '2026-10-22'
  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).
      On the global app, every entity flagged as an investor, each row typed as
      its own entity (investor firm, company, university, gov/NGO or person); on
      ecosystem hosts, investor firms and the persons who invest. An investor is
      the firm that makes investments; the capital vehicles it raises are funds
      available via `/investors/{id}/funds`. `round_filter` is a Transactions
      filter evaluated per funding round (every condition must match the same
      round; only non-deleted funding rounds count; ANDed with `filter`; a
      non-blank value restricts the list to investors with at least one matching
      round). `include_round_match=true` computes the same counts without
      restricting. Either enables `round_match_count`, `round_match_total`,
      `round_match_pct` (a `%` sort that omits the count tie-break gets
      `-round_match_count` inserted after it) and the `round_match` block.
      Example:
      `/data/investors?round_filter=is_vc_round[eq]:true&include_round_match=true&sort=-round_match_count,investor_rank`.
  - 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: Funding Analytics
    description: 'Purpose-built analytics: 2D heatmaps, round transitions, capital funnels.'
  - name: Timeseries
    description: Yearly entity metrics (employees, revenue, valuation).
  - name: Matching
    description: >-
      Investor matching tool: ranked investor recommendations for a given deal
      profile.
  - 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.
paths:
  /analytics/funding-analytics/funnel:
    get:
      tags:
        - Funding Analytics
      summary: Get funding funnel
      description: >-
        Cross-tabulates companies by total capital raised (9 buckets) against a
        chosen dimension.


        **Response format:**

        - `rows`: Array of `{ label, buckets: [count_per_bucket] }` (one per
        dimension value)

        - `bucket_labels`: Dollar-range labels for the 9 buckets

        - `bucket_group_labels`: Human-friendly stage names (Pre-Seed through
        Unicorn)

        - `companies_count_per_bucket`: Companies per bucket across all
        dimensions

        - `companies_count`: Companies across all buckets


        **Buckets:** $0-1M, $1-4M, $4-15M, $15-40M, $40-100M, $100-250M,
        $250M-1B, $1-2B, $2B+. Always in USD, whatever `currency` is; `currency`
        converts amount filters.
      operationId: funnel
      parameters:
        - schema:
            type: string
            enum:
              - sector
              - country
              - continent
              - city
              - region
              - technology
              - business_model
              - income_stream
              - client_focus
              - investor_type
            default: sector
            description: Dimension to cross-tabulate against funding buckets
            example: sector
          required: false
          description: Dimension to cross-tabulate against funding buckets
          name: dimension
          in: query
        - schema:
            type: string
            description: Max dimension values (1-50, default 15)
            example: '15'
          required: false
          description: Max dimension values (1-50, default 15)
          name: top_n
          in: query
        - schema:
            type: string
            description: >-
              Filter expression: and(key[op]:value,...). Same syntax as
              /analytics/aggregate/:source
            example: year[gte]:2020
          required: false
          description: >-
            Filter expression: and(key[op]:value,...). Same syntax as
            /analytics/aggregate/:source
          name: filter
          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: Funnel distribution data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FunnelResponse'
          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, or (`SUBSCRIPTION_ENDED`)
            the API key's team subscription has ended, or
            (`KEY_CREATOR_NOT_ENTITLED`) the API key's creator no longer has a
            Premium+ seat or an admin role in its team, or (`SEAT_REQUIRED`) the
            caller needs a Premium+ seat.
          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'
      security:
        - oauth2:
            - read:funding-analytics
        - bearerAuth:
            - read:funding-analytics
components:
  parameters:
    ApiVersion:
      name: API-Version
      in: header
      required: false
      schema:
        type: string
        format: date
        example: '2026-10-22'
      description: >-
        Pin a Stripe-style date-based API version (`YYYY-MM-DD`). Omit to use
        the latest version (`2026-10-22`). A pinned version is supported for 30
        days after it is superseded, after which it returns `400`.
  schemas:
    FunnelResponse:
      type: object
      properties:
        rows:
          type: array
          items:
            type: object
            properties:
              label:
                type: string
              buckets:
                type: array
                items:
                  type: number
            required:
              - label
              - buckets
        bucket_labels:
          type: array
          items:
            type: string
        bucket_group_labels:
          type: array
          items:
            type: string
        companies_count_per_bucket:
          type: array
          items:
            type: number
        companies_count:
          type: number
        query_info:
          type: object
          properties:
            dimension:
              type: string
            top_n:
              type: number
            timing_ms:
              type: number
          required:
            - dimension
            - top_n
            - timing_ms
        currency:
          type: string
          description: ISO 4217 code of the currency amounts and amount filters are in.
          example: USD
      required:
        - rows
        - bucket_labels
        - bucket_group_labels
        - companies_count_per_bucket
        - companies_count
        - query_info
        - currency
    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
                - PREMIUM_REQUIRED
                - INSTANCE_ACCESS_REQUIRED
                - SERVICE_UNAVAILABLE
                - RATE_LIMITED
                - CREDITS_EXHAUSTED
                - SUBSCRIPTION_ENDED
                - SEAT_REQUIRED
                - KEY_CREATOR_NOT_ENTITLED
                - ACTIVE_TEAM_CHANGED
                - 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
  headers:
    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
    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
  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 1h — 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:funding-analytics: Grant the read:funding-analytics 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

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.