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 are taken from the browser session.
https://login.aol.com or https://login.yahoo.com).DevTools → Network → Preserve log → filter by ipqs. Reload and interact with the form (e.g. 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 |
|---|---|
| $2.00 |
Request Schema
| Field | Type | Description |
|---|---|---|
clientKey* | string | Your API key from the AnySolver dashboard. Example: |
task* | object | |
provider | Specific provider to use. If omitted, automatic routing selects the best provider. Example: | |
selectionMode | Read more at the routing strategies docs. Example: | |
keyPoolMode | Example: |
Task Object Properties
The task field accepts an object with the following properties:
| Field | Type | Description |
|---|---|---|
websiteURL* | URL | Full URL of the page where the CAPTCHA is displayed. Example: |
apiServer* | URL | 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 | Long token in the IPQS POST path between /api/*/ and /learn/fetch. Extract from DevTools (see task documentation). Example: |
userAgent | string | 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: |
proxy* | string | object |
Response Schema
| Field | Type | Description |
|---|---|---|
status* | Task status: "processing", "ready", or "failed". Example: | |
taskId | string | Unique identifier returned when the task was created. Example: |
errorId* | 0 = success, 1 = external error, 2 = internal error. Example: | |
errorCode | Machine-readable error code (e.g., "CAPTCHA_UNSOLVABLE"). Example: | |
errorDescription | string | Human-readable error message with resolution hints. Example: |
cost | number | Actual cost charged for this task in USD. Example: |
taskType | The type of CAPTCHA task to solve. Example: | |
provider | Specific provider to use. If omitted, automatic routing selects the best provider. Example: | |
solution | object |
Solution Object Properties
The solution field contains an object with the following properties:
| Field | Type | Description |
|---|---|---|
requestId* | string | 10-character alphanumeric request_id from IPQS. Pass as iri=<request_id> in downstream login POSTs. Example: |
userAgent | string | User-Agent used by the solver; replay in downstream requests. |
raw* | Record<string, unknown> | Raw provider response data for advanced use cases. |