> ## 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.

# Search observations

> Find individual evidence-backed company activities using a literal query and exact filters. Unlike company search, this endpoint does not interpret the query through company-search planning or group results by company. Use short relevant terms, such as charging. Results are newest-observed first.

Country, kind, demand-class and timestamp filters are supported. Company ID lists, domain lists and background are not accepted. To queue this search, use POST /api/usages. Read [the evidence guide](/evidence) before treating an observation as buying intent.



## OpenAPI

````yaml /openapi.json post /api/observations/search
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.
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/observations/search:
    post:
      tags:
        - Observations
      summary: Search observations
      description: >-
        Find individual evidence-backed company activities using a literal query
        and exact filters. Unlike company search, this endpoint does not
        interpret the query through company-search planning or group results by
        company. Use short relevant terms, such as charging. Results are
        newest-observed first.


        Country, kind, demand-class and timestamp filters are supported. Company
        ID lists, domain lists and background are not accepted. To queue this
        search, use POST /api/usages. Read [the evidence guide](/evidence)
        before treating an observation as buying intent.
      operationId: searchObservations
      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.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ObservationSearch'
            example:
              query: charging
              filters:
                countries:
                  - CA
              limit: 10
      responses:
        '200':
          description: Current observation page.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ObservationResult'
        '202':
          description: An identical operation is processing.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Pending'
        '401':
          description: Missing or revoked API credential.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '402':
          description: An active or trialing subscription is required.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '422':
          description: >-
            Invalid request, conflicting retry, expired operation or processing
            failure.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Subscription request or delivery allowance reached.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    ObservationSearch:
      type: object
      properties:
        query:
          type: string
          minLength: 1
          maxLength: 500
        filters:
          $ref: '#/components/schemas/ObservationFilters'
        limit:
          type: integer
          minimum: 1
          default: 10
          description: >-
            Maximum page size is subscription-owned: builder 25, professional
            50.
        cursor:
          type:
            - string
            - 'null'
          description: >-
            Opaque cursor. Keep query, filters and limit unchanged; use a new
            request key for each page.
      required:
        - query
      additionalProperties: false
    ObservationResult:
      type: object
      properties:
        usage:
          $ref: '#/components/schemas/Operation'
        request_allowance:
          $ref: '#/components/schemas/Allowance'
        coverage_status:
          const: partial
          type: string
        retrieval:
          type: string
          enum:
            - lexical
            - hybrid
        as_of:
          type: string
          format: date-time
        next_cursor:
          type:
            - string
            - 'null'
        withheld_units:
          type: integer
          minimum: 0
        delivery_unit:
          type: string
          enum:
            - company
            - observation
        observations:
          type: array
          items:
            $ref: '#/components/schemas/Observation'
      required:
        - usage
        - request_allowance
        - coverage_status
        - retrieval
        - as_of
        - next_cursor
        - withheld_units
        - delivery_unit
        - observations
      additionalProperties: false
    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
    ObservationFilters:
      type: object
      properties:
        countries:
          type: array
          items:
            type: string
            enum:
              - CA
              - US
        kinds:
          type: array
          items:
            type: string
            enum:
              - procurement_request
              - facility_expansion
        demand_classes:
          type: array
          items:
            type: string
            enum:
              - explicit_request
              - proxy
              - structural
        occurred_after:
          type: string
          format: date-time
        observed_after:
          type: string
          format: date-time
      required: []
      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
    Observation:
      type: object
      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'
        company:
          $ref: '#/components/schemas/CompanyIdentity'
      required:
        - id
        - kind
        - observed_fact
        - why_it_may_matter
        - demand_class
        - country
        - confidence
        - occurred_at
        - observed_at
        - expires_at
        - evidence
        - company
      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
    CompanyIdentity:
      type: object
      properties:
        id:
          type: integer
          minimum: 1
        name:
          type: string
      required:
        - id
        - name
      additionalProperties: false
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````