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. The remaining fields depend on which kind you choose:

One of
markdown
kind
"markdown"required

Selects markdown output.

skip_tags
string[]

HTML tags to strip from the output before converting to markdown.

html
kind
"html"required

Selects HTML output.

json
kind
"json"required

Selects structured JSON output.

fields
Field[]

The fields to extract from the page. See Output formats for the full field map syntax.

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 objects

Each entry in results corresponds to one of the requested formats. The shape depends on the kind field:

One of
markdown
kind
"markdown"required

Indicates markdown output.

content
string

The page content converted to markdown.

html
kind
"html"required

Indicates HTML output.

content
string

The raw HTML of the page after loading and rendering.

json
kind
"json"required

Indicates structured JSON output.

data
object

The structured data extracted from the page according to the requested field map.

binary
kind
"binary"required

Indicates binary output.

content
string

The raw response bytes, base64-encoded.

content_type
string

The MIME type of the content (e.g. "image/png"). Useful for handling the binary data appropriately.

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