Reference
Full HTTP contract for the Scrape API including endpoints, parameters, response shapes, and error codes.
Base URL
https://api.inndx.ioAuthentication
There is no API key. Every request is authenticated by attaching a signed MPP payment authorization. On the first unauthenticated request the server responds with 402 Payment Required and a payment challenge; your client signs the authorization from a funded Tempo wallet and retries. The SDKs and tempo request handle this exchange automatically. See How it works for the full flow.
Scrape URL
/v1/scrapeFetches a URL and returns its content in one or more formats. This is the primary endpoint for full control over output and proxy settings.
- url stringrequired
The page to fetch. Must be a valid absolute URL including scheme.
- formats Format[]
The output formats to return. Defaults to
[{ "kind": "markdown" }]when omitted. Each entry is a format object — see Output formats for the full list.- proxy string
Route the request through a proxy. Pass
"isp"to use an ISP residential proxy. Omit for a direct connection.- timeout_seconds number
Maximum time in seconds to wait for the page to load before returning an error. Applies per scrape call within a session.
- locale string
BCP 47 language tag sent with the request (e.g.
"en-US","fr-FR"). Influences the language of the returned content on pages that respectAccept-Language.
Format objects
Each entry in formats is an object with a kind field and optional modifiers:
- kind stringrequired
The output format. One of
"markdown","html","json", or"binary".- skip_tags string[]
HTML tags to strip from the output before converting to markdown. Only valid when
kindis"markdown".
- url string
The URL that was fetched, after any redirects.
- results Result[]
One entry per requested format, in the same order as the
formatsinput.
- kind string
The format of this result. Mirrors the
kindfrom the request.- content string
The output content. Binary results are base64-encoded.
Example
tempo request -X POST https://api.inndx.io/v1/scrape \
--json '{"url":"https://example.com","formats":[{"kind":"markdown"}],"locale":"en-US"}'Scrape URL Markdown
/v1/scrape/{url}Shortcut that fetches a URL and returns its content as markdown. No request body. Ideal for quick testing and for use with tempo request.
The {url} path segment is the full URL to fetch, including scheme.
- X-Scrape-Proxy string
Route the request through a proxy. Pass
"isp"to use an ISP residential proxy. Omit for a direct connection.- X-Scrape-Timeout-Seconds number
Maximum time in seconds to wait for the page to load before returning an error.
- X-Scrape-Locale string
BCP 47 language tag sent with the request (e.g.
"en-US","fr-FR"). Influences the language of the returned content on pages that respectAccept-Language.
Example
tempo request https://api.inndx.io/v1/scrape/https://example.comRate limits
See Pricing for rate limits and API limits.
HTTP status codes
| Status | Meaning |
|---|---|
200 OK | The request succeeded. |
402 Payment Required | No payment was attached. The response body contains an MPP payment challenge. |
422 Unprocessable Entity | The request body failed validation. |
429 Too Many Requests | Rate limit exceeded. |
500 Internal Server Error | An unexpected server error occurred. |
Error shapes
Validation error (422)
Returned when one or more request fields fail validation:
{
"error": "validation",
"fields": [
{
"field": "url",
"errors": ["must be a valid URL"]
}
]
}Generic error
Returned for all other non-2xx responses:
{
"error": "...",
"message": "A description of what went wrong."
}