veil

Open the warrant canary

Check the warrant canary’s signature in the reader’s browser.

GET/canary
Access
Public access
Client
Open as a page

Parameters#

NameLocationMeaning
langQueryen or it. English is the default.

Request examples#

cURL
curl -fsS 'https://veil.rip/canary'

Response#

HTTP 200text/html

A page that reads GET /v1/canary and checks the latest statement in the browser: its text, its date, the signer’s key and card, the log and its witnesses.

Response headers#

HeaderValueMeaning
Content-Typetext/htmlUse the declared media type before choosing a parser.
DateHTTP dateServer time. Compare it with your clock when signing requests.
Retry-Afterinteger seconds, on rate_limited or busyWait at least this long before retrying. Other 429/503 codes do not necessarily include it.

Usage notes#

  • Every page of Veil links here from its footer, with the date of the latest statement, or a warning when it is stale or missing.

Errors#

API errors return an error object. Use error.code for program logic; error.message is English text for people and can change. Response and error guide

Shared request errors
HTTPCodeMeaning and next step
429rate_limited

An anonymous, signed-request or API-key allowance was exceeded.

Wait at least Retry-After seconds. Share a queue and retry budget across your workers.

500internal_error

An unexpected server error occurred. Internal details are not returned.

Retry reads with bounded backoff. Check write results before sending a new signed operation.

503busy

The application has reached a temporary concurrency or database limit.

Wait Retry-After seconds and retry with bounded backoff.