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

# Verify forecast receipt

> Default response is the exact canonical UTF-8 manifest committed by SHA3-256, including a private random nonce, forecast values, input cutoff and generation time. Keep these bytes unchanged when verifying. X-VBase-Content-CID identifies the committed bytes. verify=true recomputes the saved content CID and looks up the stamp in Quantura's vBase collection/account, returning content_matches, stamp_found and verified_at in the data envelope. format=envelope returns manifest_utf8 and provenance for authenticated browser downloads. Receipt verification proves content/time, not accuracy or prospective publication before the stamp time. Reads do not create stamps or write Firestore documents.



## OpenAPI

````yaml /docs/api/openapi.json get /v1/ensemble-forecasts/{forecast_id}/proof
openapi: 3.1.0
info:
  title: Quantura API
  version: 1.0.0
  description: >-
    Search markets and public datasets, download historical observations, create
    forecasts and inspect screener quantiles.
  contact:
    name: Quantura
    url: https://quantura.studio/contact
  license:
    name: Quantura API Terms
    url: https://quantura.studio/terms
servers:
  - url: https://quantura.studio/api
security:
  - bearerAuth: []
  - clerkOAuth:
      - openid
      - profile
      - email
tags:
  - name: Access
  - name: Forecast
  - name: Screener
  - name: Search
  - name: Download
  - name: Scout
paths:
  /v1/ensemble-forecasts/{forecast_id}/proof:
    servers:
      - url: https://quantura.studio/api
    get:
      tags:
        - Forecast
      summary: Verify forecast receipt
      description: >-
        Default response is the exact canonical UTF-8 manifest committed by
        SHA3-256, including a private random nonce, forecast values, input
        cutoff and generation time. Keep these bytes unchanged when verifying.
        X-VBase-Content-CID identifies the committed bytes. verify=true
        recomputes the saved content CID and looks up the stamp in Quantura's
        vBase collection/account, returning content_matches, stamp_found and
        verified_at in the data envelope. format=envelope returns manifest_utf8
        and provenance for authenticated browser downloads. Receipt verification
        proves content/time, not accuracy or prospective publication before the
        stamp time. Reads do not create stamps or write Firestore documents.
      operationId: getEnsembleForecastProof
      parameters:
        - name: forecast_id
          in: path
          required: true
          schema:
            type: string
        - name: verify
          in: query
          schema:
            type: boolean
            default: false
        - name: format
          in: query
          schema:
            type: string
            enum:
              - manifest
              - envelope
            default: manifest
      responses:
        '200':
          description: Exact manifest attachment, or JSON verification/download envelope.
          headers:
            X-VBase-Content-CID:
              schema:
                type: string
                pattern: ^0x[0-9a-f]{64}$
          content:
            application/json:
              schema:
                type: object
                properties:
                  schema_version:
                    const: quantura_forecast_proof_v1
                  nonce:
                    type: string
                  forecast_id:
                    type: string
                  generated_at:
                    type: string
                    format: date-time
                  input_cutoff_at:
                    type:
                      - string
                      - 'null'
                    format: date-time
                  output:
                    type: object
                  data:
                    type: object
                    properties:
                      content_matches:
                        type: boolean
                      stamp_found:
                        type: boolean
                      verified_at:
                        type: string
                        format: date-time
                      manifest_utf8:
                        type: string
                      provenance:
                        $ref: '#/components/schemas/ForecastTimestampReceipt'
              example:
                schema_version: quantura_forecast_proof_v1
                nonce: >-
                  eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
                forecast_id: example
                generated_at: '2026-10-09T14:17:00Z'
                input_cutoff_at: '2026-10-08T20:00:00Z'
                source:
                  type: ticker
                  provider: alpaca
                  symbol: SPY
                configuration:
                  frequency: 1D
                  quantiles:
                    - 0.1
                    - 0.5
                    - 0.9
                model_checkpoints: {}
                model_revisions: {}
                output:
                  predictions:
                    - timestamp: '2026-10-09T20:00:00Z'
                      quantiles:
                        '0.1': 100
                        '0.5': 110
                        '0.9': 120
        '401':
          description: Authentication required.
        '403':
          description: Forecast scope, membership or resource permission denied.
        '404':
          description: Forecast not found.
        '409':
          description: Completed timestamp receipt not yet available.
        '503':
          description: >-
            Receipt service unavailable. Forecast remains available; retries are
            bounded.
      security:
        - bearerAuth: []
        - clerkOAuth:
            - openid
            - profile
            - email
components:
  schemas:
    ForecastTimestampReceipt:
      type:
        - object
        - 'null'
      properties:
        provider:
          const: vbase
        schema_version:
          const: quantura_forecast_proof_v1
        status:
          type: string
          enum:
            - pending
            - stamping
            - stamped
            - unavailable
        content_cid:
          type:
            - string
            - 'null'
          pattern: ^0x[0-9a-f]{64}$
        receipt:
          type:
            - object
            - 'null'
          properties:
            object_cid:
              type: string
              pattern: ^0x[0-9a-f]{64}$
            set_cid:
              type: string
              pattern: ^0x[0-9a-f]{64}$
            transaction_hash:
              type: string
              pattern: ^0x[0-9a-f]{64}$
            user_address:
              type:
                - string
                - 'null'
            user_label:
              type: string
              description: >-
                Account display name returned during recovery, not a blockchain
                address.
            chain_id:
              type: integer
            timestamp:
              type: string
              format: date-time
        error_code:
          type:
            - string
            - 'null'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: Clerk personal API key or legacy Quantura key
    clerkOAuth:
      type: oauth2
      description: >-
        Clerk authorization code with PKCE S256. Pass
        resource=https://quantura.studio on authorization and token requests.
        Paid Pro, enterprise or verified administrator API access is required.
      flows:
        authorizationCode:
          authorizationUrl: https://clerk.quantura.studio/oauth/authorize
          tokenUrl: https://clerk.quantura.studio/oauth/token
          refreshUrl: https://clerk.quantura.studio/oauth/token
          scopes:
            openid: Identify the Quantura account
            profile: Resolve the account profile
            email: Verify account email
            offline_access: Refresh access after expiry

````

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