Docs

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

https://oneforcaptcha.com

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.

ServicetypeinputssolutionPrice
TikTok Whirl (rotate)tiktok_whirlinner_b64, outer_b64index, final_x, drag_width$0.80 / 1000
TikTok Slide (puzzle)tiktok_slidebg_b64, piece_b64width, height, gap, piece, score$0.80 / 1000
TikTok 3D (object match)tiktok_3dimage_b64points$1.50 / 1000
Arkose FunCaptchaarkose_tokenpublic_key, proxyok, 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.

POST/createTask

Submits 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.

ParameterRequiredDescription
X-API-KEYYesCustomer key — request header, never a URL parameter
typeYestiktok_whirl | tiktok_slide | tiktok_3d | arkose_token
inputsYesObject 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" }
GET/getTaskResult

Returns 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.

ParameterRequiredDescription
X-API-KEYYesCustomer key — request header, never a URL parameter
task_idYesThe 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 } }
GET/getBalance

Returns your current prepaid balance.

ParameterRequiredDescription
X-API-KEYYesCustomer 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.