Skip to main content

Endpoint

Over REST, authenticate with the x-api-key header against https://api.seltz.ai. The SDKs speak gRPC to grpc.seltz.ai; pass your API key to the client constructor and it is sent on every call.

SDK methods

Both return the response message whole rather than the list inside it.

Request

formats names the representations to return. "markdown" returns the page’s main content with navigation, footers and ads removed. An unrecognized name is rejected rather than dropped. Sending an empty list is the same as leaving the field out. tier selects the price. "pro" is the only value, and an omitted tier resolves to it. An unrecognized value is rejected rather than defaulted. timeout_ms is a wall-clock budget for one URL, not for the batch. URLs are fetched concurrently, so a batch takes roughly as long as its slowest entry. A URL that runs out gets error.code = "timeout"; the others are unaffected. Values above the maximum are clamped, not rejected.

Result

Limits

Duplicate URLs in one request are rejected: requested_url is the correlation key, and a repeated key is ambiguous.

Errors

The request was rejected

A rejection is a non-200 with this body. Nothing was fetched and nothing was billed. The code is a stable name and is the field to branch on; the message is prose and can change.
Unrecognized fields in the request body are ignored.
Over gRPC the same failures arrive as status codes rather than as this body.

One URL failed

A page that could not be fetched is not a rejection. It arrives inside the 200 as that result’s status = "error" and an error.code. The set grows, so treat an unrecognized code as a generic failure rather than rejecting the result.

Enum spelling

status is spelled three ways depending on where you read it.