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

# Export full history

> Returns every value an Attention Index has published, with its raw value and source scores, in pages of up to 2,500 ordered by `id`.

Start with `afterId=0`. The first page fixes `throughId`, the last `id` the export covers. Request the next page with the returned `nextAfterId` and `throughId` until `nextAfterId` is null. Values published after the export started are left out, so pages stay consistent.

IDs increase over time but are shared across indices, so they are not consecutive. Backfilled values can have higher IDs than live values with earlier timestamps; sort by `timestamp` if you need time order. An unknown index name returns an empty page.

Requires an API key whose owner belongs to an approved institution. See [Authentication](/api-reference/authentication).




## OpenAPI

````yaml /openapi.yaml get /indices/{name}/history/export
openapi: 3.1.0
info:
  title: Forum API
  version: '1.0'
  description: Public, read-only access to Attention Index data.
  contact:
    name: Forum Support
    email: contact@forum.market
    url: https://forum.market
servers:
  - url: https://api.forum.market/v1
    description: Production
security: []
tags:
  - name: Indices
    description: Attention Index data.
  - name: Source Data
    description: >-
      Raw and per-source index values, for approved institutions. Requests are
      signed with an API key.
paths:
  /indices/{name}/history/export:
    get:
      tags:
        - Source Data
      summary: Export full history
      description: >
        Returns every value an Attention Index has published, with its raw value
        and source scores, in pages of up to 2,500 ordered by `id`.


        Start with `afterId=0`. The first page fixes `throughId`, the last `id`
        the export covers. Request the next page with the returned `nextAfterId`
        and `throughId` until `nextAfterId` is null. Values published after the
        export started are left out, so pages stay consistent.


        IDs increase over time but are shared across indices, so they are not
        consecutive. Backfilled values can have higher IDs than live values with
        earlier timestamps; sort by `timestamp` if you need time order. An
        unknown index name returns an empty page.


        Requires an API key whose owner belongs to an approved institution. See
        [Authentication](/api-reference/authentication).
      operationId: exportIndexHistory
      parameters:
        - $ref: '#/components/parameters/IndexName'
        - name: afterId
          in: query
          schema:
            type: integer
            minimum: 0
            default: 0
          description: >-
            Return values with an `id` greater than this. Use `0` for the first
            page, then the previous page's `nextAfterId`.
        - name: throughId
          in: query
          schema:
            type: integer
            minimum: 0
          description: >-
            Return values with an `id` up to and including this. Omit on the
            first page, then pass the `throughId` it returned.
      responses:
        '200':
          description: A page of index values, ordered by `id`.
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit-Account'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IndexHistoryExportPage'
              example:
                history:
                  - id: 505595
                    name: FORTNITE-IDX
                    value: 56.576344892425176
                    raw: 56.21093815276502
                    timestamp: '2026-10-22T20:03:00.047Z'
                    scheduledAt: '2026-10-22T20:03:00.000Z'
                    sourceValues:
                      youtube: 6.012477350238114
                      reddit: 4.871903257091735
                      x: 5.103388224510987
                      google_trends: 5.794126107344519
                    backfillVersion: null
                throughId: 512840
                nextAfterId: 505595
        '400':
          $ref: '#/components/responses/InvalidParameter'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/AccountRateLimited'
        '503':
          $ref: '#/components/responses/AccessCheckUnavailable'
      security:
        - AccessKey: []
          AccessTimestamp: []
          AccessSign: []
