Token API
POST https://api.ninetile.io/v1/solves creates a solve. A successful solve returns a token and the user agent used. It does not guarantee acceptance by a target.
Request fields
type(required):hcaptchaorhcaptcha_enterprise.sitekey(required): the hCaptcha widget's UUID; reCAPTCHA keys are not supported.url(required): the HTTP or HTTPS page where the challenge appears; at most 2,048 characters.rqdata(optional): fresh request data when supplied by the page, at most 16,384 characters.user_agent(optional): browser user agent, at most 512 characters.proxy(optional): an HTTP(S) proxy string or object withhost,port,scheme,username, andpassword. The proxy host must be public. Without it, the service uses its own proxy pool.
curl 'https://api.ninetile.io/v1/solves?wait=60' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"type":"hcaptcha","sitekey":"f5ab1c2d-7e8f-4a9b-b1c2-d3e4f5a6b7c8","url":"https://example.com/"}'
Never paste a real API key or proxy password into shared examples. Sitekeys and URLs here are placeholders.
Waiting and polling
wait is an optional whole number from 1 to 90 seconds on create or retrieve. Without it, creation returns HTTP 202 with a solve ID. With it, a completed solve returns HTTP 200; a solve still running returns 202. Use GET /v1/solves/{id}?wait=60 to poll the same solve rather than creating repeated tasks.
Statuses are pending, solving, solved, failed, cancelled, and expired. A solved response contains id, status, token, user_agent, timestamps, and charged_usd. Running or failed solves have no token. A terminal failure includes error.code, message, reason, and retryable. Retry only when appropriate and create a fresh solve for a retry.
Manage and report
GET /v1/solves: newest-first list; supportslimit(1–100),starting_after,status, andtype.DELETE /v1/solves/{id}: cancel a running solve.POST /v1/solves/{id}/feedback: report one outcome.POST /v1/feedback: report up to 500 items in afeedbackarray withsolve_id,outcomeand optionalreason. Outcomes:accepted,rejected,unknown,unused,error.
A solve reserves its price while in progress. Solved work is charged; failed, cancelled and expired solves release the reservation. The current displayed price is $0.75 per 1,000 solved tokens. Tokens are single-use and short-lived; stored tokens are cleared after seven days.
Solve response fields
The object contains id, object, type, status, sitekey, url, token, user_agent, error, charged_usd, created_at, started_at, finished_at, queue_ms and resolve_ms. The token is present only after success, and a pending charge is not yet settled. Do not log tokens.
For feedback, the first report must arrive within 30 days of a successful solve. Optional reason, context and ISO 8601 reported_at fields supply context. Only the account owning a solved task can report it.