Skip to main content
QA Agent is in beta. The request and response format can change.
QA Agent researches a record (a lead, a seller, a company) against criteria you write in plain English and returns an assessment in notes plus the fields you define in struct, such as a score or a YES/NO verdict. Use it for lead qualification, marketplace vetting, and CRM hygiene.

Endpoint

API Reference

See the full request/response schema and parameters in the API Reference.

Request

qualification_criteria

The agent reads every criterion, including its weight and threshold, as guidance for its research and assessment. QA Agent does not compute a score itself: to get one, ask for it in struct and state the scale you want (for example "Weighted qualification score from 0 to 10").

references

Each reference is an object with a required url and an optional description of what the page shows.

struct

Each key in struct becomes a field in structured_data, and its value is a plain-English description of what to put there. Only the fields you list are returned. Specific descriptions work best: "Overall qualification score from 0 to 10, weighted by criterion" beats "score". struct values must be strings; typed objects such as {"type": "int"} are rejected. Every returned value is a string, and an unfilled field is an empty string. Without a struct, structured_data contains a single general_findings field.

Response

Sync usage

Async pattern

Use /qa-agent-async for batches and anything that runs inside a request timeout.
  1. Submit: POST /qa-agent-async with the same body as the sync endpoint. The response is {"task_id": "...", "status": "RUNNING"}.
  2. Poll: GET /job-status/{task_id} every 10 seconds until status is no longer running.
  3. Read: when completed, the response’s result holds the same object the sync endpoint returns.
Pass webhook_url to receive the result instead of polling. Async Jobs covers statuses, the polling budget and retries.
A sync call keeps running after your client times out or disconnects, and it is charged when it finishes. A retry starts and charges a second run. To retry safely, use /qa-agent-async with dispatch_id.

Pricing

See Credit Costs for more information.

Errors

For error responses (400, 403, etc.), see Handling Errors.