0xArchive Data Quality API

Data quality monitoring: system status, coverage, incidents, latency, and SLA metrics.

Operations 8

Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay

GET /v1/data-quality/status Check overall data system health · Get system status #
Ask an LLM
“Is any exchange or data type currently degraded?”
“What is the overall data system status per exchange and data type?”
Tell an agent
Get the overall data quality system status.
Show me the per-exchange and per-data-type health status.
GET /v1/data-quality/coverage Summarize data coverage across venues · Get coverage summary #
Ask an LLM
“How far back does archived data go for each venue family?”
“What completeness and record counts does the coverage summary include?”
Tell an agent
Get the data coverage summary for all venue families.
Show earliest and latest data and completeness across every venue.
GET /v1/data-quality/coverage/{exchange} Get data coverage for one exchange · Get exchange coverage #
Ask an LLM
“What data coverage exists for a single exchange like Lighter?”
“Why does the per-exchange coverage call sometimes take 30-60 seconds?”
Tell an agent
Get data coverage for exchange {exchange}.
Show how much history is archived for {exchange}.
GET /v1/data-quality/coverage/{exchange}/{symbol} Find data gaps for one symbol · Get symbol coverage with gaps #
Ask an LLM
“Are there missing periods in the archived data for a specific coin?”
“Can I limit gap detection for a symbol to a time window?”
Tell an agent
Check coverage and gaps for {symbol} on {exchange}.
Find data gaps for {symbol} on {exchange} between {from} and {to}.
GET /v1/data-quality/incidents List data quality incidents · List incidents #
Ask an LLM
“Which data quality incidents have been reported recently?”
“Can I filter data incidents by status or exchange?”
Tell an agent
List data quality incidents for {exchange} since {since}.
Show all incidents with status {status}.
GET /v1/data-quality/incidents/{id} Get one data quality incident · Get incident #
Ask an LLM
“What happened in a specific data quality incident?”
“Can I look up the details of an incident by its ID?”
Tell an agent
Get incident {id}.
Show me the full details of data incident {id}.
GET /v1/data-quality/latency Get current latency metrics · Get latency metrics #
Ask an LLM
“How much latency is there on WebSocket and REST data right now?”
“How fresh is the data feed for each venue family?”
Tell an agent
Get current latency metrics.
Show WebSocket, REST and data freshness latency for each venue.
GET /v1/data-quality/sla Get monthly SLA compliance metrics · Get SLA metrics #
Ask an LLM
“Did uptime and completeness meet the SLA targets last month?”
“What SLA actuals versus targets were recorded for a given month?”
Tell an agent
Get SLA metrics for {month} {year}.
Show this month's SLA compliance for uptime, completeness and latency.

Documentation

Specifications

Other Resources

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/0xarchive:0xarchive-data-quality-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

0xarchive-data-quality-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: 0xArchive Data Quality API
  description: REST API for current and historical market data from Hyperliquid and Lighter. Hyperliquid coverage includes core perpetuals, Spot, HIP-3 builder perpetuals, and HIP-4 outcome markets. Coverage and access requirements vary by route. See https://docs.0xarchive.io/ for authentication, limits, and examples.
  version: 1.6.1
  termsOfService: https://0xarchive.io/terms
  contact:
    name: 0xArchive Support
    url: https://0xarchive.io
    email: support@0xarchive.io
  license:
    name: Proprietary
    url: https://0xarchive.io/terms
servers:
- url: https://api.0xarchive.io
  description: Production API
security:
- ApiKeyAuth: []
tags:
- name: Data Quality
  description: 'Data quality monitoring: system status, coverage, incidents, latency, and SLA metrics.'
