---
title: "Look up a claim hash"
method: GET
path: "/v1/claims/verify/{hash}"
tags: ["Claims"]
---

# Look up a claim hash

`GET /v1/claims/verify/{hash}`

## Request

- Base URL: `https://api.maplespike.ca/v1`
- URL: `https://api.maplespike.ca/v1/v1/claims/verify/{hash}`
- Auth: none required

A hash match checks canonical record integrity only. Provenance evidence and source retrieval time are available only when recorded; this lookup does not authenticate the source or establish reuse rights.

## Path parameters

- `hash` string, required

## Response `200`

Claim hash lookup and available evidence

- ClaimVerificationResponse: Common API envelope. Payload and citation fields vary by route and source.
  - `success` boolean
  - `data` object: Stored or indexed record hash match and evidence when available.
    - `verified` boolean
    - `found` boolean
    - `sha256` string
    - `source` string
    - `source_name` string
    - `source_url` string
    - `retrieved_at` string, date-time, nullable: Source acquisition time; null when not recorded.
    - `claim_created_at` string, date-time, nullable: Quill claim registration time, not source retrieval time.
    - `license` string, nullable: Publisher metadata or a notice to consult source terms; not a reuse grant.
    - `license_url` string
    - `license_basis` string
    - `provenance_evidence` ProvenanceEvidence: Evidence inventory only; it does not establish source identity, completeness, or reuse rights.
      - `schema_version` 'quill.provenance.v1', required
      - `record_integrity` object, required
        - `algorithm` 'SHA-256'
        - `digest` string
        - `scope` 'canonical-json-record'
        - `canonicalization` 'quill-canonical-json-v1'
      - `acquisition` object, required
        - `status` 'captured' | 'not-captured'
        - `association` 'url-matched-not-content-verified' | 'not-established' | 'none'
        - `artifacts` object[]
          - `association` 'url-matched-not-content-verified' | 'not-established'
          - `evidence_source` 'explicit-record-evidence' | 'shared-http-client-capture'
          - `url` string
          - `retrieved_at` string, date-time
          - `sha256` string
          - `hash_scope` 'http-client-response-body-utf8'
          - `status_code` integer
          - `media_type` string, nullable
          - `byte_length` integer, nullable
          - `etag` string, nullable
          - `last_modified` string, nullable
          - `url_redacted` boolean
          - `body_capture` 'complete-http-client-body' | 'empty-body-not-captured'
      - `transformations` object, required
        - `status` 'pipeline-reported' | 'not-recorded'
        - `coverage` 'declared-steps-only'
        - `steps` string[]
        - `stages` object
          - `module_code_revision` string, nullable
          - `parser_version` string, nullable
          - `transform_code_revision` string, nullable
      - `publisher_terms` object, required
        - `status` 'publisher-metadata-observed' | 'source-configuration-only' | 'not-observed'
        - `label` string, nullable
        - `url` string, nullable
        - `observed_fields` string[]
    - `verification_scope` 'claim-store-hash-match' | 'pipeline-index-hash-match'
    - `claim` string
    - `quality` object, nullable
    - `verify_command` string
  - `text` string, nullable
  - `error` ApiError
    - `code` string
    - `message` string
    - `message_fr` string
    - `details` unknown[]
      - unknown
  - `meta` ResponseMeta
    - `requestId` string
    - `timestamp` string, date-time: API response timestamp, not source retrieval time.
    - `version` string
    - `usage` object
      - `periodCalls` integer
      - `periodLimit` integer
      - `tier` string
    - `agent` string
    - `action` string
    - `authMethod` string
    - `creditsCharged` number
    - `cacheStatus` 'hit' | 'miss' | 'mock'
    - `durationMs` number
  - `quality` QualityMeta
    - `freshness_seconds` number
    - `source_uptime_7d` number
    - `confidence` 'high' | 'medium' | 'low'
    - `certainty_score` number
    - `last_verified` string, date-time, nullable
    - `data_completeness` string
  - `citation` CitationMeta
    - `source_name` string
    - `source_url` string
    - `retrieved_at` string, date-time, nullable: Source acquisition time only when observed.
    - `data_hash` string: For claim records, SHA-256 of canonical Quill record JSON, not upstream response bytes.
    - `license` string: Publisher metadata or a notice to consult source terms; not a reuse grant.
    - `license_url` string
    - `license_basis` 'publisher-metadata' | 'source-configuration' | 'no-publisher-declaration'
    - `attribution_text` string
    - `update_frequency` string
    - `original_format` string
    - `citation_text` string
    - `citation_footnote` string
    - `provenance_evidence` ProvenanceEvidence: Evidence inventory only; it does not establish source identity, completeness, or reuse rights.
      - `schema_version` 'quill.provenance.v1', required
      - `record_integrity` object, required
        - `algorithm` 'SHA-256'
        - `digest` string
        - `scope` 'canonical-json-record'
        - `canonicalization` 'quill-canonical-json-v1'
      - `acquisition` object, required
        - `status` 'captured' | 'not-captured'
        - `association` 'url-matched-not-content-verified' | 'not-established' | 'none'
        - `artifacts` object[]
          - `association` 'url-matched-not-content-verified' | 'not-established'
          - `evidence_source` 'explicit-record-evidence' | 'shared-http-client-capture'
          - `url` string
          - `retrieved_at` string, date-time
          - `sha256` string
          - `hash_scope` 'http-client-response-body-utf8'
          - `status_code` integer
          - `media_type` string, nullable
          - `byte_length` integer, nullable
          - `etag` string, nullable
          - `last_modified` string, nullable
          - `url_redacted` boolean
          - `body_capture` 'complete-http-client-body' | 'empty-body-not-captured'
      - `transformations` object, required
        - `status` 'pipeline-reported' | 'not-recorded'
        - `coverage` 'declared-steps-only'
        - `steps` string[]
        - `stages` object
          - `module_code_revision` string, nullable
          - `parser_version` string, nullable
          - `transform_code_revision` string, nullable
      - `publisher_terms` object, required
        - `status` 'publisher-metadata-observed' | 'source-configuration-only' | 'not-observed'
        - `label` string, nullable
        - `url` string, nullable
        - `observed_fields` string[]

## Other responses

- `400`: Invalid SHA-256 hash format
- `500`: Claim verification failed

---

[API](https://skmtc.dev/maplespike/apis/maplespike-api.md) · [All operations](https://skmtc.dev/maplespike/apis/maplespike-api/llms.txt) · [OpenAPI document](https://skmtc.dev/maplespike/apis/maplespike-api/revisions/02766ffbb83d?raw)
