Skip to main content
Outside TypeScript there is no hand-written SDK, and there does not need to be one. The OpenAPI document is emitted from the running server, so a generated client is as current as the reference on this site.

The document

The same document backs every endpoint page under Endpoints, and can be downloaded from the menu at the top of any of them.
The API is internal today — same origin, session cookie. A generated client works, but you have to bring your own session. See Authentication.

Generating a client

Most generators handle the request/response shapes fine but do not model GET /api/zones/:name as a stream — they will hand you the whole body at once, or nothing. If you need the frames as they arrive, read that one endpoint by hand: it is plain server-sent events over a normal response body.

By hand

The whole API is JSON over HTTP with a cookie. There is nothing to install.

Two things to get right in any language

diagnosis.observed has a different shape for each of the thirteen code values, and a zone frame’s data has a different shape per step. In a language without unions, that is a switch on the tag before you touch the rest.
Falling through to fix is always safe: every diagnosis has one.
unresolvable (502) and rate_limited (429) are worth a backoff. Nothing else is — see the table.On 429, honour Retry-After. Forcing runs in a loop does not make DNS answer faster; the verification’s own waitEstimate.secondsRemaining is the honest interval.