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

# Changes Snapshot

> Every document or company the changes feed covers, as it is now: the starting copy to keep up to date with `GET /api/v2/changes`.

    Page through it with `pageToken` (each response's `nextPageToken`, until it is null), then follow the feed from `cursor`. Load companies first, then documents, and follow the feed from the `cursor` of the first page you loaded. Changes made while you load come through the feed again; apply them as upserts and deletes.

    Unlike `/documents/list`, paging can't skip anything when documents are added or removed meanwhile, and documents dated in the future are included, as the feed includes them. Documents come without file links; get those from `GET /api/v2/documents/{id}`.



## OpenAPI

````yaml GET /api/v2/changes/snapshot
openapi: 3.1.0
info:
  title: Captide REST API
  description: >-
    API for accessing financial disclosures and AI-powered financial document
    analysis.
  version: 0.3.14
servers:
  - url: https://rest-api.captide.co
    description: Prod server
security: []
paths:
  /api/v2/changes/snapshot:
    get:
      tags:
        - Changes
      summary: Snapshot for the changes feed
      description: >-
        Every document or company the changes feed covers, as it is now: the
        starting copy to keep up to date with `GET /api/v2/changes`.

            Page through it with `pageToken` (each response's `nextPageToken`, until it is null), then follow the feed from `cursor`. Load companies first, then documents, and follow the feed from the `cursor` of the first page you loaded. Changes made while you load come through the feed again; apply them as upserts and deletes.

            Unlike `/documents/list`, paging can't skip anything when documents are added or removed meanwhile, and documents dated in the future are included, as the feed includes them. Documents come without file links; get those from `GET /api/v2/documents/{id}`.
      operationId: changes_snapshot_api_v2_changes_snapshot_get
      parameters:
        - name: type
          in: query
          required: true
          schema:
            enum:
              - document
              - company
            type: string
            description: '`document` or `company`'
            examples:
              - document
            title: Type
          description: '`document` or `company`'
        - name: pageToken
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: '`nextPageToken` from the previous page; omit for the first page'
            title: Pagetoken
          description: '`nextPageToken` from the previous page; omit for the first page'
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            maximum: 1000
            minimum: 1
            description: Maximum number of items to return
            examples:
              - 100
            default: 100
            title: Limit
          description: Maximum number of items to return
        - name: companyIds
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: >-
              Comma-separated company IDs: only these companies, or only their
              documents
            examples:
              - 77848abe-a215-41b7-8950-86e89ea1fadc
            title: Companyids
          description: >-
            Comma-separated company IDs: only these companies, or only their
            documents
      responses:
        '200':
          description: A page of documents
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChangesSnapshotResponse'
              example:
                items:
                  - id: 97ac0c55-7349-46ec-8670-92f8524f5294
                    documentCategory: interim-financial-report
                    title: Third Quarter Report
                    description: >-
                      Santos Limited third quarter report for the period ending
                      30 September 2026, summarising record quarterly production
                      and free cash flow, operational performance across assets
                      (including Barossa, Pikka and PNG LNG), sales and pricing,
                      updated 2026 guidance and project developments.
                    date: '2026-10-22'
                    fiscalQuarter: 3
                    fiscalYear: 2026
                    fiscalPeriod: quarter
                    language: en
                    companyId: 77848abe-a215-41b7-8950-86e89ea1fadc
                    companyName: Santos Ltd.
                    companyTickers:
                      - STO.AX
                    metadata: {}
                nextPageToken: MTMxNS4wMDBhNmU1Yy0xYjJkLTRlNGYtOGE5Yy0zZDJlMWYwYTliN2M
                cursor: 1315
        '400':
          description: Invalid request parameters
          content:
            application/json:
              examples:
                invalid_page_token:
                  summary: Invalid pageToken
                  value:
                    detail: Invalid pageToken
                invalid_company_id:
                  summary: 'Invalid companyIds: each value must be a UUID'
                  value:
                    detail: 'Invalid companyIds: each value must be a UUID'
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key
          content:
            application/json:
              examples:
                missing_key:
                  summary: Missing API key
                  value:
                    detail: Missing API key
                invalid_key:
                  summary: Invalid or expired API key
                  value:
                    detail: Invalid or expired API key
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Your organization doesn't have access to this endpoint
          content:
            application/json:
              examples:
                forbidden:
                  summary: Access to this endpoint is not allowed for your organization
                  value:
                    detail: >-
                      Access to this endpoint is not allowed for your
                      organization
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: >-
            Validation error: a parameter or body field is missing, has the
            wrong type or is out of range
          content:
            application/json:
              example:
                detail:
                  - type: less_than_equal
                    loc:
                      - query
                      - limit
                    msg: Input should be less than or equal to 1000
                    input: '5000'
                    ctx:
                      le: 1000
              schema:
                $ref: '#/components/schemas/ValidationErrorResponse'
        '429':
          description: Rate limit exceeded
          content:
            application/json:
              examples:
                rate_limited:
                  summary: 'Rate limit exceeded: 100 requests per minute'
                  value:
                    detail: 'Rate limit exceeded: 100 requests per minute'
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              examples:
                database_error:
                  summary: Database error occurred
                  value:
                    detail: Database error occurred
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - APIKeyHeader: []
components:
  schemas:
    ChangesSnapshotResponse:
      properties:
        items:
          items:
            anyOf:
              - $ref: '#/components/schemas/ChangedDocument'
              - $ref: '#/components/schemas/CompanyResponse'
          type: array
          title: Items
          description: Documents or companies, as the changes feed shows them
        nextPageToken:
          anyOf:
            - type: string
            - type: 'null'
          title: Nextpagetoken
          description: Pass as `pageToken` for the next page; null on the last page
        cursor:
          type: integer
          title: Cursor
          description: >-
            The feed position this snapshot started at, the same on every page:
            call `GET /api/v2/changes` with it as `after` once the snapshot is
            loaded
      type: object
      required:
        - items
        - nextPageToken
        - cursor
      title: ChangesSnapshotResponse
      description: A page of the snapshot.
    ErrorResponse:
      properties:
        detail:
          type: string
          title: Detail
      type: object
      required:
        - detail
      title: ErrorResponse
      description: Standard error response model for all API endpoints.
    ValidationErrorResponse:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationErrorItem'
          type: array
          title: Detail
      type: object
      required:
        - detail
      title: ValidationErrorResponse
      description: '422 body: every invalid field of the request.'
    ChangedDocument:
      properties:
        id:
          type: string
          title: Id
          description: >-
            Document ID, as used by `GET /api/v2/documents/{id}`. A new version
            of the document's file has a new ID; the old one is in
            `previous.id`.
        documentCategory:
          type: string
          title: Documentcategory
          description: Document category code. See [Coverage](/coverage).
        secFormType:
          anyOf:
            - type: string
            - type: 'null'
          title: Secformtype
          description: SEC form type, for SEC filings
        title:
          anyOf:
            - type: string
            - type: 'null'
          title: Title
          description: Captide-generated document title
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Description
          description: Captide-generated document description
        date:
          anyOf:
            - type: string
            - type: 'null'
          title: Date
          description: Date of the document, as in `/documents/list`
        fiscalQuarter:
          anyOf:
            - type: integer
            - type: 'null'
          title: Fiscalquarter
          description: Fiscal quarter (1 to 4)
        fiscalYear:
          anyOf:
            - type: integer
            - type: 'null'
          title: Fiscalyear
          description: Fiscal year
        fiscalPeriod:
          anyOf:
            - type: string
            - type: 'null'
          title: Fiscalperiod
          description: '`year`, `multi-year`, `month`, `half-year`, `quarter` or null'
        language:
          anyOf:
            - type: string
            - type: 'null'
          title: Language
          description: ISO 639-1 language code
        companyId:
          type: string
          title: Companyid
          description: ID of the company the document belongs to
        companyName:
          anyOf:
            - type: string
            - type: 'null'
          title: Companyname
          description: The company's name now
        companyTickers:
          items:
            type: string
          type: array
          title: Companytickers
          description: The company's tickers now
        metadata:
          additionalProperties: true
          type: object
          title: Metadata
          description: As in `GET /api/v2/documents/{id}`
      type: object
      required:
        - id
        - documentCategory
        - companyId
      title: ChangedDocument
      description: >-
        A document as the API shows it, without file links (they expire; fetch
        them from `GET /api/v2/documents/{id}`).
    CompanyResponse:
      properties:
        id:
          type: string
          title: Id
          description: Unique company ID
        name:
          type: string
          title: Name
          description: Company name
        tickers:
          items:
            type: string
          type: array
          title: Tickers
          description: >-
            List of ticker symbols with exchange suffixes (e.g., 'ASML',
            'ASML.AS')
        countries:
          items:
            type: string
          type: array
          title: Countries
          description: Company's country of domicile (ISO 3166-1 alpha-2)
        filesWithSec:
          type: boolean
          title: Fileswithsec
          description: Whether the company files reports with the SEC
        cik:
          anyOf:
            - type: string
            - type: 'null'
          title: Cik
          description: Central Index Key (CIK) assigned by the SEC
        permId:
          anyOf:
            - type: string
            - type: 'null'
          title: Permid
          description: PermID (Permanent Identifier) assigned by Refinitiv
      type: object
      required:
        - id
        - name
        - tickers
        - countries
        - filesWithSec
      title: CompanyResponse
      description: Response model for single company retrieval.
    ValidationErrorItem:
      properties:
        type:
          type: string
          title: Type
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Loc
        msg:
          type: string
          title: Msg
        input:
          anyOf:
            - {}
            - type: 'null'
          title: Input
        ctx:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Ctx
      type: object
      required:
        - type
        - loc
        - msg
      title: ValidationErrorItem
      description: One invalid field, as FastAPI reports it.
  securitySchemes:
    APIKeyHeader:
      type: apiKey
      in: header
      name: X-API-Key

````

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