Point an OpenAI SDK at https://api.paxalabs.com/v1 and call audio.transcriptions.create. Pricing, ceilings, and refunds match POST /v1/stt, which is also where the transcript conventions, speaker turns, word timing, and the vocabulary live: this alias reads none of them. The OpenAI compatibility guide covers the field mapping.
Headers#
authorizationBearer pxa_...RequiredAuthorization: Bearer pxa_... (recommended).
x-api-keypxa_...Alternative to the Authorization header. Ignored when Authorization is present.
idempotency-keystringMakes a retry safe: two requests carrying the same key are charged once. One request per key runs at a time. A concurrent duplicate answers 409 idempotency_in_flight. Reuse a key only to retry an identical request. A changed payload is rejected with 422. Accepts up to 200 printable ASCII characters other than space.
Body#
filefileRequiredThe recording, as a file part. MP3, WAV (PCM), FLAC, Ogg (Opus or Vorbis), M4A, AAC (ADTS), or WebM; the format and the length are read from the bytes. The part's filename and content type are ignored. Same ceilings, pricing, and refusals as the audio field on POST /v1/stt: up to 60 minutes and 26,214,400 bytes.
modelstringRequiredTranscription model id, for example paxa-stt-lite-v1-preview. OpenAI's whisper-1, gpt-4o-transcribe, gpt-4o-mini-transcribe, gpt-4o-mini-transcribe-2025-03-20, gpt-4o-mini-transcribe-2025-12-15 are accepted and run on paxa-stt-lite-v1-preview.
languagestringThe same field OpenAI defines. A BCP 47 tag the recording is expected to be in, such as "th". A hint that filters nothing. Omitted, the model detects the language itself.
response_format"json" or "verbose_json" or "text" or "srt" or "vtt"What the response body carries. "json" (the default) answers application/json with the transcript in a text field. "verbose_json" answers OpenAI's verbose shape: the duration, the text, and the segments and words that timestamp_granularities names. "text" answers text/plain with the transcript alone. "srt" and "vtt" answer the subtitle file, cut the same way POST /v1/stt cuts it, at the default line length. Every format is billed the same, by the recording's length.
timestamp_granularitiesarray of "segment" or "word"sThe same field OpenAI defines, sent as one timestamp_granularities[] form field per value, and read only with verbose_json. "segment" fills segments and "word" fills words; omitted, segments alone are filled.
stream"false"The OpenAI field of the same name. Streamed transcript events are not served here: "true" answers validation, and the transcript arrives as one body. WS /v1/stt/live transcribes as the audio arrives.
Response#
The transcribed recording, in OpenAI's shape. Returned when response_format is "json", "verbose_json", or absent; verbose_json adds the duration, segments, and words.
textstringRequiredThe transcript, verbatim in the language spoken. Empty when the recording carried no speech.
languagestringThe language hint the request sent, named as OpenAI names languages, such as "thai", or an empty string when it sent none. Carried by verbose_json.
durationnumberThe recording's length in seconds, carried by verbose_json.
segmentsarray of objectsThe transcript cut into the cues POST /v1/stt cuts for subtitles, carried by verbose_json. OpenAI's decoding statistics are not measured. Their fields carry 0 and an empty tokens list, for clients that require OpenAI's full segment shape.
Show propertiesHide properties
segments[].idintegerRequiredThe segment's position, from 0.
segments[].seekintegerRequiredAlways 0.
segments[].startnumberRequiredStart, in seconds.
segments[].endnumberRequiredEnd, in seconds.
segments[].textstringRequiredThe segment's text, as the transcript renders it.
segments[].tokensarray of integersRequiredAlways empty.
segments[].temperaturenumberRequiredAlways 0.
segments[].avg_logprobnumberRequiredAlways 0.
segments[].compression_rationumberRequiredAlways 0.
segments[].no_speech_probnumberRequiredAlways 0.
wordsarray of objectsOne entry per word, carried by verbose_json when timestamp_granularities names "word".
Show propertiesHide properties
words[].wordstringRequiredThe word, with Thai segmented.
words[].startnumberRequiredStart, in seconds.
words[].endnumberRequiredEnd, in seconds.