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

# Get companies

> Retrieve one to twenty known companies by IDs OR normalized domains. Exactly one array is required; no unfiltered listing is supported. No provider or AI calls run. Returns current supported domains and up to three recent observations per company, not a full profile. Each normalized distinct target has a found, not_found, ambiguous, or replay-time unavailable outcome. A miss is not proof a company does not exist. Completed requests consume one request unit and one delivered unit per distinct company; identical retries do not settle again. Current evidence eligibility is rechecked on every read. The original single-company route retains its unmetered compatibility behavior.

Examples use fictional test data and illustrative IDs, dates, and allowances. They are not live prospects or current account balances.



## OpenAPI

````yaml /openapi.json get /api/companies
openapi: 3.1.0
info:
  title: Jolts API
  version: 1.0.0
  description: >-
    Implemented HTTP contract. Authentication uses an account-scoped bearer
    credential. Current coverage is partial; a matching company is not a
    guarantee of buying intent.


    Response examples use fictional test companies and illustrative IDs, dates
    and allowances. They are not live customer results or evidence of market
    coverage.
servers:
  - url: https://app.jolts.xyz
    description: Application API
security:
  - bearerAuth: []
tags:
  - name: Companies
    description: Find prospects and investigate their supporting evidence.
  - name: Observations
    description: Search individual company activities and inspect their sources.
  - name: Operations
    description: Start background work and retrieve its results.
  - name: Account
    description: Check your subscription and shared usage allowance.
paths:
  /api/companies:
    get:
      tags:
        - Companies
      summary: Get companies
      description: >-
        Retrieve one to twenty known companies by IDs OR normalized domains.
        Exactly one array is required; no unfiltered listing is supported. No
        provider or AI calls run. Returns current supported domains and up to
        three recent observations per company, not a full profile. Each
        normalized distinct target has a found, not_found, ambiguous, or
        replay-time unavailable outcome. A miss is not proof a company does not
        exist. Completed requests consume one request unit and one delivered
        unit per distinct company; identical retries do not settle again.
        Current evidence eligibility is rechecked on every read. The original
        single-company route retains its unmetered compatibility behavior.


        Examples use fictional test data and illustrative IDs, dates, and
        allowances. They are not live prospects or current account balances.
      operationId: getCompanies
      parameters:
        - name: Idempotency-Key
          in: header
          required: true
          schema:
            type: string
          description: >-
            Unique operation key. Reuse only for identical retries, including
            across HTTP/MCP. Each new page needs a new key.
        - name: ids[]
          in: query
          required: false
          style: form
          explode: true
          description: >-
            Supply repeated ids[] query parameters. Use exactly one of ids or
            domains.
          schema:
            type: array
            minItems: 1
            maxItems: 20
            items:
              type: integer
              minimum: 1
        - name: domains[]
          in: query
          required: false
          style: form
          explode: true
          description: >-
            Supply repeated domains[] query parameters. Use exactly one of ids
            or domains.
          schema:
            type: array
            minItems: 1
            maxItems: 20
            items:
              type: string
      responses:
        '200':
          description: >-
            Current dataset lookup, including per-target missing or ambiguous
            outcomes.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompanyLookupResult'
              examples:
                lookup:
                  $ref: '#/components/examples/getCompanies200'
        '202':
          description: Pending or processing; poll the returned usage ID.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Pending'
              examples:
                pending:
                  $ref: '#/components/examples/searchCompanies202'
        '401':
          description: Missing or revoked API credential.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                error:
                  $ref: '#/components/examples/invalidCredential'
        '402':
          description: An active or trialing subscription is required.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                error:
                  $ref: '#/components/examples/subscriptionRequired'
        '422':
          description: >-
            Invalid request, conflicting retry, expired operation or processing
            failure.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                invalid_lookup:
                  $ref: '#/components/examples/invalidLookup'
        '429':
          description: Subscription request or delivery allowance reached.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                error:
                  $ref: '#/components/examples/requestLimit'
