EmailmoversMyDataHub docs
Browse the docs

Reference / REST reference

Reference

Verify a compliance receipt

POST /v1/compliance/receipts/verify. Check a receipt's JWS against the published key without an account, and learn whether the order exists, until when its licence is in force and whether it was revoked.

Generated from the contractsView as Markdown

POST /v1/compliance/receipts/verify

Check a receipt's JWS against the published key without an account, and learn whether the order exists, until when its licence is in force and whether it was revoked. One agent can prove to another that a list is licensed and screened. REST only.

PropertyValue
EndpointPOST https://mydatahub.emailmovers.com/v1/compliance/receipts/verify
Operation idverifyComplianceReceipt
CostFree (0 credits)
AccessNo account, key or token needed.
TagCompliance

Request

Parameters

NameInTypeRequiredDescription
MyDataHub-VersionheaderstringnoThe dated API version, pinned per key when left out. Non-breaking changes ship as new dates; the path major changes only for breaking changes, with a 12 month deprecation window.

Body

MemberTypeRequiredDescription
jwsstringyesThe compact JWS to check.

Example request

curl -X POST "https://mydatahub.emailmovers.com/v1/compliance/receipts/verify" \
  -H "Content-Type: application/json" \
  --data '{
  "jws": "eyJhbGciOiJFUzI1NiIsImtpZCI6InJjcHQtMjAyNi0wOSJ9.eyJyZWNlaXB0X2lkIjoicmNwdF8wMUpCNE5BMlE1VzhaQUs4UTJWN1hOM005UiJ9.MEUCIQDexampleSignatureOnly"
}'

Responses

200: The verdict.

Headers: RateLimit, RateLimit-Policy.

MemberTypeAlways presentDescription
validbooleanyesThe signature checks out against the published key.
order_existsbooleanyes
licence_in_force_untilstring (date) or nullyes
revokedbooleanyes
receipt_idstring or nullyes
checked_atstring (date-time)yes

Example response

{
  "valid": true,
  "order_exists": true,
  "licence_in_force_until": "2027-09-26",
  "revoked": false,
  "receipt_id": "rcpt_01JB4NA2Q5W8ZAK8Q2V7XN3M9R",
  "checked_at": "2026-10-01T09:00:00Z"
}

Errors

Every error is a problem object with a code and a next_step. Every response carries the RateLimit and RateLimit-Policy headers; see Rate limits.

StatusProblem codesWhen
400invalid-request, idempotency-key-required, unsupported-versionThe request could not be read, or an Idempotency-Key is missing.
422validation-failed, quote-required, dataset-unavailableThe request is not valid. errors lists every problem with a JSON pointer and did_you_mean.
429rate-limitedToo many requests. Wait for Retry-After.
Any other failureinternal-error, service-unavailable, tps-screen-expiredSomething failed on our side (500 internal-error) or the service is briefly unavailable (503 service-unavailable, with Retry-After). Nothing was charged; retry with the same Idempotency-Key. A count, sample, quote or order with telephone in play is also refused with 503 tps-screen-expired, with no Retry-After, while the dataset version's TPS and CTPS screen is more than 28 days old.