POSThttps://core-api.heysadie.ai/transcriber-banks/{id}/full-call-runs/estimate
id candidateTranscriberId callIds calibrationTurns success data calls callerTurns audioSeconds estimatedCostUsd metadata timestamp version path error code message details field callId reasonEstimate a full-call run
What a full-call run with this body would replay and cost, starting nothing. Use it for the live cost line of a run dialog as calls are added or removed. - The candidate replays every caller line with audio bounds of the asked calls, never the assistant's lines. - Production's stored live text costs nothing. Production is replayed only on the calibration sample, priced at the turns' mean clip length and mean rate. Errors: Checked in this order: 404 RESOURCE_NOT_FOUND when any asked call is not in the organization; 422 CALL_NOT_RUNNABLE naming the first asked call that cannot run and why (`details.callId`, `details.reason`); 404 RESOURCE_NOT_FOUND when the bank is not in the organization; 422 CANDIDATE_REQUIRED when no `candidateTranscriberId` was sent and the bank has no leader over the last 30 days; 422 NOT_A_BANK_CANDIDATE when `candidateTranscriberId` is not a live candidate of the bank.
Try it in the API ExplorerExample request
curl -X POST "https://core-api.heysadie.ai/transcriber-banks/TRANSCRIBER_BANK_ID/full-call-runs/estimate" \
-H "Authorization: ApiKey YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"candidateTranscriberId": "0199a1b2-aaaa-7bbb-8ccc-0000000000a1",
"callIds": [
"0199a1b2-7c3d-7e4f-8a5b-6c7d8e9f0a1b",
"0199a1b3-0d1e-7f20-9a3b-4c5d6e7f8091"
],
"calibrationTurns": 20
}'Authentication
Authenticate with an API key in the Authorization header using the ApiKey scheme. See Authentication for how keys work and where to get them.
AuthorizationstringrequiredAPI key in the ApiKey scheme: ApiKey YOUR_API_KEY. Tenant keys authorize their own tenant; organization keys can act on any tenant in the organization.
X-Tenant-Idstring (uuid)optionalRequired when authenticating with an organization key: it selects the tenant the request acts on. Omit with tenant keys.
Request
Path parameters
idstringrequiredA live bank of the organization
Body application/json · required
candidateTranscriberIdstringoptionalOne of the bank's candidates. Defaults to the bank's leader over the last 30 days; with no leader over that window, send it or get 422 CANDIDATE_REQUIRED
callIdsstring[]required1 to 10 distinct calls of the organization, replayed in this order. Start from the call a line was flagged on and add others from GET /full-call-runs/eligible-calls. Each needs a recording, a caller line with audio bounds and a known live transcriber, else 422 CALL_NOT_RUNNABLE. A call outside the organization is a 404
calibrationTurnsstring (integer) | integeroptionalRandom turns on which production is also replayed, to measure replay against the live text (`totals.audioPathAgreement`). 0 to 200, default 20
Responses
successbooleanrequiredtrue on every 2xx
dataobjectoptionalWhat the run replays and costs, as estimated at creation
Show 4 child properties
callsstring (integer) | integerrequiredSelected calls with a caller turn
callerTurnsstring (integer) | integerrequiredCaller lines with audio bounds; each becomes a turn
audioSecondsnumberrequiredAudio the worker replays: every turn through the candidate, plus the calibration sample through production
estimatedCostUsdnumberrequiredSTT cost in USD, 6 decimals
metadataobjectoptionalRequest metadata
Show 3 child properties
timestampstringrequiredWhen the server answered, ISO 8601 UTC
versionstringrequiredAPI version
pathstringoptionalThe URL that was requested
400VALIDATION_ERROR: a path id, query parameter or body field broke a rule; `details` lists each `field` and its `message`. A body with a missing field or a JSON type the schema does not allow answers 400 with code INTERNAL_SERVER_ERROR and no `details` instead, so branch on the status
successbooleanrequiredfalse on every error
errorobjectoptionalWhat went wrong: a stable `code` to branch on and a human-readable `message`
Show 3 child properties
codeenumrequiredA parameter or body field broke a rule
"VALIDATION_ERROR"messagestringrequiredHuman-readable explanation. Do not parse it; branch on `code`
detailsobject[]optionalOne entry per field that failed
Show 2 item properties
fieldstringrequiredThe offending field
messagestringrequiredThe rule it broke
metadataobjectoptionalRequest metadata
Show 3 child properties
timestampstringrequiredWhen the server answered, ISO 8601 UTC
versionstringrequiredAPI version
pathstringoptionalThe URL that was requested
401UNAUTHORIZED: no valid credentials, or a dashboard token that names no organization. Send `Authorization: ApiKey <organization API key>`
successbooleanrequiredfalse on every error
errorobjectoptionalWhat went wrong: a stable `code` to branch on and a human-readable `message`
Show 2 child properties
codeenumrequiredNo valid credentials
"UNAUTHORIZED"messagestringrequiredHuman-readable explanation. Do not parse it; branch on `code`
metadataobjectoptionalRequest metadata
Show 3 child properties
timestampstringrequiredWhen the server answered, ISO 8601 UTC
versionstringrequiredAPI version
pathstringoptionalThe URL that was requested
403ORG_SCOPE_REQUIRED: transcriber testing is an organization feature. Use an organization API key without `X-Tenant-Id`, or a dashboard token scoped to the organization. A tenant API key, an organization key sent with `X-Tenant-Id` for one of its tenants, or a token carrying a tenant gets this 403. FORBIDDEN: an organization key sent `X-Tenant-Id` for a tenant outside its organization
successbooleanrequiredfalse on every error
errorobjectoptionalWhat went wrong: a stable `code` to branch on and a human-readable `message`
Show 2 child properties
codeenumrequiredORG_SCOPE_REQUIRED: the credentials carry a tenant scope. FORBIDDEN: an organization key sent `X-Tenant-Id` for a tenant outside its organization
"ORG_SCOPE_REQUIRED""FORBIDDEN"messagestringrequiredHuman-readable explanation. Do not parse it; branch on `code`
metadataobjectoptionalRequest metadata
Show 3 child properties
timestampstringrequiredWhen the server answered, ISO 8601 UTC
versionstringrequiredAPI version
pathstringoptionalThe URL that was requested
404RESOURCE_NOT_FOUND: an id in the path, query or body names nothing in the caller's organization. `message` names what, e.g. "Transcriber bank not found"
successbooleanrequiredfalse on every error
errorobjectoptionalWhat went wrong: a stable `code` to branch on and a human-readable `message`
Show 2 child properties
codeenumrequiredAn id names nothing the caller can see
"RESOURCE_NOT_FOUND"messagestringrequiredHuman-readable explanation. Do not parse it; branch on `code`
metadataobjectoptionalRequest metadata
Show 3 child properties
timestampstringrequiredWhen the server answered, ISO 8601 UTC
versionstringrequiredAPI version
pathstringoptionalThe URL that was requested
422CALL_NOT_RUNNABLE: an asked call cannot be replayed; `details` names the first such call and the reason. CANDIDATE_REQUIRED: no `candidateTranscriberId` was sent and the bank has no leader over the last 30 days. NOT_A_BANK_CANDIDATE: `candidateTranscriberId` is not a live candidate of the bank
successbooleanrequiredfalse on every error
errorobjectoptionalOne of three refusals, told apart by `code`
Show 8 properties across 3 possible shapes
codeenumrequiredNo candidate to replay
"CANDIDATE_REQUIRED"messagestringrequiredHuman-readable explanation. Do not parse it; branch on `code`
codeenumrequiredThe candidate is not the bank's
"NOT_A_BANK_CANDIDATE"messagestringrequiredHuman-readable explanation. Do not parse it; branch on `code`
detailsobjectrequiredThe transcriber refused
Show 1 child properties
candidateTranscriberIdstringrequiredNot a candidate of the bank, or deleted from the catalogue since it was added
codeenumrequiredAn asked call cannot be replayed
"CALL_NOT_RUNNABLE"messagestringrequiredHuman-readable explanation. Do not parse it; branch on `code`
detailsobjectrequiredThe call and why
Show 2 child properties
callIdstringrequiredThe first asked call that cannot run
reasonenumrequiredno_recording: the call has no recording. no_caller_audio: no caller line has audio bounds. transcriber_unknown: the call's live transcriber is unknown, so there is no production text to compare with
"no_recording""no_caller_audio""transcriber_unknown"metadataobjectoptionalRequest metadata
Show 3 child properties
timestampstringrequiredWhen the server answered, ISO 8601 UTC
versionstringrequiredAPI version
pathstringoptionalThe URL that was requested
500An unexpected server error
successbooleanrequiredfalse on every error
errorobjectoptionalWhat went wrong: a stable `code` to branch on and a human-readable `message`
Show 2 child properties
codeenumrequiredAn unexpected server failure
"INTERNAL_SERVER_ERROR"messagestringrequiredHuman-readable explanation. Do not parse it; branch on `code`
metadataobjectoptionalRequest metadata
Show 3 child properties
timestampstringrequiredWhen the server answered, ISO 8601 UTC
versionstringrequiredAPI version
pathstringoptionalThe URL that was requested