components:
  schemas:
    CompanyLookupResult:
      type: object
      additionalProperties: false
      required:
        - usage
        - request_allowance
        - companies
        - lookups
        - as_of
        - coverage_status
        - limitations
        - delivery_unit
        - withheld_units
      properties:
        usage:
          $ref: '#/components/schemas/Operation'
        request_allowance:
          $ref: '#/components/schemas/Allowance'
        companies:
          type: array
          maxItems: 20
          items:
            type: object
            properties:
              id:
                type: integer
                minimum: 1
              name:
                type: string
              domains:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: integer
                      minimum: 1
                    hostname:
                      type: string
                  required:
                    - id
                    - hostname
                  additionalProperties: false
              observations:
                type: array
                items:
                  $ref: '#/components/schemas/SupportingObservation'
                maxItems: 3
              limitations:
                type: array
                items:
                  type: string
            required:
              - id
              - name
              - domains
              - observations
              - limitations
            additionalProperties: false
        lookups:
          type: array
          minItems: 1
          maxItems: 20
          items:
            type: object
            additionalProperties: false
            required:
              - status
            properties:
              id:
                type: integer
                minimum: 1
              domain:
                type: string
              company_id:
                type: integer
                minimum: 1
              status:
                type: string
                enum:
                  - found
                  - not_found
                  - ambiguous
                  - unavailable
            oneOf:
              - required:
                  - id
              - required:
                  - domain
            allOf:
              - if:
                  properties:
                    status:
                      const: found
                then:
                  required:
                    - company_id
                else:
                  not:
                    required:
                      - company_id
        as_of:
          type: string
          format: date-time
        coverage_status:
          const: partial
          type: string
        limitations:
          type: array
          items:
            type: string
        delivery_unit:
          type: string
          const: company
        withheld_units:
          type: integer
          minimum: 0
    Pending:
      type: object
      examples:
        - usage:
            id: 789
            status: pending
            request_key: first-company-search
            request_units: 0
            delivered_units: 0
            fresh_evidence_units: 0
          request_allowance:
            window_seconds: 18000
            window_remaining: 99
            weekly_remaining: 499
      properties:
        usage:
          $ref: '#/components/schemas/Operation'
        request_allowance:
          $ref: '#/components/schemas/Allowance'
      required:
        - usage
        - request_allowance
      additionalProperties: false
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
            message:
              type: string
            retry_at:
              type: string
              format: date-time
              description: >-
                Advisory retry time for the reached capacity limit, based on
                usage at rejection. Other requests or completing reservations
                may change availability.
            retry_after_seconds:
              type: integer
              minimum: 0
              description: >-
                Seconds from rejection to retry_at. For stored failed
                operations, prefer the absolute retry_at timestamp.
          required:
            - code
            - message
          additionalProperties: false
        usage:
          $ref: '#/components/schemas/Operation'
        request_allowance:
          $ref: '#/components/schemas/Allowance'
      required:
        - error
      additionalProperties: false
    Operation:
      type: object
      properties:
        id:
          type: integer
          minimum: 1
        status:
          type: string
          enum:
            - pending
            - processing
            - delivered
            - failed
        request_key:
          type: string
        request_units:
          type: integer
          minimum: 0
        delivered_units:
          type: integer
          minimum: 0
        fresh_evidence_units:
          type: integer
          minimum: 0
      required:
        - id
        - status
        - request_key
        - request_units
        - delivered_units
        - fresh_evidence_units
      additionalProperties: false
    Allowance:
      type: object
      properties:
        window_seconds:
          type: integer
          minimum: 0
        window_remaining:
          type: integer
          minimum: 0
        weekly_remaining:
          type: integer
          minimum: 0
      required:
        - window_seconds
        - window_remaining
        - weekly_remaining
      additionalProperties: false
    SupportingObservation:
      type: object
      description: >-
        One activity and its supporting sources. The example is fictional, not a
        live company result.
      examples:
        - id: 456
          kind: facility_expansion
          observed_fact: Example Logistics announced a new distribution warehouse.
          why_it_may_matter: >-
            A new warehouse may need handling equipment; no purchasing decision
            is confirmed.
          demand_class: proxy
          country: CA
          confidence: 0.8
          occurred_at: '2026-09-20T00:00:00Z'
          observed_at: '2026-09-21T12:00:00Z'
          expires_at: null
          evidence:
            - source_uri: https://logistics.example/news/warehouse
              excerpt: We are opening a new distribution warehouse.
              occurred_at: '2026-09-20T00:00:00Z'
              observed_at: '2026-09-21T12:00:00Z'
      properties:
        id:
          type: integer
          minimum: 1
        kind:
          type: string
          enum:
            - procurement_request
            - facility_expansion
        observed_fact:
          type: string
        why_it_may_matter:
          type: string
        demand_class:
          type: string
          enum:
            - explicit_request
            - proxy
            - structural
        country:
          type: string
          enum:
            - CA
            - US
        confidence:
          type: number
          minimum: 0
          maximum: 1
        occurred_at:
          type: string
          format: date-time
        observed_at:
          type: string
          format: date-time
        expires_at:
          type:
            - string
            - 'null'
          format: date-time
        evidence:
          type: array
          items:
            $ref: '#/components/schemas/Evidence'
      required:
        - id
        - kind
        - observed_fact
        - why_it_may_matter
        - demand_class
        - country
        - confidence
        - occurred_at
        - observed_at
        - expires_at
        - evidence
      additionalProperties: false
    Evidence:
      type: object
      properties:
        source_uri:
          type: string
        excerpt:
          type: string
        occurred_at:
          type: string
          format: date-time
        observed_at:
          type: string
          format: date-time
      required:
        - source_uri
        - excerpt
        - occurred_at
        - observed_at
      additionalProperties: false
  examples:
    getCompanies200:
      summary: One known company and one missing target (fictional)
      value:
        as_of: '2026-09-25T12:00:00Z'
        coverage_status: partial
        limitations:
          - limited_source_coverage
          - dataset_read_only
        companies:
          - id: 23
            name: Sequoia Freight
            domains:
              - id: 23
                hostname: sequoia.example.test
            observations:
              - id: 23
                kind: procurement_request
                observed_fact: Issued a request for fleet charging equipment at a new depot.
                why_it_may_matter: >-
                  This observed company activity may be relevant to the search
                  objective; verify fit against the evidence.
                demand_class: explicit_request
                country: US
                confidence: 1
                occurred_at: '2026-09-18T00:00:00Z'
                observed_at: '2026-09-25T02:47:06Z'
                expires_at: null
                evidence:
                  - source_uri: https://sequoia.example.test/tenders/fleet-charging
                    excerpt: >-
                      Issued a request for fleet charging equipment at a new
                      depot.
                    occurred_at: '2026-09-18T00:00:00Z'
                    observed_at: '2026-09-25T02:47:06Z'
            limitations:
              - limited_source_coverage
        lookups:
          - id: 23
            company_id: 23
            status: found
          - id: 999999
            status: not_found
        usage:
          id: 981239949
          status: delivered
          request_key: company-lookup-1
          request_units: 1
          delivered_units: 1
          fresh_evidence_units: 0
        request_allowance:
          window_seconds: 10800
          window_remaining: 198
          weekly_remaining: 998
        delivery_unit: company
        withheld_units: 0
    searchCompanies202:
      summary: Accepted; poll usage.id
      value:
        usage:
          id: 981239949
          status: pending
          request_key: company
          request_units: 0
          delivered_units: 0
          fresh_evidence_units: 0
        request_allowance:
          window_seconds: 10800
          window_remaining: 198
          weekly_remaining: 998
    invalidCredential:
      summary: invalid_api_key
      value:
        error:
          code: invalid_api_key
          message: Provide a valid API credential.
    subscriptionRequired:
      summary: subscription_required
      value:
        error:
          code: subscription_required
          message: An active or trialing subscription is required.
    invalidLookup:
      summary: No lookup identifiers supplied
      value:
        error:
          code: invalid_lookup
          message: Supply either ids or domains, without other parameters
    requestLimit:
      summary: Request allowance reached (illustrative retry time)
      value:
        error:
          code: request_limit_reached
          message: The subscription request limit has been reached.
          retry_at: '2026-09-25T05:00:00Z'
          retry_after_seconds: 60
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````