---
title: "Verify any remediation receipt: POST its JSON; receipt_hash, key_id, key_published, signature. Public"
method: POST
path: "/api/receipt/verify"
---

# Verify any remediation receipt: POST its JSON; receipt_hash, key_id, key_published, signature. Public

`POST /api/receipt/verify`

## Request

- Base URL: `https://crawlcheck.io`
- URL: `https://crawlcheck.io/api/receipt/verify`
- Auth: none required

## Request body

- RemediationReceiptV1: A signed remediation receipt (GET /api/receipt?id=). receipt_id = rc1: + sha256 of the canonical JSON of every field except receipt_id and signature; signature = Ed25519 over 'crawlcheck-receipt-v1\n' + that sha256
  - `receipt_id` string, required
  - `kind` 'crawlcheck-remediation-receipt', required
  - `v` unknown, required
  - `issued_at` string, required
  - `issuer` object, required
    - `observer` string, nullable
    - `version_id` string, nullable
    - `version_tag` string, nullable
    - `key` object, required
      - `kid` string, required
      - `jwk` object, required
      - `published_in` string, nullable
  - `subject` object, required
    - `domain` string, required
  - `before` ReceiptSideV1, required
    - `report_id` string, nullable, required
    - `scanned_at` string, nullable, required
    - `grade` string, nullable
    - `score` number, nullable
    - `score_version` number, nullable
    - `refused` boolean
    - `findings` number, nullable
    - `manifest_sha256` string, nullable
    - `decision_root` string, nullable
    - `trace_id` string, nullable
  - `after` ReceiptSideV1, required
    - `report_id` string, nullable, required
    - `scanned_at` string, nullable, required
    - `grade` string, nullable
    - `score` number, nullable
    - `score_version` number, nullable
    - `refused` boolean
    - `findings` number, nullable
    - `manifest_sha256` string, nullable
    - `decision_root` string, nullable
    - `trace_id` string, nullable
  - `declared_fix` object, required
    - `kind` string
    - `declared_by` string, nullable
    - `declared_at` string, nullable
    - `plugin_version` string, nullable
    - `fixes` string[], nullable
    - `note` string, nullable
  - `deployed` object, required
    - `at` string, nullable
    - `basis` string, nullable
  - `verification` object, required
    - `verdict` 'improved' | 'unchanged' | 'mixed' | 'regressed', required
    - `summary` string, nullable
    - `comparable` boolean
    - `findings` object
    - `rows` object
    - `files` object[]
      - `path` string
      - `state` string
      - `before_sha256` string, nullable
      - `after_sha256` string, nullable
      - `before_status` number, nullable
      - `after_status` number, nullable
    - `rollback_needed` boolean
    - `rollback_steps` object[]
    - `method` string, nullable
  - `links` object
  - `signature` object, required
    - `v` number, nullable
    - `alg` 'Ed25519', required
    - `kid` string, required
    - `over` string, nullable
    - `receipt_sha256` string, required
    - `message` string, required
    - `sig` string, required
    - `signed_at` string, nullable
    - `canonical` string, nullable

## Response `200`

checks

- object
  - `kind` string
  - `ok` boolean
  - `receipt_id` string, nullable
  - `checks` object[]
    - `id` string
    - `ok` boolean, nullable
    - `why` string

---

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