TwitchPublicIntegrityTokenProxyLess
Mint a Twitch Client-Integrity token for GraphQL requests from an account OAuth token.
Twitch signs its GraphQL traffic with a Client-Integrity header. The token is minted by a client-side integrity check, expires quickly, and is bound to the device and client ids it was issued for. This task performs that check and returns the token together with the identifiers it belongs to.
Pass the Twitch page the request belongs to as websiteURL.
Sending the token
Every GraphQL request has to carry all three values together, alongside your Authorization: OAuth <accessToken>:
Client-Integrity: <solution.integrityToken>
X-Device-Id: <solution.deviceId>
Client-Id: <solution.clientId>The three values travel together
A token minted for one deviceId / clientId pair is rejected under another. If you pin your own ids, pass them as
deviceId and clientId on the task so the token is issued for them.
Watch expiration
expiration is a Unix timestamp in milliseconds. Mint a fresh token shortly before it passes rather than
retrying failed requests: Twitch rejects an expired token outright.
Keep the account and the token consistent
The token is tied to the account behind accessToken. Use one integrity token per account session, and send the
returned userAgent on the requests that carry it.
Supported Providers
| Provider | Price per 1,000 | Routing |
|---|---|---|
| $3.60 |
Request Schema
| Field | Type | Required | Description |
|---|---|---|---|
clientKey* | string | Yes | Your API key. Create one in the AnySolver dashboard. Example: |
task* | object | Yes | The task body. Required fields depend on the task type. See Tasks for per-task schemas. View task properties |
settings | object | No | Per-request settings for routing, auto retry, auto fallback, and proxy behavior. See Routing Strategies. View settings reference |
Task Object Properties
The task field accepts an object with the following properties:
| Field | Type | Required | Description |
|---|---|---|---|
type* | Yes | ||
websiteURL* | URL | Yes | Full URL of the page where the CAPTCHA is displayed. Example: |
accessToken* | string | Yes | OAuth access token of the Twitch account the integrity token is minted for. Example: |
deviceId | string | No | Existing Example: |
clientId | string | No | Twitch Example: |
{ "clientKey": "your-api-key-from-dashboard", "task": { "type": "TwitchPublicIntegrityTokenProxyLess", "websiteURL": "https://www.twitch.tv/", "accessToken": "yfvzjqb705z12hrhy1zkwa9xt7v6ni" }}Optional fields are not guaranteed across providers
Response Schema
| Field | Type | Required | Description |
|---|---|---|---|
status* | Yes | Task status: "processing", "ready", or "failed". Example: | |
errorId* | Yes | 0 = success, 1 = external error, 2 = internal error. Example: | |
taskId | string | No | Unique identifier returned when the task was created. Example: |
errorCode | No | Machine-readable error code. Example: | |
errorDescription | string | No | Human-readable error message with resolution hints. Example: |
cost | number | No | Actual cost charged for this task in USD. Example: |
taskType | No | The type of CAPTCHA task to solve. Example: | |
provider | No | Provider that handled this task. While processing, the provider currently solving it. Example: | |
solution | object | No |
Solution Object Properties
The solution field contains an object with the following properties:
| Field | Type | Required | Description |
|---|---|---|---|
integrityToken* | string | Yes | Value for the Example: |
deviceId* | string | Yes | Device id the token is bound to. Send it as Example: |
clientId* | string | Yes | Client id the token is bound to. Send it as Example: |
expiration* | union | Yes | Unix timestamp in milliseconds at which the integrity token stops being accepted. Example: |
raw* | Record<string, unknown> | Yes | Raw provider response data for advanced use cases. |
userAgent | string | No | User-Agent string used during solving (if applicable). Example: |