POSThttps://core-api.heysadie.ai/transcriber-banks/{id}/candidates/estimate
id windowDays transcriberIds success data turns audioSeconds estimatedCostUsd metadata timestamp version path error code message details field limitEstimate a candidate change
What PUT /transcriber-banks/:id/candidates would answer as `backfill` for this list, saving and queuing nothing: the flagged and control turns of the window missing at least one of the candidates, their audio, and its cost. Use it for a live cost line while candidates are being picked. Errors: 404 RESOURCE_NOT_FOUND when the bank is not in the organization or a transcriber id has no live catalogue row (`details.transcriberIds`). 422 BANK_LIMIT when more than 8 ids are sent.
Try it in the API ExplorerExample request
curl -X POST "https://core-api.heysadie.ai/transcriber-banks/TRANSCRIBER_BANK_ID/candidates/estimate" \
-H "Authorization: ApiKey YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"transcriberIds": [
"0199a1b2-aaaa-7bbb-8ccc-0000000000a1",
"0199a1b2-aaaa-7bbb-8ccc-0000000000a3"
]
}'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
Query parameters
windowDaysstringoptionalDays back from now, by turn creation, the backfill covers. 1 to 90, default 30
Body application/json · required
transcriberIdsstring[]requiredTranscriber ids to test, in display order. Distinct, from GET /transcribers. More than 8 is a 422 BANK_LIMIT; an id with no live catalogue row is a 404 naming it in `details.transcriberIds`
Responses
successbooleanrequiredtrue on every 2xx
dataobjectoptionalThe result
Show 3 child properties
turnsstring (integer) | integerrequiredFlagged and control turns of the window missing at least one candidate's attempt, with no job already running it
audioSecondsnumberrequiredSeconds of audio over every missing (turn, candidate) pair: each clip with its 0.75 s margins and the trailing silence the vendor bills
estimatedCostUsdnumberrequiredEstimated STT cost in USD, 6 decimals, at each candidate's catalogue rate
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: the bank is not in the organization, or a transcriber id has no live catalogue row (`details.transcriberIds` lists them)
successbooleanrequiredfalse on every error
errorobjectoptionalWhat went wrong: a stable `code` to branch on and a human-readable `message`
Show 3 child properties
codeenumrequiredThe bank, or a transcriber asked for, does not exist
"RESOURCE_NOT_FOUND"messagestringrequiredHuman-readable explanation. Do not parse it; branch on `code`
detailsobjectoptionalPresent when transcriber ids are the cause
Show 1 child properties
transcriberIdsstring[]requiredIds with no live catalogue row
metadataobjectoptionalRequest metadata
Show 3 child properties
timestampstringrequiredWhen the server answered, ISO 8601 UTC
versionstringrequiredAPI version
pathstringoptionalThe URL that was requested
422BANK_LIMIT: a bank tests at most 8 candidates (`details.limit`)
successbooleanrequiredfalse on every error
errorobjectoptionalWhat went wrong: a stable `code` to branch on and a human-readable `message`
Show 3 child properties
codeenumrequiredToo many candidates
"BANK_LIMIT"messagestringrequiredHuman-readable explanation. Do not parse it; branch on `code`
detailsobjectrequiredThe limit hit
Show 1 child properties
limitstring (integer) | integerrequiredThe most candidates a bank holds
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