veil

Open an explainer page

One explainer page, written in English and in Italian, with its questions and answers.

GET/learn/{slug}
Access
Public access
Client
Open as a page

Parameters#

NameLocationMeaning
slugRequiredPathThe page: public-key-directory, veil-vs-keybase, veil-vs-keyoxide, veil-vs-pgp-keyservers, verify-a-discord-account, release-signing, for-organizations or for-communities. Any other slug is the 404 page.
langQueryen or it. English is the default.

Request examples#

cURL
curl -fsS 'https://veil.pub/learn/public-key-directory'

Response#

HTTP 200text/html

A page with the article and its questions, in the language of the address, with an Article, a FAQPage and a BreadcrumbList in JSON-LD.

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#

  • An unknown slug answers 404 with the error page and noindex.

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
404not_found

No explainer page has this slug. A browser gets the HTML error page.

Use a slug from GET /learn.

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.