Speech-to-text (Pro)
POST /api/transcribe-proTranscribe audio to text with the gpt-transcribe model - the same model as /api/transcribe with a longer cap. Send POST /api/transcribe-pro with the required field url and pay $0.10 per call over x402 or MPP (there is no free tier). It returns a JSON object with model, provider, text, language and duration.
Provide a URL to an audio file and get back the transcript; add diarize:true for speaker labels, word timestamps and a language confidence score (the scribe-v2 model). No API key needed; pay per call via x402. Max 10 minutes of audio, 25 MB file size.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
url | string | yes | URL of the audio file to transcribe (mp3, wav, m4a, ogg, flac, webm) Also accepted as link, uri, href, page. |
language | string | no | Optional ISO-639-1 language code (e.g. 'en', 'es', 'fr') for better accuracy |
diarize | boolean | no | true: transcribe with the scribe-v2 model and add speaker labels and word timestamps (`words`, `speakers`) and `language_confidence` (0 to 1, the model's confidence in the detected language). Same price and cap. Default false |
Example request
curl -i -X POST https://agent402.tools/api/transcribe-pro \
-H "Content-Type: application/json" \
-d '{"url":"https://agent402.tools/fixtures/sample-speech.wav"}'
Without payment this returns HTTP 402 Payment Required with the exact price for transcribe-pro; any x402 v2 or MPP client pays it and retries.
Example response
{
"model": "gpt-transcribe",
"provider": "openai",
"text": "Hi, this is the Agent402 sample recording. Can you hear me clearly? Yes, loud and clear. There are two of us on this clip, so the transcript can tell us apart.",
"language": "en",
"duration": 12.6
}
| Field | Type | Always present | In the example |
|---|---|---|---|
model | string | yes | gpt-transcribe |
provider | string | yes | openai |
text | string | yes | Hi, this is the Agent402 sample recording. Can you hear me clearly? Yes, loud... |
language | string | yes | en |
duration | number | yes | 12.6 |
From an MCP client
catalog.call {
"slug": "transcribe-pro",
"params": {
"url": "https://agent402.tools/fixtures/sample-speech.wav"
}
}
The hosted connector at https://agent402.tools/mcp needs a payment for transcribe-pro; the stdio package pays it from a wallet or from an AGENT402_CREDITS_KEY issued earlier. Local install: npx -y [email protected].
Errors and behavior
urlis required. An input the tool rejects returns an HTTP 4xx whose body carrieserror,tool,expected,requiredandexample, so the caller can correct it.- A paid call that ends in any status of 400 or above is not charged over x402, MPP or a prepaid credits key: settlement runs after the tool and only on a successful response. The exception is a Tempo push credential, a transfer the buyer sent before the call: it settles before the tool runs, so if the tool then fails the payment is recorded as a refund owed to the paying wallet.
- Wallet-only: this tool runs a model, so it has no proof-of-work tier. A prepaid card-credits key issued earlier (
Authorization: Bearer a402_...) also pays it. - Model-backed: the answer is generated by a model, so the same input can produce a different result.
- A
GETorHEADto /api/transcribe-pro returns the same 402 quote, so the price can be read without a body. - An
Idempotency-Keyheader makes a retried paid call replay the first 200 instead of charging again (an answer larger than 1 MB is not replayed).
Paid call (JavaScript agent)
import { wrapFetchWithPayment } from "@x402/fetch";
import { x402Client } from "@x402/core/client";
import { registerExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";
const client = new x402Client();
client.setSpendControls?.({ maxAmountPerPayment: "$0.10" }); // refuse any quote above this tool's price
registerExactEvmScheme(client, { signer: privateKeyToAccount(KEY) });
const payFetch = wrapFetchWithPayment(fetch, client);
const res = await payFetch("https://agent402.tools/api/transcribe-pro", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
"url": "https://agent402.tools/fixtures/sample-speech.wav"
}),
});
Related tools
Speech-to-text (OpenAI transcription wire)
POST /v1/audio/transcriptionsOpenAI's own transcription wire: POST multipart/form-data with a `file` part and get the transcript back.
Speech-to-text, long audio (OpenAI transcription wire)
POST /v1/pro/audio/transcriptionsOpenAI's transcription wire on the ten-minute tier: POST multipart/form-data with a `file` part.
Code execution (Pro)
POST /api/code-run-proExecute Python or JavaScript code in a secure, isolated cloud sandbox (Pro tier).
Decisions (OpenAI wire)
POST /v1/decisionsOpenAI's Decisions API on its own wire: point an OpenAI SDK's base URL here and client.decisions.create works unchanged.
Dub: translate and speak
POST /api/dubTranslate a text into a target language and speak the translation, in one paid call.