veil

Read a private proof state

Resume a proof with its secret state token.

GET/v1/links/{state}
Access
Private code required
Client
Local or server client

Parameters#

NameLocationMeaning
stateRequiredPathThe private 64-character hexadecimal state returned by start.

Request examples#

cURL
curl -fsS 'https://veil.rip/v1/links/PROOF_STATE'

Response#

HTTP 200application/json

The challenge or verified grant, expiry and transfer information. Treat this response and the state as private.

FieldTypeMeaning
statestringPrivate proof-session state.
identityintegerTarget card number.
platformstringPlatform identifier.
methodstringProof method.
statusstringpending, returned, verified, used or expired.
expiresAtstringSession expiry time.
subjectstring | nullVerified normalised account identifier.
displaystring | nullVerified display name.
grantstring | nullSingle-use signed grant after verification, until used.
grantExpiresAtstring | nullGrant expiry time.
challengestring | nullPublic challenge instructions.
claimedstring | nullAccount requested at the start, for methods that require it.
holderinteger | nullCurrent card holding the verified account.
waitDaysinteger | nullTakeover cancellation period if another card holds it.
takeoverOpenboolean | nullWhether a takeover is already open.

Response headers#

HeaderValueMeaning
Content-Typeapplication/jsonUse the declared media type before choosing a parser.
DateHTTP dateServer time. Compare it with your clock when signing requests.
Cache-Controlno-storeDo not persist private or temporary responses in a shared cache.
Retry-Afterinteger seconds, on rate_limited or busyWait at least this long before retrying. Other 429/503 codes do not necessarily include it.

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

HTTPCodeMeaning and next step
400invalid_parameter

A path, query or body field is missing, malformed or outside its accepted range.

Correct the field named in error.message before sending again.

404not_found

The requested card, key, alias, code or resource was not found.

Check the identifier. Temporary codes and previews may already have expired or been used.

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.