Skip to main content
POST
/
v1
/
design
/
extract
/
{extractor}
Run a single extractor
curl --request POST \
  --url https://api.example.com/v1/design/extract/{extractor} \
  --header 'Content-Type: application/json' \
  --data '
{
  "url": "<string>",
  "endUserId": "<string>"
}
'

Documentation Index

Fetch the complete documentation index at: https://docs.stablebrowse.com/llms.txt

Use this file to discover all available pages before exploring further.

This endpoint is identical to POST /v1/design/extract with extractors: ["<extractor>"] — it just lets you encode the extractor in the path so URL-based routing, audit logs, and dashboards group cleanly by extractor type.

Path parameters

extractor
string
required
One of: images, fonts, colors, icons, tokens, logo. An unknown value returns 400.

Request body

url
string
required
The page to extract from. Must be http:// or https://.
endUserId
string
required
Opaque identifier for the user this extraction runs on behalf of. ≤ 256 characters.
The body’s extractors field, if passed, is ignored on this endpoint — the path parameter wins.

Response — 202 Accepted

Same shape as POST /v1/design/extract. The returned extractors array always contains exactly the path-supplied extractor.

When to use this vs the combined endpoint

This is just a routing alias. From the SDK, it’s usually simpler to call client.design.run({ ..., extractors: ["colors"] }) against the combined endpoint — same result, one fewer URL to remember. Use the path-aliased endpoint when you want the extractor name surfaced in URL-based logs, audit trails, or routing/proxy rules.

Example

# SDK — same client.design.run, just narrow `extractors` to one.
task = client.design.run(
    url="https://www.figma.com/",
    end_user_id="alice",
    extractors=["colors"],
)
print(task.design["results"]["colors"]["colors"][:3])
Response
{
  "taskId": "7f2a1b8c-...",
  "sessionId": "a31d5e9f-...",
  "status": "pending",
  "extractors": ["colors"],
  "createdAt": "2026-05-04T22:11:02Z"
}
Poll GET /v1/tasks/{taskId} for the result — see Submit design extraction → Get-task response.

Errors

CodeMeaning
400Unknown extractor; url missing or not http(s); endUserId missing or > 256 chars; invalid JSON body
401Missing Authorization header
403Revoked API key
429Monthly task quota exceeded
500Worker enqueue failed (transient; safe to retry)