inndx/
GitHub

Reference

Full HTTP contract for the Scrape API including endpoints, parameters, response shapes, and error codes.

Base URL

https://api.inndx.io

Authentication

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

POST/v1/scrape

Fetches a URL and returns its content in one or more formats. This is the primary endpoint for full control over output and proxy settings.

Request body
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 respect Accept-Language.

Format objects

Each entry in formats is an object with a kind field and optional modifiers:

Format object
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 kind is "markdown".

Response body
url
string

The URL that was fetched, after any redirects.

results
Result[]

One entry per requested format, in the same order as the formats input.

Result object
kind
string

The format of this result. Mirrors the kind from 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

GET/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.

Request headers
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 respect Accept-Language.

Example

tempo request https://api.inndx.io/v1/scrape/https://example.com

Rate limits

See Pricing for rate limits and API limits.


HTTP status codes

StatusMeaning
200 OKThe request succeeded.
402 Payment RequiredNo payment was attached. The response body contains an MPP payment challenge.
422 Unprocessable EntityThe request body failed validation.
429 Too Many RequestsRate limit exceeded.
500 Internal Server ErrorAn 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."
}

Search docs

Search the Cloud documentation