---
title: "Verify Ed25519 receipt signature (REST)"
method: POST
path: "/v5/verify"
tags: ["Verification"]
---

# Verify Ed25519 receipt signature (REST)

`POST /v5/verify`

## Request

- Base URL: `https://headlessoracle.com`
- URL: `https://headlessoracle.com/v5/verify`
- Auth: none declared

Public endpoint. Accepts a signed market receipt and verifies the Ed25519 signature in-worker. Returns validity, expiry status, and reason. Offline verification via @headlessoracle/verify is also supported and MAY be preferred by agents that don't need a REST round-trip.

## Request body

- object
  - `receipt` object, required: Complete signed receipt as returned by /v5/status or /v5/demo.

## Response `200`

Verification result

- object
  - `valid` boolean
  - `expired` boolean
  - `reason` 'SIGNATURE_VALID' | 'INVALID_SIGNATURE' | 'MALFORMED_RECEIPT' | 'ORACLE_NOT_CONFIGURED' | 'RECEIPT_EXPIRED — re-fetch required' | 'CHECKS_FAILED': Signature and expiry outcome. CHECKS_FAILED: the signature verifies and the receipt is unexpired, but another check in `checks` failed; `valid` is false.
  - `mic` string, nullable
  - `status` string, nullable
  - `expires_at` string, date-time, nullable
  - `checks` object: Per-check breakdown: each member is { passed, detail }.
  - `receipt_summary` object, nullable

## Other responses

- `400`: Missing or malformed body

---

[API](https://skmtc.dev/headlessoracle/apis/headless-oracle.md) · [All operations](https://skmtc.dev/headlessoracle/apis/headless-oracle/llms.txt) · [OpenAPI document](https://skmtc.dev/headlessoracle/apis/headless-oracle/revisions/4e82fe332f29?raw)
