Quickstart
Send the transcript of a call your voice agent handled, and read back a QA result in which every potential violation quotes the transcript line it is based on. Results are QA signals for human review.
What this is, and is not
- This is post-call Voice QA: it evaluates calls that have already happened. It is not a pre-deployment simulation or test harness for your agent.
- Three allowances are counted separately each month: QA calls, minutes of audio sent to speech-to-text, and optional AI assessments. A call that arrives as a transcript uses no audio minutes.
- Speaker labels decide what can be established. Without them, checks that depend on who spoke can only be a review, never a pass or a violation.
- “Review recommended” is not a proven violation: it means a person should look, usually because something could not be confirmed.
- A potential violation always carries the quote it is based on, with its timestamp when your transcript has times; some reviews (for example a call that looks incomplete) have none.
1. Create an organization and an API key
Sign up, then open Settings & API → API keys (organization owners and admins). The key is shown once; only a one-way hash is stored. Keep it on your server. Export it for the examples below:
export GOLDNOVA_API_KEY="gnk_…"2. Send a call
externalCallId is your own identifier for the call. Sending the same call again is safe: it is stored once and answered with "duplicate": true.
curl -X POST https://goldnovaai.com/api/v1/calls \
-H "Authorization: Bearer $GOLDNOVA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"externalCallId": "call-1042",
"agent": { "id": "support-bot-1", "name": "Support bot" },
"transcript": [
{ "speaker": "agent", "text": "Hello, this call is recorded for quality purposes.", "startTime": 0, "endTime": 4 },
{ "speaker": "customer", "text": "Okay.", "startTime": 4, "endTime": 5 },
{ "speaker": "agent", "text": "We guarantee a full refund.", "startTime": 41.2, "endTime": 44.0 }
]
}'{ "id": "6f1c0a52-8d1e-4c43-9a7b-2f6a3d9e1b10", "externalCallId": "call-1042", "status": "ready", "duplicate": false }3. Read the result
Evaluation runs after the response, usually within seconds. status moves received → ready → evaluating → evaluated (or failed). Poll the call until it is evaluated.
curl https://goldnovaai.com/api/v1/calls/6f1c0a52-8d1e-4c43-9a7b-2f6a3d9e1b10 \
-H "Authorization: Bearer $GOLDNOVA_API_KEY"{
"id": "6f1c0a52-8d1e-4c43-9a7b-2f6a3d9e1b10",
"externalCallId": "call-1042",
"status": "evaluated",
"transcriptSource": "provided",
"transcriptQuality": null,
"failureReason": null,
"evaluation": {
"result": "violation",
"resultLabel": "Potential violation",
"qaScore": 62.5,
"policyVersion": 3,
"evaluatedAt": "2026-10-01T09:31:02.114Z"
},
"findings": [
{
"rule": "Prohibited claims",
"ruleType": "prohibited_claim",
"severity": "high",
"status": "violation",
"explanation": "The agent used a prohibited phrase.",
"evidence": [{ "quote": "We guarantee a full refund.", "startTime": 41.2, "endTime": 44.0 }]
}
],
"notice": "QA signal for human review. Findings are automated indications, not legal or compliance determinations."
}How to read a result explains the three result values, the score, severities and why a finding can only be shown with a verbatim quote.
Limits at a glance
| Request body | 1.5 MB |
|---|---|
| Segments per call | 5,000, each up to 4,000 characters |
transcriptText | up to 400,000 characters |
| Metadata | up to 50 keys and 16 KB |
| Call duration | up to 24 hours |
| Rate limit | 120 requests per minute per key (429 with Retry-After) |
| Allowances | QA calls, audio transcription minutes and AI assessments are separate monthly allowances (see pricing); 402 quota_exceeded when the call allowance is used up |
Next
- API reference: authentication, schemas, idempotency, errors, lifecycle. Machine-readable: OpenAPI 3.1.
- Vapi, Retell and Twilio (developer preview) push finished calls to your workspace without your own code.
- MCP connection: let an MCP-compatible agent read reports and send calls, with scoped, revocable access.
- View a sample report (fictional data, no sign-up).