paths:
  /v1/data-quality/status:
    get:
      tags:
      - Data Quality
      summary: Get system status
      description: Get overall system health status including per-exchange and per-data-type status.
      operationId: getDataQualityStatus
      responses:
        '200':
          description: System status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /v1/data-quality/coverage:
    get:
      tags:
      - Data Quality
      summary: Get coverage summary
      description: 'Get data coverage summary for supported venue families, including earliest/latest data, record counts, and completeness. Note: May take 30-60 seconds on first request (results are cached server-side for 5 minutes).'
      operationId: getDataQualityCoverage
      responses:
        '200':
          description: Coverage summary
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CoverageResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /v1/data-quality/coverage/{exchange}:
    get:
      tags:
      - Data Quality
      summary: Get exchange coverage
      description: 'Get data coverage for a specific exchange. Note: May take 30-60 seconds on first request (results are cached server-side for 5 minutes).'
      operationId: getExchangeCoverage
      parameters:
      - name: exchange
        in: path
        required: true
        description: Exchange name
        schema:
          type: string
          enum:
          - hyperliquid
          - lighter
          - hip3
          - spot
          - hip4
          example: hyperliquid
      responses:
        '200':
          description: Exchange coverage
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExchangeCoverageResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /v1/data-quality/coverage/{exchange}/{symbol}:
    get:
      tags:
      - Data Quality
      summary: Get symbol coverage with gaps
      description: 'Get data coverage for a specific symbol on an exchange, including gap detection showing periods where data may be missing. Supports optional `from`/`to` query params (Unix ms) to bound the gap detection window (default: last 30 days). Returns empirical data cadence when sufficient data is available. Historical coverage uses hour-level granularity. Note: May take 30-60 seconds on first request (gap detection results are cached server-side for 1 hour).'
      operationId: getSymbolCoverage
      parameters:
      - name: exchange
        in: path
        required: true
        description: Exchange name
        schema:
          type: string
          enum:
          - hyperliquid
          - lighter
          - hip3
          - spot
          - hip4
          example: hyperliquid
      - name: symbol
        in: path
        required: true
        description: Symbol name (e.g., BTC, ETH)
        schema:
          type: string
          example: BTC
        example: BTC
      - name: from
        in: query
        required: false
        description: 'Start of gap detection window (Unix milliseconds). Default: now - 30 days.'
        schema:
          type: integer
          format: int64
          example: 1704067200000
      - name: to
        in: query
        required: false
        description: 'End of gap detection window (Unix milliseconds). Default: now.'
        schema:
          type: integer
          format: int64
          example: 1706745600000
      responses:
        '200':
          description: Symbol coverage with gaps
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SymbolCoverageResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /v1/data-quality/incidents:
    get:
      tags:
      - Data Quality
      summary: List incidents
      description: List data quality incidents with filtering and pagination.
      operationId: listIncidents
      parameters:
      - name: status
        in: query
        description: Filter by incident status
        schema:
          type: string
          enum:
          - open
          - investigating
          - identified
          - monitoring
          - resolved
      - name: exchange
        in: query
        description: Filter by exchange
        schema:
          type: string
      - name: since
        in: query
        description: Only show incidents starting after this timestamp (Unix ms)
        schema:
          type: integer
          format: int64
      - name: limit
        in: query
        description: 'Maximum results per page (default: 20, max: 100)'
        schema:
          type: integer
          default: 20
          maximum: 100
      - name: offset
        in: query
        description: Pagination offset
        schema:
          type: integer
          default: 0
      responses:
        '200':
          description: List of incidents
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IncidentsResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /v1/data-quality/incidents/{id}:
    get:
      tags:
      - Data Quality
      summary: Get incident
      description: Get a specific incident by ID.
      operationId: getIncident
      parameters:
      - name: id
        in: path
        required: true
        description: Incident ID
        schema:
          type: string
      responses:
        '200':
          description: Incident details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Incident'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /v1/data-quality/latency:
    get:
      tags:
      - Data Quality
      summary: Get latency metrics
      description: Get current latency metrics for supported venue families including WebSocket, REST API, and data freshness.
      operationId: getLatencyMetrics
      responses:
        '200':
          description: Latency metrics
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LatencyResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /v1/data-quality/sla:
    get:
      tags:
      - Data Quality
      summary: Get SLA metrics
      description: Get SLA compliance metrics for a specific month including uptime, completeness, and latency targets vs actuals.
      operationId: getSlaMetrics
      parameters:
      - name: year
        in: query
        description: Year (defaults to current year)
        schema:
          type: integer
          example: 2026
      - name: month
        in: query
        description: Month 1-12 (defaults to current month)
        schema:
          type: integer
          minimum: 1
          maximum: 12
          example: 1
      responses:
        '200':
          description: SLA metrics
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SlaResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  schemas:
    CoverageResponse:
      type: object
      description: Overall coverage response
      properties:
        exchanges:
          type: array
          items:
            $ref: '#/components/schemas/ExchangeCoverageResponse'
    SlaResponse:
      type: object
      description: SLA compliance response
      properties:
        period:
          type: string
          description: Period covered (e.g., '2026-01')
        sla_targets:
          $ref: '#/components/schemas/SlaTargets'
        actual:
          $ref: '#/components/schemas/SlaActual'
        incidents_this_period:
          type: integer
        total_downtime_minutes:
          type: integer
    ExchangeStatus:
      type: object
      description: Status of a single exchange
      properties:
        status:
          type: string
          enum:
          - operational
          - degraded
          - outage
          - maintenance
        last_data_at:
          type:
          - string
          - 'null'
          format: date-time
          description: Timestamp of last received data
        latency_ms:
          type:
          - integer
          - 'null'
          description: Current latency in milliseconds
    StatusResponse:
      type: object
      description: Overall system status
      properties:
        status:
          type: string
          enum:
          - operational
          - degraded
          - outage
          - maintenance
          description: Overall system status
        updated_at:
          type: string
          format: date-time
          description: When this status was computed
        exchanges:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/ExchangeStatus'
          description: Per-exchange status
        data_types:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/DataTypeStatus'
          description: Per-data-type status
        active_incidents:
          type: integer
          description: Number of active incidents
    DataTypeCoverage:
      type: object
      description: Coverage for a data type
      properties:
        earliest:
          type: string
          format: date-time
          description: Earliest available data timestamp
        latest:
          type: string
          format: date-time
          description: Latest available data timestamp
        total_records:
          type: integer
          format: int64
          description: Total number of records
        symbols:
          type: integer
          description: Number of symbols with data
        resolution:
          type:
          - string
          - 'null'
          description: Data resolution (e.g., '1.2s', '1m')
        lag:
          type:
          - string
          - 'null'
          description: Current data lag
        completeness:
          type: number
          description: Completeness percentage (0-100)
    SymbolDataTypeCoverage:
      type: object
      description: Coverage for a symbol and data type
      required:
      - earliest
      - latest
      - total_records
      - completeness
      - gaps
      properties:
        earliest:
          type: string
          format: date-time
        latest:
          type: string
          format: date-time
        total_records:
          type: integer
          format: int64
        completeness:
          type: number
          description: 24-hour completeness percentage (0-100)
        historical_coverage:
          type:
          - number
          - 'null'
          description: Historical coverage percentage (0-100) based on hours with data / total hours in range
        gaps:
          type: array
          items:
            $ref: '#/components/schemas/CoverageGap'
          description: Detected data gaps within the requested time window
        cadence:
          allOf:
          - $ref: '#/components/schemas/DataCadence'
          description: Empirical data cadence measurement (present when sufficient data exists)
    SymbolCoverageResponse:
      type: object
      description: Per-symbol coverage response with gap detection
      required:
      - exchange
      - symbol
      - data_types
      properties:
        exchange:
          type: string
          description: Exchange name
        symbol:
          type: string
          description: Symbol name
        data_types:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/SymbolDataTypeCoverage'
    CompletenessMetrics:
      type: object
      properties:
        orderbook:
          type: number
        fills:
          type: number
        funding:
          type: number
        overall:
          type: number
    ExchangeCoverageResponse:
      type: object
      description: Coverage for a single exchange
      properties:
        exchange:
          type: string
          description: Exchange name
        data_types:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/DataTypeCoverage'
    IncidentsResponse:
      type: object
      description: Incidents list response
      properties:
        incidents:
          type: array
          items:
            $ref: '#/components/schemas/Incident'
        pagination:
          $ref: '#/components/schemas/Pagination'
    Error:
      type: object
      description: Error response
      properties:
        code:
          type: integer
          description: HTTP status code
        error:
          type: string
          description: Error message
        error_code:
          type: string
          description: 'Machine-readable error code. Common values: `invalid_query_params` (a query parameter failed to parse or validate) and `invalid_path_params` (a path parameter failed to parse). Other endpoint-specific codes exist; treat unknown codes as generic errors of the given HTTP status.'
        request_id:
          type: string
          format: uuid
          description: Unique request ID for support
    DataTypeStatus:
      type: object
      description: Status of a data type
      properties:
        status:
          type: string
          enum:
          - operational
          - degraded
          - outage
          - maintenance
        completeness_24h:
          type: number
          description: Data completeness over last 24 hours (0-100)
    DataCadence:
      type: object
      description: Empirical data cadence measurement based on last 7 days of data
      required:
      - median_interval_seconds
      - p95_interval_seconds
      - sample_count
      properties:
        median_interval_seconds:
          type: number
          description: Median interval between consecutive records in seconds
        p95_interval_seconds:
          type: number
          description: 95th percentile interval between consecutive records in seconds
        sample_count:
          type: integer
          format: int64
          description: Number of intervals sampled for this measurement
    DataFreshness:
      type: object
      description: Data freshness metrics
      properties:
        orderbook_lag_ms:
          type:
          - integer
          - 'null'
        fills_lag_ms:
          type:
          - integer
          - 'null'
        funding_lag_ms:
          type:
          - integer
          - 'null'
        oi_lag_ms:
          type:
          - integer
          - 'null'
    CoverageGap:
      type: object
      description: A gap in data coverage
      required:
      - start
      - end
      - duration_minutes
      properties:
        start:
          type: string
          format: date-time
          description: Start of gap (last data before gap)
        end:
          type: string
          format: date-time
          description: End of gap (first data after gap)
        duration_minutes:
          type: integer
          description: Gap duration in minutes
    SlaActual:
      type: object
      properties:
        uptime:
          type: number
        uptime_status:
          type: string
          enum:
          - met
          - missed
        data_completeness:
          $ref: '#/components/schemas/CompletenessMetrics'
        completeness_status:
          type: string
          enum:
          - met
          - missed
        api_latency_p99_ms:
          type: integer
        latency_status:
          type: string
          enum:
          - met
          - missed
    SlaTargets:
      type: object
      properties:
        uptime:
          type: number
          description: Uptime target percentage
        data_completeness:
          type: number
          description: Data completeness target percentage
        api_latency_p99_ms:
          type: integer
          description: API P99 latency target in ms
    Incident:
      type: object
      description: Data quality incident
      properties:
        id:
          type: string
          description: Unique incident ID
        status:
          type: string
          enum:
          - open
          - investigating
          - identified
          - monitoring
          - resolved
        severity:
          type: string
          enum:
          - minor
          - major
          - critical
        exchange:
          type:
          - string
          - 'null'
          description: Affected exchange
        data_types:
          type: array
          items:
            type: string
          description: Affected data types
        symbols_affected:
          type: array
          items:
            type: string
          description: Affected symbols
        started_at:
          type: string
          format: date-time
        resolved_at:
          type:
          - string
          - 'null'
          format: date-time
        duration_minutes:
          type:
          - integer
          - 'null'
        title:
          type: string
        description:
          type:
          - string
          - 'null'
        root_cause:
          type:
          - string
          - 'null'
        resolution:
          type:
          - string
          - 'null'
        records_affected:
          type:
          - integer
          - 'null'
          format: int64
        records_recovered:
          type:
          - integer
          - 'null'
          format: int64
    ExchangeLatency:
      type: object
      description: Latency metrics for an exchange
      properties:
        websocket:
          allOf:
          - $ref: '#/components/schemas/WebSocketLatency'
        rest_api:
          allOf:
          - $ref: '#/components/schemas/ApiLatency'
        data_freshness:
          $ref: '#/components/schemas/DataFreshness'
    Pagination:
      type: object
      description: Pagination info
      properties:
        total:
          type: integer
          description: Total number of items
        limit:
          type: integer
          description: Page size limit
        offset:
          type: integer
          description: Current offset
    WebSocketLatency:
      type: object
      properties:
        current_ms:
          type: integer
        avg_1h_ms:
          type: integer
        avg_24h_ms:
          type: integer
        p99_24h_ms:
          type:
          - integer
          - 'null'
    LatencyResponse:
      type: object
      description: Latency metrics response
      properties:
        measured_at:
          type: string
          format: date-time
        exchanges:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/ExchangeLatency'
    ApiLatency:
      type: object
      properties:
        current_ms:
          type: integer
        avg_1h_ms:
          type: integer
        avg_24h_ms:
          type: integer
  responses:
    Unauthorized:
      description: Authentication required
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: 401
            error: Missing or invalid API key. Provide X-API-Key header.
    BadRequest:
      description: Invalid request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: 400
            error: 'Failed to deserialize query string: limit: invalid digit found in string'
            error_code: invalid_query_params
            request_id: 3f2a9c71-5b0e-4d68-9a4c-7e1d2b6f8a05
    NotFound:
      description: Resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: 404
            error: Resource not found
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
      description: API key for authentication. Get yours at https://0xarchive.io/dashboard
externalDocs:
  description: 0xArchive Developer Docs
  url: https://docs.0xarchive.io/
x-0xarchive-docs-language-overlay:
  name: data-quality-supported-venue-language
  reason: Public OpenAPI language must describe supported venue-family coverage instead of broad exchange coverage.
  updated_at: '2026-05-24'
  remove_when: Public source OpenAPI uses supported venue-family wording for data-quality coverage and latency descriptions.
x-0xarchive-docs-overlay:
  name: hyperliquid-spot
  reason: Hyperliquid Spot routes are included in the local REST contract.
  source: live endpoint behavior and public CLI/MCP/Skill surface truth
  updated_at: '2026-05-08'
  remove_when: Public source contract includes the same Spot route family.