Skip to content
Transcriber Tests

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 limit

Estimate 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 Explorer

Example request

Terminal
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.

Authorizationstringrequired

API 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)optional

Required when authenticating with an organization key: it selects the tenant the request acts on. Omit with tenant keys.

Request

Path parameters

idstringrequired

A live bank of the organization

Query parameters

windowDaysstringoptional

Days back from now, by turn creation, the backfill covers. 1 to 90, default 30

Body application/json · required

transcriberIdsstring[]required

Transcriber 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

200The backfill estimate
successbooleanrequired

true on every 2xx

dataobjectoptional

The result

Show 3 child properties
turnsstring (integer) | integerrequired

Flagged and control turns of the window missing at least one candidate's attempt, with no job already running it

audioSecondsnumberrequired

Seconds of audio over every missing (turn, candidate) pair: each clip with its 0.75 s margins and the trailing silence the vendor bills

estimatedCostUsdnumberrequired

Estimated STT cost in USD, 6 decimals, at each candidate's catalogue rate

metadataobjectoptional

Request metadata

Show 3 child properties
timestampstringrequired

When the server answered, ISO 8601 UTC

versionstringrequired

API version

pathstringoptional

The 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
successbooleanrequired

false on every error

errorobjectoptional

What went wrong: a stable `code` to branch on and a human-readable `message`

Show 3 child properties
codeenumrequired

A parameter or body field broke a rule

Allowed values:"VALIDATION_ERROR"
messagestringrequired

Human-readable explanation. Do not parse it; branch on `code`

detailsobject[]optional

One entry per field that failed

Show 2 item properties
fieldstringrequired

The offending field

messagestringrequired

The rule it broke

metadataobjectoptional

Request metadata

Show 3 child properties
timestampstringrequired

When the server answered, ISO 8601 UTC

versionstringrequired

API version

pathstringoptional

The URL that was requested

401UNAUTHORIZED: no valid credentials, or a dashboard token that names no organization. Send `Authorization: ApiKey <organization API key>`
successbooleanrequired

false on every error

errorobjectoptional

What went wrong: a stable `code` to branch on and a human-readable `message`

Show 2 child properties
codeenumrequired

No valid credentials

Allowed values:"UNAUTHORIZED"
messagestringrequired

Human-readable explanation. Do not parse it; branch on `code`

metadataobjectoptional

Request metadata

Show 3 child properties
timestampstringrequired

When the server answered, ISO 8601 UTC

versionstringrequired

API version

pathstringoptional

The 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
successbooleanrequired

false on every error

errorobjectoptional

What went wrong: a stable `code` to branch on and a human-readable `message`

Show 2 child properties
codeenumrequired

ORG_SCOPE_REQUIRED: the credentials carry a tenant scope. FORBIDDEN: an organization key sent `X-Tenant-Id` for a tenant outside its organization

Allowed values:"ORG_SCOPE_REQUIRED""FORBIDDEN"
messagestringrequired

Human-readable explanation. Do not parse it; branch on `code`

metadataobjectoptional

Request metadata

Show 3 child properties
timestampstringrequired

When the server answered, ISO 8601 UTC

versionstringrequired

API version

pathstringoptional

The 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)
successbooleanrequired

false on every error

errorobjectoptional

What went wrong: a stable `code` to branch on and a human-readable `message`

Show 3 child properties
codeenumrequired

The bank, or a transcriber asked for, does not exist

Allowed values:"RESOURCE_NOT_FOUND"
messagestringrequired

Human-readable explanation. Do not parse it; branch on `code`

detailsobjectoptional

Present when transcriber ids are the cause

Show 1 child properties
transcriberIdsstring[]required

Ids with no live catalogue row

metadataobjectoptional

Request metadata

Show 3 child properties
timestampstringrequired

When the server answered, ISO 8601 UTC

versionstringrequired

API version

pathstringoptional

The URL that was requested

422BANK_LIMIT: a bank tests at most 8 candidates (`details.limit`)
successbooleanrequired

false on every error

errorobjectoptional

What went wrong: a stable `code` to branch on and a human-readable `message`

Show 3 child properties
codeenumrequired

Too many candidates

Allowed values:"BANK_LIMIT"
messagestringrequired

Human-readable explanation. Do not parse it; branch on `code`

detailsobjectrequired

The limit hit

Show 1 child properties
limitstring (integer) | integerrequired

The most candidates a bank holds

metadataobjectoptional

Request metadata

Show 3 child properties
timestampstringrequired

When the server answered, ISO 8601 UTC

versionstringrequired

API version

pathstringoptional

The URL that was requested

500An unexpected server error
successbooleanrequired

false on every error

errorobjectoptional

What went wrong: a stable `code` to branch on and a human-readable `message`

Show 2 child properties
codeenumrequired

An unexpected server failure

Allowed values:"INTERNAL_SERVER_ERROR"
messagestringrequired

Human-readable explanation. Do not parse it; branch on `code`

metadataobjectoptional

Request metadata

Show 3 child properties
timestampstringrequired

When the server answered, ISO 8601 UTC

versionstringrequired

API version

pathstringoptional

The URL that was requested