API reference
The real product integration is the programmatic REST API, authenticated with an X-API-KEY. Submit a task with /createTask, poll /getTaskResult for the typed solution, and check /getBalance for your prepaid balance — the same three calls for every service, captcha or token.
Authentication
Programmatic requests are authenticated with an API key. Create one from API keys in your dashboard. Send it in the X-API-KEY request header — this is the only accepted method. One key works for every service.
X-API-KEY: ofc_live_xxx
Never put your API key in a URL (e.g. ?api-key=...) — query strings are written in plain text to server access logs, proxy logs, and browser history, and are the single most common way API keys leak. Query parameter authentication is not supported: a request that sends the key only as ?api-key=... is rejected with 400 Bad Request.
Base URL
Services
Every service uses the same createTask / getTaskResult flow — only the inputs you send and the typed solution you get back differ. Captcha images are sent base64-encoded (strip any data:image/…;base64, prefix); the token service takes a proxy and options.
| Service | type | inputs | solution | Price |
|---|---|---|---|---|
| TikTok Whirl (rotate) | tiktok_whirl | inner_b64, outer_b64 | index, final_x, drag_width | $0.80 / 1000 |
| TikTok Slide (puzzle) | tiktok_slide | bg_b64, piece_b64 | width, height, gap, piece, score | $0.80 / 1000 |
| TikTok 3D (object match) | tiktok_3d | image_b64 | points | $1.50 / 1000 |
| Arkose FunCaptcha | arkose_token | public_key, proxy | ok, token, finalized, request_id, duration_seconds, attempts | $0.80 / 1000 |
Ten more generic types (reCAPTCHA, hCaptcha, Turnstile, DataDome and others) are on the roadmap — see pricing for the full list. They aren’t solvable yet and have no API surface.
/createTaskSubmits a task for solving and holds its price (hold) from your balance. Returns a task id you poll with /getTaskResult. The same call serves every service — vary the type + inputs.
| Parameter | Required | Description |
|---|---|---|
| X-API-KEY | Yes | Customer key — request header, never a URL parameter |
| type | Yes | tiktok_whirl | tiktok_slide | tiktok_3d | arkose_token |
| inputs | Yes | Object of per-type fields — base64 images for captcha, public_key + proxy for arkose_token; see Services above |
curl -X POST "https://oneforcaptcha.com/createTask" \
-H "X-API-KEY: $KEY" \
-d '{"type":"tiktok_whirl","inputs":{"inner_b64":"<base64>","outer_b64":"<base64>"}}'
# arkose_token (public_key + proxy)
curl -X POST "https://oneforcaptcha.com/createTask" \
-H "X-API-KEY: $KEY" \
-d '{"type":"arkose_token","inputs":{"public_key":"XXXXXXXX-....","proxy":"http://user:pass@host:port"}}'
# 200
{ "task_id": "task_a1b2c3" }/getTaskResultReturns the current status of a task. Poll every 1–2 seconds until status is "ready". The charge is captured only once the task is solved; if it fails or expires, the hold is released.
| Parameter | Required | Description |
|---|---|---|
| X-API-KEY | Yes | Customer key — request header, never a URL parameter |
| task_id | Yes | The id returned by /createTask |
curl "https://oneforcaptcha.com/getTaskResult?task_id=task_a1b2c3" -H "X-API-KEY: $KEY"
# 200 (still working)
{ "status": "processing", "solution": null }
# 200 (solved — captcha)
{ "status": "ready", "solution": { "index": 2, "final_x": 184, "drag_width": 260 } }
# 200 (solved — arkose_token)
{ "status": "ready", "solution": { "ok": true, "token": "…|sup=1", "finalized": true, "attempts": 2, "duration_seconds": 8.4 } }/getBalanceReturns your current prepaid balance.
| Parameter | Required | Description |
|---|---|---|
| X-API-KEY | Yes | Customer key — request header, never a URL parameter |
curl -H "X-API-KEY: $KEY" "https://oneforcaptcha.com/getBalance"
# 200
{ "balance": 42.50, "currency": "USD" }Per-service guides
Each service has its own guide in the dashboard with the exact request/response shapes, copy-paste curl + Python, and any service-specific rules — open a service’s Docs tab or its Playground to try a live solve.
Captcha
tiktok_whirl, tiktok_slide, tiktok_3d · from $0.80 / 1000
Submit a TikTok captcha image and get back typed click/drag coordinates you replay in the challenge.
Arkose FunCaptcha
arkose_token · from $0.80 / 1000
Solve the Uber device/session challenge and return a usable auth token. Bring your own public proxy per task; the token is returned finalized and ready to use.
Dashboard API
The dashboard you’re signed into (playground, tasks, billing) uses this same wallet and task engine, but calls a separate cookie- and CSRF-token-authenticated surface under /api/v1/* instead of an X-API-KEY. It’s a convenience for using the product from a browser — the programmatic API above is what you integrate against.