POST
Fetch a page

Authorizations

Authorization
string
header
required

Every request carries a bearer API key, which looks like ph_live_.... Keep keys server-side, because a key grants full control of your sessions. A missing header returns 401; an invalid or revoked key currently returns 403, so treat the two together as authentication failure.

Body

application/json
session_id
string
required

An existing session to run the fetch in.

url
string
required

The page to load. Public http/https only.

render
boolean
default:true

Execute JavaScript. Set false for static pages; it is faster.

record
boolean
default:false

Capture a session replay and return replay_url.

include_html
boolean
default:false

Also return the rendered DOM in html.

async_mode
boolean
default:false

Return a job_id immediately instead of waiting. Poll /v1/job/{job_id}.

Response

Successful Response

session_id
string
required
status
string
required

ok, blocked, error, or pending.

final_url
string
default:""

The URL after redirects.

job_id
string | null

Set only when async_mode was requested.

captcha
string
default:none

none, or the challenge family detected.

title
string | null

The page title.

text
string
default:""

Extracted text content.

html_len
integer
default:0

Rendered DOM size in bytes.

html
string | null

The rendered DOM. Present only when include_html was set.

self_healed
boolean
default:false

A block was detected and recovered automatically.

recovery
Recovery · object | null

Attempts, winning strategy, and cost of the recovery.

replay_url
string | null

Present only when record was set.

detected
Detected · object | null

Challenge classification.

content_ok
boolean
default:false

The authoritative signal that a real document came back. Trust this over status.

status_reconciled
string | null

Set when a blocked status was flipped to ok because real content came back.