IPQSToken
Guide for IPQualityScore (IPQS) device fingerprint tasks. Yahoo-family logins and requestId for downstream iri=.
IPQualityScore (IPQS) is a no-UI device fingerprint step in front of Yahoo-family properties (login.yahoo.com, login.aol.com, etc.). This task type returns a requestId you attach downstream as iri=<requestId> on the login POST.
Latency is typically ~2 seconds per solve, depending on provider and network.
Solvers generally: fetch a UDID from the IPQS edge, build a browser fingerprint payload, POST it to the learn endpoint, then return the issued token. Exact behavior is provider-specific; field names and examples for createTask / getTaskResult are in the Request schema and Response schema sections below (generated from the transformer).
How to find websiteURL, apiServer, and websiteKey
Use a residential or mobile proxy in production. Datacenter IPs are scored harshly. The other task fields come from the browser session.
https://login.aol.com or https://login.yahoo.com).Open DevTools, go to Network, enable Preserve log, and filter by ipqs. Reload and interact with
the form (for example the email field).
Find GET .../udid/udid.json and POST .../api/*/…/learn/fetch. The request origin (scheme + host) is your
apiServer. The long token in the path between /api/*/ and /learn/fetch is websiteKey.
websiteURL is the full URL of the page where IPQS runs (same meaning as other task types: the page URL
you automate, e.g. https://login.aol.com or a deeper login URL if that is where the script loads).
Run a test solve. If you see bot/crawler-style failures with a good residential IP, re-capture apiServer
and websiteKey from DevTools. Routing or keys can drift.
Replay the solution userAgent
If the response includes userAgent on the solution object, send it unchanged on downstream requests that
use requestId. IPQS binds the token to that fingerprint; a different UA invalidates it.
Single use
Do not reuse requestId across logins. Solve again after proxy rotation or a new session.
Supported Providers
| Provider | Price per 1,000 | Routing |
|---|---|---|
| $2.00 |
Request Schema
| Field | Type | Required | Description |
|---|---|---|---|
clientKey* | string | Yes | Your API key. Create one in the [AnySolver dashboard](/dashboard/api-keys). Example: |
task* | object | Yes | The task body. Required fields depend on the task type. See [Tasks](/docs/tasks) for per-task schemas. View task properties |
provider | No | Specific provider to use. If omitted, automatic routing selects the best provider. Example: | |
selectionMode | No | Routing strategy for this request. Overrides the API key default. See [Routing Strategies](/docs/getting-started/routing-strategies). Example: | |
keyPoolMode | No | Which provider key pool to use: `all` (default, uses AnySolver-managed keys and your own) or `platformOnly` (AnySolver-managed keys only). See [Key Pool Mode](/docs/getting-started/routing-strategies#key-pool-mode). Example: |
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: |
apiServer* | URL | Yes | IPQS edge origin (scheme + host). Network requests to udid.json and learn/fetch use this origin. Example: https://dtproxy5.yahoo.eu.clients.ipqs.com — region segment may vary. Example: |
websiteKey* | string | Yes | Long token in the IPQS POST path between /api/*/ and /learn/fetch. Extract from DevTools (see task documentation). Example: |
proxy* | string | object | Yes | |
userAgent | string | No | Browser User-Agent string. Must match the browser used on the target page. Not all providers properly support this parameter. Verify the compatibility with the provider you are using. Example: |
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 | Specific provider to use. If omitted, automatic routing selects the best provider. Example: | |
solution | object | No |
Solution Object Properties
The solution field contains an object with the following properties:
| Field | Type | Required | Description |
|---|---|---|---|
requestId* | string | Yes | 10-character alphanumeric request_id from IPQS. Pass as iri=<request_id> in downstream login POSTs. Example: |
raw* | Record<string, unknown> | Yes | Raw provider response data for advanced use cases. |
userAgent | string | No | User-Agent used by the solver; replay in downstream requests. |