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

# Submit Feedback

> Report a bug or gap you hit while using Blockworks data: an error, an empty or surprising result, missing data, unclear docs, or a workaround you had to invent.

Send one request per distinct issue, after you have resolved it or given up, so the report can say what you tried
and any workaround that worked. Agents connected to the [MCP server](https://docs.blockworks.com/mcp/overview.md) send the same report with the
[`submit_feedback`](https://docs.blockworks.com/mcp/tools/feedback) tool; both land in the same place.

A useful report carries:

* **The exact request.** The URL with its query string, or the tool arguments, in `request`.
* **What you expected** and what came back instead, in `message`.
* **Request IDs.** Data API and Monitoring responses carry an `X-Request-ID` header, and MCP tool errors from the
  API include `(request ID ...)`. Quote the IDs of the responses involved; they are how Blockworks finds the request
  in its logs.

Submissions are stored by Blockworks and attributed to the account behind your API key, so leave out personal or
sensitive data. They are free and do not count against usage. Each user can send up to 60 an hour.

```bash theme={null}
curl -X POST 'https://api.blockworks.com/feedback' \
  --header "X-Blockworks-API-Key: $BLOCKWORKS_API_KEY" \
  --header 'Content-Type: application/json' \
  --header 'Idempotency-Key: 3f1c2a9e-report-1' \
  --data '{
    "category": "data_quality",
    "message": "asset-marketcap returned no rows for bitcoin on 2026-10-18. Expected one row per day. Request ID 6047f3ac-edd5-4a29-adbb-f451dc1afe2d.",
    "endpoint": "GET /query/timeseries/asset-marketcap/1d",
    "request": "GET https://api.blockworks.com/query/timeseries/asset-marketcap/1d?series=bitcoin&start=2026-10-18&end=2026-10-18"
  }'
```

> [!NOTE]
>
> If a request times out or returns `503`, resend it with the same `Idempotency-Key`. Copies that share a key count
> as one submission.


## OpenAPI

````yaml api-reference/feedback/openapi.json POST /feedback
openapi: 3.0.3
info:
  title: Blockworks Feedback API
  description: >-
    Report a bug or gap you hit while using Blockworks data. Submissions are
    stored by Blockworks and attributed to the account behind the API key.
    Authenticate by sending your API key in the X-Blockworks-API-Key header.
  version: 1.0.0
servers:
  - url: https://api.blockworks.com
    description: Blockworks API
security:
  - apiKey: []
tags:
  - name: Feedback
    description: Bug and gap reports from people and agents using Blockworks data.
paths:
  /feedback:
    post:
      tags:
        - Feedback
      summary: Submit Feedback
      description: >-
        Stores one report of a bug or gap: an error, an empty or surprising
        result, missing data, unclear docs, or a workaround you had to invent.
        Send one request per distinct issue. A field longer than its limit is
        cut rather than rejected, and `truncated` says whether that happened.
        Submissions are free and do not count against usage; each user can send
        up to 60 an hour.
      operationId: submitFeedback
      parameters:
        - name: Idempotency-Key
          in: header
          required: false
          description: >-
            A value you choose, up to 128 characters, that ties retries of one
            submission together. Send the same key when you resend after a
            timeout or a 503, and the copies count as one submission.
          schema:
            type: string
            maxLength: 128
          example: 3f1c2a9e-report-1
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FeedbackRequest'
            example:
              category: data_quality
              message: >-
                asset-marketcap returned no rows for bitcoin on 2026-10-18.
                Expected one row per day. Retried with a wider window and got
                the same result. Request ID
                6047f3ac-edd5-4a29-adbb-f451dc1afe2d.
              endpoint: GET /query/timeseries/asset-marketcap/1d
              request: >-
                GET
                https://api.blockworks.com/query/timeseries/asset-marketcap/1d?series=bitcoin&start=2026-10-18&end=2026-10-18
              agent: my-research-agent/1.4
      responses:
        '202':
          description: The submission was stored.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FeedbackResponse'
              example:
                error: null
                data:
                  feedback_id: 0eb1efd4-303f-44a8-8130-70ae828bc077
                  truncated: false
        '400':
          description: >-
            A required field is missing or a value is not allowed. The error
            names the field.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error: >-
                  invalid field "category": category must be one of bug,
                  data_quality, feature_request
                data: null
        '403':
          description: The API key is missing or not valid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error: Forbidden
                data: null
        '429':
          description: >-
            This user has sent 60 submissions in the last hour. The Retry-After
            header gives the seconds to wait.
          headers:
            Retry-After:
              description: Seconds to wait before sending again.
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '503':
          description: >-
            The submission was not stored. Retry after a short wait with the
            same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    FeedbackRequest:
      type: object
      required:
        - category
        - message
      properties:
        category:
          type: string
          enum:
            - bug
            - data_quality
            - feature_request
          description: >-
            `bug`: something failed or returned wrong results. `data_quality`:
            data that is missing, stale, or wrong. `feature_request`: data or a
            capability you needed and could not find. Case does not matter.
        message:
          type: string
          maxLength: 4000
          description: >-
            What happened, what you expected, what you tried, and any workaround
            that worked. Include the request IDs of the responses involved: the
            X-Request-ID header on Data API and Monitoring responses. Up to
            4,000 characters; longer text is cut.
        tool:
          type: string
          description: >-
            The MCP tool the report is about, if any, such as `tabular_data`. Up
            to 128 characters.
          maxLength: 128
        endpoint:
          type: string
          description: >-
            The API endpoint the report is about, if any, such as `GET
            /query/tabular/assets`. Up to 512 characters.
          maxLength: 512
        request:
          type: string
          maxLength: 2048
          description: >-
            The exact request you made: the URL, or the tool arguments as JSON.
            Up to 2 KB; longer text is cut.
        agent:
          type: string
          description: >-
            The agent or client sending the report, such as `Claude Code` or
            your own agent's name and version. Up to 128 characters.
          maxLength: 128
    FeedbackResponse:
      type: object
      required:
        - error
        - data
      properties:
        error:
          type: string
          nullable: true
          description: Always null on success.
        data:
          type: object
          required:
            - feedback_id
            - truncated
          properties:
            feedback_id:
              type: string
              description: The submission's ID. Quote it if you follow up.
            truncated:
              type: boolean
              description: True when any field was longer than its limit and was cut.
    ErrorResponse:
      type: object
      required:
        - error
        - data
      properties:
        error:
          type: string
          description: What went wrong.
        data:
          nullable: true
          description: Always null on error.
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: X-Blockworks-API-Key

````

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