{"openapi":"3.1.0","info":{"title":"solvethree task API","version":"1.0.0","summary":"reCAPTCHA Enterprise, Kasada and Ticketmaster TMPT","description":"Verified 2026-11-04. Bearer workspace API key required. reCAPTCHA needs an active workspace profile. ready is solution generation, not proof of target acceptance. Failed solves are refunded.","contact":{"name":"solvethree","email":"support@solvethree.com","url":"https://solvethree.com/docs"}},"servers":[{"url":"https://api.solvethree.com/v1"}],"externalDocs":{"url":"https://solvethree.com/docs"},"security":[{"workspaceKey":[]}],"paths":{"/tasks":{"post":{"operationId":"createTask","summary":"Create or recover one billable task","description":"Use one stable requestId per logical task. Same inputs replay the task; changed inputs conflict. No automatic POST retries. Supply exactly one proxy input. Recaptcha default/max wait 15000 ms; Kasada default/max 75000; TMPT default 0/max 75000. This endpoint does not set up a site profile.","parameters":[{"name":"waitMs","in":"query","description":"Product-specific maximum: reCAPTCHA 15000; Kasada and TMPT 75000. Explicit 0 returns asynchronously.","schema":{"type":"integer","minimum":0,"maximum":75000}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/RecaptchaTask"},{"$ref":"#/components/schemas/KasadaTask"},{"$ref":"#/components/schemas/TmptTask"}]},"examples":{"recaptcha":{"value":{"site":"example.com","action":"login","proxy":"http://user:password@proxy.example:8080","requestId":"example-recaptcha-001"}},"kasada":{"value":{"type":"KasadaTask","url":"https://www.ticketmaster.com/","proxy":"http://user:password@proxy.example:8080","requestId":"example-kasada-001"}},"tmpt":{"value":{"type":"TicketmasterTmptTask","url":"https://www.ticketmaster.com/event/EXAMPLE","action":"Event","proxy":"http://user:password@proxy.example:8080","requestId":"example-tmpt-001"}}}}}},"responses":{"200":{"$ref":"#/components/responses/Task"},"201":{"$ref":"#/components/responses/Task"},"400":{"description":"Request error. This is separate from a terminal failed task. Do not blindly create a new logical task.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Request error. This is separate from a terminal failed task. Do not blindly create a new logical task.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"402":{"description":"Request error. This is separate from a terminal failed task. Do not blindly create a new logical task.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Request error. This is separate from a terminal failed task. Do not blindly create a new logical task.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Request error. This is separate from a terminal failed task. Do not blindly create a new logical task.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"410":{"description":"Request error. This is separate from a terminal failed task. Do not blindly create a new logical task.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Request error. This is separate from a terminal failed task. Do not blindly create a new logical task.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Request error. This is separate from a terminal failed task. Do not blindly create a new logical task.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"502":{"description":"Request error. This is separate from a terminal failed task. Do not blindly create a new logical task.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Request error. This is separate from a terminal failed task. Do not blindly create a new logical task.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/tasks/{id}":{"get":{"operationId":"getTask","summary":"Retrieve an existing task in the authenticated workspace","description":"Stop on ready or failed. Solutions have bounded retention; expired successful results return 410. This request never creates a task.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"waitMs","in":"query","schema":{"type":"integer","minimum":0,"maximum":15000,"default":0}}],"responses":{"200":{"$ref":"#/components/responses/Task"},"400":{"description":"Request error. This is separate from a terminal failed task. Do not blindly create a new logical task.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Request error. This is separate from a terminal failed task. Do not blindly create a new logical task.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Request error. This is separate from a terminal failed task. Do not blindly create a new logical task.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Request error. This is separate from a terminal failed task. Do not blindly create a new logical task.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"410":{"description":"Request error. This is separate from a terminal failed task. Do not blindly create a new logical task.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Request error. This is separate from a terminal failed task. Do not blindly create a new logical task.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Request error. This is separate from a terminal failed task. Do not blindly create a new logical task.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}}},"components":{"securitySchemes":{"workspaceKey":{"type":"http","scheme":"bearer","description":"Server-side workspace API key"}},"schemas":{"RecaptchaTask":{"type":"object","additionalProperties":false,"required":["site","action"],"oneOf":[{"required":["proxy"],"not":{"required":["proxyCandidates"]}},{"required":["proxyCandidates"],"not":{"required":["proxy"]}}],"properties":{"proxy":{"type":"string","maxLength":2048,"pattern":"^https?://[^/?#\\s\\u0000-\\u001f]+$","description":"HTTP(S) proxy URL without path, query or fragment. Keep credentials private."},"proxyCandidates":{"type":"array","items":{"type":"string","maxLength":2048,"pattern":"^https?://[^/?#\\s\\u0000-\\u001f]+$","description":"HTTP(S) proxy URL without path, query or fragment. Keep credentials private."},"minItems":1,"maxItems":6,"uniqueItems":true},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,64}$","description":"Stable idempotency key. Reuse identical inputs to recover a timed-out creation."},"userAgent":{"type":"string","minLength":20,"maxLength":512,"description":"Optional supported browser identity; paired client hints are validated by the service."},"secChUa":{"type":"string","maxLength":512},"timezoneOffsetMinutes":{"type":"integer","minimum":-840,"maximum":840},"site":{"type":"string","minLength":3,"maxLength":253,"pattern":"^[a-zA-Z0-9.-]+$","description":"Hostname with an active workspace site profile; not a URL or a site key"},"action":{"type":"string","minLength":1,"maxLength":100},"recaptchaType":{"type":"string","enum":["enterprise-v3","v3"],"default":"enterprise-v3"},"session":{"type":"boolean","default":false}},"allOf":[{"if":{"required":["session"],"properties":{"session":{"const":true}}},"then":{"required":["proxy"],"not":{"required":["proxyCandidates"]}}}]},"KasadaTask":{"type":"object","additionalProperties":false,"required":["type","url"],"oneOf":[{"required":["proxy"],"not":{"required":["proxyCandidates"]}},{"required":["proxyCandidates"],"not":{"required":["proxy"]}}],"properties":{"proxy":{"type":"string","maxLength":2048,"pattern":"^https?://[^/?#\\s\\u0000-\\u001f]+$","description":"HTTP(S) proxy URL without path, query or fragment. Keep credentials private."},"proxyCandidates":{"type":"array","items":{"type":"string","maxLength":2048,"pattern":"^https?://[^/?#\\s\\u0000-\\u001f]+$","description":"HTTP(S) proxy URL without path, query or fragment. Keep credentials private."},"minItems":1,"maxItems":6,"uniqueItems":true},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,64}$","description":"Stable idempotency key. Reuse identical inputs to recover a timed-out creation."},"type":{"const":"KasadaTask"},"url":{"type":"string","format":"uri","pattern":"^https://www\\.ticketmaster\\.com(?::443)?(?:/|$)","description":"Exact supported HTTPS target on www.ticketmaster.com; no credentials or fragment"}}},"TmptTask":{"type":"object","additionalProperties":false,"required":["type","url","action"],"oneOf":[{"required":["proxy"],"not":{"required":["proxyCandidates"]}},{"required":["proxyCandidates"],"not":{"required":["proxy"]}}],"properties":{"proxy":{"type":"string","maxLength":2048,"pattern":"^https?://[^/?#\\s\\u0000-\\u001f]+$","description":"HTTP(S) proxy URL without path, query or fragment. Keep credentials private."},"proxyCandidates":{"type":"array","items":{"type":"string","maxLength":2048,"pattern":"^https?://[^/?#\\s\\u0000-\\u001f]+$","description":"HTTP(S) proxy URL without path, query or fragment. Keep credentials private."},"minItems":1,"maxItems":6,"uniqueItems":true},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,64}$","description":"Stable idempotency key. Reuse identical inputs to recover a timed-out creation."},"userAgent":{"type":"string","minLength":20,"maxLength":512,"description":"Optional supported browser identity; paired client hints are validated by the service."},"secChUa":{"type":"string","maxLength":512},"timezoneOffsetMinutes":{"type":"integer","minimum":-840,"maximum":840},"type":{"const":"TicketmasterTmptTask"},"url":{"type":"string","format":"uri","pattern":"^https://","description":"Exact supported event URL for Event, or supported sign-in entry URL for Login. The gateway validates host, path and action."},"action":{"type":"string","enum":["Event","Login"]}}},"Task":{"type":"object","required":["id","status"],"properties":{"id":{"type":"string"},"status":{"type":"string","enum":["pending","solving","ready","failed"]},"durationMs":{"type":"integer"},"timingsMs":{"type":"object","additionalProperties":{"type":"integer"}},"errorCode":{"type":"string"},"error":{"type":"string"},"solution":{"type":"object","description":"Present when ready. Treat tokens, headers and cookies as private transient credentials.","properties":{"token":{"type":"string","description":"reCAPTCHA token or raw tmpt cookie, according to task type"},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"Kasada headers: apply together"},"userAgent":{"type":"string"},"secChUa":{"type":"string"},"egressAttempts":{"type":"integer","minimum":1,"description":"For proxyCandidates, the successful candidate's one-based index in the original array. Validate against the array length; do not guess when absent or invalid."},"recaptcha-ca-t":{"type":"string"}}}},"allOf":[{"if":{"properties":{"status":{"const":"ready"}}},"then":{"required":["solution"]}}]},"ApiError":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"id":{"type":"string"}}}},"responses":{"Task":{"description":"Task state. HTTP 200 alone does not mean a solution is ready. Failed task details may be partial after result expiry.","headers":{"Location":{"schema":{"type":"string"},"description":"Relative task URL when pending"},"Retry-After":{"schema":{"type":"string"},"description":"Suggested polling delay, seconds"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Task"}}}}}}}