All-in-One Extract
Full request and response reference for POST /v1/extract.
POST /v1/extract
Use this endpoint when you want a single request to fetch a page and return structured output.
Authentication
- External requests must include both
X-API-KeyandX-Project-Id - Create or copy them from API key settings on the current site
- Use
https://api.lexmount.comfor COM projects andhttps://api.lexmount.cnfor CN projects; credentials must match the API region
Request Body
{
"extract": {
"url": "https://example.com"
}
}Fields
| Field | Type | Required | Description |
|---|---|---|---|
extract | object | Yes | Main extraction request |
extract.url | string | No | Target page URL |
extract.dom_id | string | No | Existing DOM snapshot ID |
trace.include_steps | bool | No | Return workflow steps when set to true |
trace.include_raw_dom | bool | No | Return raw DOM when set to true |
Rules:
- At least one of
extract.urlorextract.dom_idis required - Set
trace.include_steps=truewhen you need workflow diagnostics
Extraction Options
| Field | Type | Description |
|---|---|---|
extract.options.engine_preference | string | Defaults to auto; see Dump DOM for engine values |
extract.options.user_agent | string | Optional fetch User-Agent |
{
"extract": {
"url": "https://example.com",
"options": {
"engine_preference": "chrome_cdp",
"user_agent": "MyFetcher/1.0"
}
},
"trace": { "include_steps": true }
}When extract.dom_id is present, extraction reuses the snapshot instead of fetching the URL. Prefer sending only the returned dom_id rather than an unrelated URL. Changing the engine cannot re-render an existing snapshot; fetch the URL again for that.
/v1/extract currently uses a service-controlled 30-second extraction deadline. extract.options.timeout_ms does not override it, and the legacy workflow field does not configure it. The public gateway has its own timeout. Script/style filtering belongs to Dump DOM, not to an extraction output switch. template_id is no longer supported; templates are matched automatically. Do not rely on internal template-debug or force-generation fields. Unknown JSON fields are rejected.
Minimal Example
API_KEY='<your-api-key>'
PROJECT_ID='<your-project-id>'
curl -sS -X POST https://api.lexmount.cn/v1/extract \
-H 'Content-Type: application/json' \
-H "X-API-Key: $API_KEY" \
-H "X-Project-Id: $PROJECT_ID" \
-d '{"extract":{"url":"https://example.com"}}'Response Shape
Top-level response fields:
| Field | Description |
|---|---|
request_id | Request correlation ID. Also returned in the X-Request-ID response header |
result | Structured extraction result on success |
metadata | Extra metadata such as dom_id and server_elapsed_ms |
error | Error object on failure |
trace | Workflow trace steps; returned only when include_steps=true |
raw_dom | Raw DOM content; returned only when include_raw_dom=true |
Use request_id when you need to report a problem or correlate a client-side response with server-side request logs.
Common fields inside result:
urlfinal_urlstatus_codetitledescriptionmain_textpublish_timeauthorlanguagelinksimagesenginedom_id
Reuse an Existing dom_id
curl -sS -X POST https://api.lexmount.cn/v1/extract \
-H 'Content-Type: application/json' \
-H "X-API-Key: $API_KEY" \
-H "X-Project-Id: $PROJECT_ID" \
-d '{
"extract": {
"dom_id": "123"
}
}'Enable Trace
By default, POST /v1/extract does not return trace.
To inspect workflow diagnostics, explicitly enable it:
curl -sS -X POST https://api.lexmount.cn/v1/extract \
-H 'Content-Type: application/json' \
-H "X-API-Key: $API_KEY" \
-H "X-Project-Id: $PROJECT_ID" \
-d '{
"extract": {
"url": "https://example.com"
},
"trace": {
"include_steps": true
}
}'Return Raw DOM
By default, raw_dom is not returned.
Enable it only when you actually need the captured DOM in the response:
curl -sS -X POST https://api.lexmount.cn/v1/extract \
-H 'Content-Type: application/json' \
-H "X-API-Key: $API_KEY" \
-H "X-Project-Id: $PROJECT_ID" \
-d '{
"extract": {
"url": "https://example.com"
},
"trace": {
"include_raw_dom": true
}
}'raw_domcan be very large and is not recommended for normal production calls
Debug Mode
Turn on both debug fields only when you need to inspect the workflow and the captured page:
curl -sS -X POST https://api.lexmount.cn/v1/extract \
-H 'Content-Type: application/json' \
-H "X-API-Key: $API_KEY" \
-H "X-Project-Id: $PROJECT_ID" \
-d '{
"extract": {
"url": "https://example.com"
},
"trace": {
"include_steps": true,
"include_raw_dom": true
}
}'tracemakes responses largerraw_domcan be very large and is not recommended for normal production calls
For common failures, see Common Errors.
Field Types and Optional Output
result.status_codeis the target page's status, not the API response's HTTP status.result.fetched_atis a timestamp string;publish_time, when present, is also a timestamp string.- A
linksentry is{ "text": "Example", "href": "https://example.com/" }; animagesentry is{ "src": "https://example.com/image.png", "alt": "Example" }. description,main_text,author,publish_time,language,links,images,debug, andextramay be omitted. Handle absent arrays before iterating them.extramay contain Open Graph, JSON-LD, or DOM summaries; its content varies by page and extraction method.metadatamay containdom_id, an opaquetemplate_id, andserver_elapsed_ms. The template identifier is not a supported input option.- Even when requested,
raw_dommay be omitted if no snapshot content is available. Individualtracesteps also vary with the processing path.
See Dump DOM for snapshot reuse and recovery.
