veil

Open browser verification

Open a message check that runs in the reader’s browser.

GET/verify
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/verify'

A fragment can contain b with base64url of the full signature block, or u, m and s together. u is the card number; m is base64url of the message’s UTF-8 bytes; s is base64url of the signature bytes. Omit base64 padding.

text
https://veil.rip/verify#b=BASE64URL_BLOCK
https://veil.rip/verify#u=1&m=BASE64URL_MESSAGE&s=BASE64URL_SIGNATURE

Response#

HTTP 200text/html

A page that accepts pasted signature blocks and fragment links. Data after # is not sent to the server.

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#

  • The page’s sharing controls produce supported fragment links. A message sent to the API or a /v/ preview URL reaches the server.

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.