Model APIs / Speech-to-text

Speech-to-text

Transcribe an audio file, sent as multipart form data or as base64 JSON, up to 25 MB.

POST/v1/audio/transcriptionsinference:invokeBrowse speech-to-text models →

Request

Send multipart/form-data with the file, or JSON with the audio base64-encoded. Up to 25 MB either way.

FieldRequiredNotes
filerequiredThe audio file (multipart).
modelrequiredA speech-to-text model's id.
languageoptionalThe spoken language, when you know it.
response_formatoptional"json" · "verbose_json"
temperatureoptionalSampling temperature, when the model supports it.

JSON requests may also send timestamp_granularities, diarize and keyterms where the model supports them. Any other field is refused with 400 unsupported_parameter.

JSON form:

application/json
{
  "model": "MODEL",
  "input_audio": { "data": "<base64>", "format": "mp3" },
  "language": "en",
  "response_format": "json"
}
Request
curl https://yelno.ai/v1/audio/transcriptions \
  -H "Authorization: Bearer $YELNO_API_KEY" \
  -F model="MODEL" \
  -F [email protected] \
  -F response_format=verbose_json

Response

200 · application/json
{
  "text": "Thanks everyone for joining…",
  "language": "en",
  "duration": 42.7,
  "segments": [ … ],
  "usage": { … },
  "yelno": { "request_id": "req_…", "provider": "…", "model": "…", "endpoint_id": "ep_…", "attempts": [ … ], "cost": { … } }
}

language, duration, segments and words are present when the model returns them.

Every JSON response carries the same yelno block a chat response does: request_id, provider, model, endpoint_id, attempts and cost. cost is {state: "final", currency, customer_nanos} when the provider reported the cost with the response, or {state: "pending", currency, note} when it reports it later — the charge then settles once. Errors use the standard error envelope; upstream text never reaches you.

Sending a model to a route it is not served on answers 422 capability_unsupported with code: "operation_unsupported" and a message naming the route that serves it. Every model in the catalog shows its type and route.

Pricing. You pay the model's listed final price — shown on its catalog page — and nothing on top. A model without a fixed unit price is billed per request: its exact charge comes back with every response in yelno.cost. A hold is placed before dispatch and released down to the final charge; when the charge is reported after the response, the request settles once — it is never charged a guess.