components:
  parameters:
    IndexName:
      name: name
      in: path
      required: true
      schema:
        type: string
      description: >-
        The index name, which is the index’s ticker followed by `-IDX`. `GET
        /indices` returns every name.
      example: FORTNITE-IDX
  headers:
    X-RateLimit-Limit-Account:
      description: Requests allowed per minute for this key's account.
      schema:
        type: integer
    X-RateLimit-Remaining:
      description: Requests remaining in the current window.
      schema:
        type: integer
    X-RateLimit-Reset:
      description: Unix time (seconds) when the oldest request in the window expires.
      schema:
        type: integer
  schemas:
    IndexHistoryExportPage:
      type: object
      required:
        - history
        - throughId
        - nextAfterId
      properties:
        history:
          type: array
          description: Up to 2,500 values, ordered by `id`.
          items:
            allOf:
              - $ref: '#/components/schemas/IndexSourceHistoryRecord'
              - type: object
                properties:
                  value:
                    type:
                      - number
                      - 'null'
                  raw:
                    type:
                      - number
                      - 'null'
        throughId:
          type: integer
          description: >-
            The last `id` this export covers. Pass it back with every following
            page.
          example: 512840
        nextAfterId:
          type:
            - integer
            - 'null'
          description: The `afterId` for the next page, or null when this is the last page.
          example: 505595
    IndexSourceHistoryRecord:
      type: object
      required:
        - id
        - name
        - value
        - raw
        - timestamp
        - scheduledAt
        - sourceValues
        - backfillVersion
      properties:
        id:
          type: integer
          description: Unique ID of the published value.
          example: 505595
        name:
          type: string
          description: The index name.
          example: FORTNITE-IDX
        value:
          type: number
          description: The published Attention Index value (after EMA smoothing).
          example: 56.576344892425176
        raw:
          type: number
          description: The Raw Index value before EMA smoothing.
          example: 56.21093815276502
        timestamp:
          type: string
          format: date-time
          description: When the value was published (ISO 8601, UTC).
          example: '2026-10-22T20:03:00.047Z'
        scheduledAt:
          type:
            - string
            - 'null'
          format: date-time
          description: >-
            The publication slot the value was produced for (ISO 8601, UTC), or
            null if none was recorded.
          example: '2026-10-22T20:03:00.000Z'
        sourceValues:
          type: object
          description: >-
            Each source's score at this publication, before weighting, keyed by
            source identifier such as `youtube`, `reddit`, `x` or
            `google_trends`.
          additionalProperties:
            type: number
        backfillVersion:
          type:
            - string
            - 'null'
          description: >-
            Null for a value recorded live. Otherwise the value was
            reconstructed after the fact, and this names the method that
            produced it.
          example: null
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - code
            - message
          properties:
            code:
              type: string
              example: INVALID_PARAMETER
            message:
              type: string
            details:
              type: object
              additionalProperties: true
  responses:
    InvalidParameter:
      description: A query parameter is missing or invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: INVALID_PARAMETER
              message: Request validation failed
              details:
                fields:
                  - field: start
                    message: 'Invalid input: expected string, received undefined'
    Unauthorized:
      description: >-
        The authentication headers are missing, the key is unknown or revoked,
        the timestamp is outside the 30-second window, or the signature does not
        match.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            missingHeaders:
              summary: Missing headers
              value:
                error:
                  code: UNAUTHORIZED
                  message: Missing HMAC authentication headers
            timestampExpired:
              summary: Timestamp outside the window
              value:
                error:
                  code: TIMESTAMP_EXPIRED
                  message: Request timestamp is outside the allowed window
            invalidSignature:
              summary: Signature does not match
              value:
                error:
                  code: INVALID_SIGNATURE
                  message: Signature verification failed
    Forbidden:
      description: The key's owner does not belong to an approved institution.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: INSUFFICIENT_PERMISSIONS
              message: Source data requires membership of an approved institution
    AccountRateLimited:
      description: >-
        Too many requests from this key's account. Source data endpoints allow
        300 requests per minute per account unless we have agreed a different
        limit with you.
      headers:
        Retry-After:
          description: Seconds to wait before retrying.
          schema:
            type: integer
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: RATE_LIMIT_EXCEEDED
              message: Rate limit exceeded. Retry after 12 seconds
              details:
                retryAfter: 12
    AccessCheckUnavailable:
      description: Institution approval could not be checked. Retry shortly.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: IDENTITY_VERIFICATION_UNAVAILABLE
              message: Institution access check is unavailable
  securitySchemes:
    AccessKey:
      type: apiKey
      in: header
      name: FORUM-ACCESS-KEY
      description: Your API key ID, starting with `fk_`.
    AccessTimestamp:
      type: apiKey
      in: header
      name: FORUM-ACCESS-TIMESTAMP
      description: >-
        The current Unix time in seconds. Must be within 30 seconds of the
        server's time.
    AccessSign:
      type: apiKey
      in: header
      name: FORUM-ACCESS-SIGN
      description: >-
        Base64-encoded HMAC-SHA256 of the timestamp, method, path and body,
        keyed with your API secret. See
        [Authentication](/api-reference/authentication).

````

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