[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-openrouter-openrouter-stt":3,"mdc-wyjw73-key":34,"related-org-openrouter-openrouter-stt":3396,"related-repo-openrouter-openrouter-stt":3541},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":24,"repoUrl":25,"updatedAt":26,"license":27,"forks":28,"topics":29,"repo":30,"sourceUrl":32,"mdContent":33},"openrouter-stt","transcribe speech to text with OpenRouter","Transcribe speech to text using OpenRouter's speech-to-text API. Use when the user asks to transcribe audio, convert speech to text, extract a transcript from a recording or meeting, caption a video's audio, or mentions STT, speech-to-text, ASR, or transcription.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"openrouter","OpenRouter","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fopenrouter.png","OpenRouterTeam",[13,17,18,21],{"name":14,"slug":15,"type":16},"Transcription","transcription","tag",{"name":9,"slug":8,"type":16},{"name":19,"slug":20,"type":16},"Audio","audio",{"name":22,"slug":23,"type":16},"Speech","speech",187,"https:\u002F\u002Fgithub.com\u002FOpenRouterTeam\u002Fskills","2026-07-14T05:38:16.291739",null,26,[],{"repoUrl":25,"stars":24,"forks":28,"topics":31,"description":27},[],"https:\u002F\u002Fgithub.com\u002FOpenRouterTeam\u002Fskills\u002Ftree\u002FHEAD\u002Fskills\u002Fopenrouter-stt","---\nname: openrouter-stt\ndescription: Transcribe speech to text using OpenRouter's speech-to-text API. Use when the user asks to transcribe audio, convert speech to text, extract a transcript from a recording or meeting, caption a video's audio, or mentions STT, speech-to-text, ASR, or transcription.\n---\n\n# OpenRouter Speech-to-Text\n\nTranscribe audio via `POST \u002Fapi\u002Fv1\u002Faudio\u002Ftranscriptions` using `curl`. Requires `OPENROUTER_API_KEY` (get one at https:\u002F\u002Fopenrouter.ai\u002Fkeys). If unset, stop and ask.\n\n**This endpoint is not OpenAI-compatible.** The body is JSON with base64 audio under `input_audio: { data, format }` — not `multipart\u002Fform-data` with a `file` field the way OpenAI's `\u002Fv1\u002Faudio\u002Ftranscriptions` works. Do not point the OpenAI SDK at this endpoint; it will send the wrong shape. Use `curl`, `fetch`, or `requests` directly.\n\n## One call, JSON back\n\nBoth request and response are JSON. The response body carries:\n\n- `text` — the transcript.\n- `usage` — always includes `cost`. Providers additionally report either `seconds` of audio billed or a token breakdown (`total_tokens`, `input_tokens`, `output_tokens`), depending on how they price the request. Don't assume both are present.\n\nSample response (duration-priced provider, e.g. `google\u002Fchirp-3`):\n\n```json\n{\n  \"text\": \"I used to rule the world.\",\n  \"usage\": {\n    \"seconds\": 20,\n    \"cost\": 0.005333\n  }\n}\n```\n\nSample response (token-priced provider):\n\n```json\n{\n  \"text\": \"Hello, this is a test of speech-to-text transcription.\",\n  \"usage\": {\n    \"total_tokens\": 113,\n    \"input_tokens\": 83,\n    \"output_tokens\": 30,\n    \"cost\": 0.000508\n  }\n}\n```\n\n## Drop-in workflow\n\n```bash\n#!\u002Fusr\u002Fbin\u002Fenv bash\nset -euo pipefail\n\nMODEL=\"google\u002Fchirp-3\"\nFORMAT=\"wav\"                          # wav, mp3, flac, m4a, ogg, webm, aac\nAUDIO=\"audio.wav\"\nBODY=$(mktemp)\nPAYLOAD=$(mktemp)\n\naudio_b64=$(base64 \u003C \"$AUDIO\" | tr -d '\\n')\n\njq -n --arg model \"$MODEL\" --arg data \"$audio_b64\" --arg fmt \"$FORMAT\" \\\n  '{model: $model, input_audio: {data: $data, format: $fmt}}' > \"$PAYLOAD\"\n\n# --data-binary @file keeps the base64 payload off argv (avoids E2BIG \u002F ARG_MAX).\nhttp_code=$(curl -sS -X POST https:\u002F\u002Fopenrouter.ai\u002Fapi\u002Fv1\u002Faudio\u002Ftranscriptions \\\n  -H \"Authorization: Bearer $OPENROUTER_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  --output \"$BODY\" \\\n  -w '%{http_code}' \\\n  --data-binary @\"$PAYLOAD\")\n\nif [[ \"$http_code\" != \"200\" ]]; then\n  echo \"STT failed (HTTP $http_code):\" >&2\n  cat \"$BODY\" >&2\n  rm -f \"$BODY\" \"$PAYLOAD\"\n  exit 1\nfi\n\njq -r '.text' \"$BODY\"\nrm -f \"$BODY\" \"$PAYLOAD\"\n```\n\n## Discovering STT models\n\nFilter the models endpoint by output modality to list transcription models.\n\n```bash\ncurl -sS \"https:\u002F\u002Fopenrouter.ai\u002Fapi\u002Fv1\u002Fmodels?output_modalities=transcription\" \\\n  | jq '.data[] | {id, name, pricing}'\n```\n\nModels are provider-namespaced — use the full slug (`google\u002Fchirp-3`, `openai\u002Fwhisper-1`, `openai\u002Fwhisper-large-v3`), not the short name.\n\n## Parameters\n\n| Field                | Required | Notes                                                                                                     |\n| -------------------- | -------- | --------------------------------------------------------------------------------------------------------- |\n| `model`              | yes      | Full model slug from `\u002Fapi\u002Fv1\u002Fmodels?output_modalities=transcription`.                                    |\n| `input_audio.data`   | yes      | Base64-encoded raw audio bytes. **Not** a data URI — just the base64 payload, no `data:audio\u002F...;base64,` prefix. |\n| `input_audio.format` | yes      | `wav`, `mp3`, `flac`, `m4a`, `ogg`, `webm`, or `aac`. Must match the actual bytes. Support varies by provider. |\n| `language`           | no       | ISO-639-1 code (`en`, `ja`, `fr`). Auto-detected if omitted.                                              |\n| `temperature`        | no       | 0–1. Lower is more deterministic.                                                                         |\n| `provider`           | no       | Provider passthrough — see below.                                                                         |\n\n### Picking an audio format\n\n- **`wav`** \u002F **`flac`** — uncompressed or lossless. Highest quality; largest uploads.\n- **`mp3`** \u002F **`m4a`** \u002F **`aac`** — compressed. Smaller payloads, which matters because base64 inflates bytes by ~33% on top of whatever the file already weighs.\n- **`webm`** \u002F **`ogg`** — typical for browser recordings (`MediaRecorder`).\n\nThe `format` field must match the actual container\u002Fcodec of the bytes. A file saved as `.wav` that is actually mp3 will be rejected or mis-decoded. When in doubt, confirm with `ffprobe \u003Cfile>`.\n\n## Provider-specific options\n\nProvider passthrough goes under `provider.options.\u003Cslug>` and is only forwarded when that provider handles the request. Example — Groq's `prompt` for vocabulary hinting:\n\n```json\n{\n  \"model\": \"openai\u002Fwhisper-large-v3\",\n  \"input_audio\": { \"data\": \"UklGRiQA...\", \"format\": \"wav\" },\n  \"provider\": {\n    \"options\": {\n      \"groq\": {\n        \"prompt\": \"Expected vocabulary: OpenRouter, API, transcription\"\n      }\n    }\n  }\n}\n```\n\nOptions keyed by provider slug are forwarded only when that provider matches; other keys are ignored. Check each provider's upstream docs for available passthrough keys.\n\n## TypeScript (fetch)\n\n```typescript\nimport fs from \"fs\";\n\nconst audio = await fs.promises.readFile(\"audio.wav\");\nconst data = audio.toString(\"base64\");\n\nconst res = await fetch(\"https:\u002F\u002Fopenrouter.ai\u002Fapi\u002Fv1\u002Faudio\u002Ftranscriptions\", {\n  method: \"POST\",\n  headers: {\n    Authorization: `Bearer ${process.env.OPENROUTER_API_KEY}`,\n    \"Content-Type\": \"application\u002Fjson\",\n  },\n  body: JSON.stringify({\n    model: \"google\u002Fchirp-3\",\n    input_audio: { data, format: \"wav\" },\n  }),\n});\n\nif (!res.ok) {\n  throw new Error(`STT failed (HTTP ${res.status}): ${await res.text()}`);\n}\n\nconst result = await res.json();\nconsole.log(result.text);\n```\n\n## Python (requests)\n\n```python\nimport base64\nimport os\nimport requests\n\nwith open(\"audio.wav\", \"rb\") as f:\n    data = base64.b64encode(f.read()).decode(\"utf-8\")\n\nres = requests.post(\n    \"https:\u002F\u002Fopenrouter.ai\u002Fapi\u002Fv1\u002Faudio\u002Ftranscriptions\",\n    headers={\n        \"Authorization\": f\"Bearer {os.environ['OPENROUTER_API_KEY']}\",\n        \"Content-Type\": \"application\u002Fjson\",\n    },\n    json={\n        \"model\": \"google\u002Fchirp-3\",\n        \"input_audio\": {\"data\": data, \"format\": \"wav\"},\n    },\n)\n\nif not res.ok:\n    raise RuntimeError(f\"STT failed (HTTP {res.status_code}): {res.text}\")\n\nprint(res.json()[\"text\"])\n```\n\n## Troubleshooting\n\n**Garbled or empty `text`** — the `format` field probably doesn't match the actual bytes, or the audio is silent\u002Fcorrupted. Confirm with `ffprobe audio.wav`.\n\n**400 with `\"Invalid base64\"` or silent failure** — `data` must be just base64, not a data URI (`data:audio\u002Fwav;base64,...`). Strip the prefix if you copied it from a browser `FileReader`.\n\n**400 with a `ZodError`** — a required field is missing or the wrong type. The body looks like `{\"success\":false,\"error\":{\"name\":\"ZodError\",\"message\":\"[...]\"}}` — the nested `message` JSON string names the bad path (commonly `input_audio.data` or `input_audio.format`).\n\n**413 \u002F request too large** — base64 inflates bytes by ~33%, so a large raw file becomes an even larger JSON payload. Use a smaller source file (compressed format, lower sample rate, or trimmed clip).\n\n**Model not found** — use the full slug from `\u002Fapi\u002Fv1\u002Fmodels?output_modalities=transcription` (`google\u002Fchirp-3`, not `chirp-3`).\n\n## References\n\n- [STT guide](https:\u002F\u002Fopenrouter.ai\u002Fdocs\u002Fguides\u002Foverview\u002Fmultimodal\u002Fstt)\n- [Models page — filter to transcription output](https:\u002F\u002Fopenrouter.ai\u002Fmodels?output_modalities=transcription)\n",{"data":35,"body":36},{"name":4,"description":6},{"type":37,"children":38},"root",[39,48,89,155,162,167,231,244,411,416,613,619,1460,1466,1471,1533,1559,1565,1818,1825,1912,1940,1946,1967,2245,2250,2256,3008,3014,3201,3207,3236,3276,3321,3331,3361,3367,3390],{"type":40,"tag":41,"props":42,"children":44},"element","h1",{"id":43},"openrouter-speech-to-text",[45],{"type":46,"value":47},"text","OpenRouter Speech-to-Text",{"type":40,"tag":49,"props":50,"children":51},"p",{},[52,54,61,63,69,71,77,79,87],{"type":46,"value":53},"Transcribe audio via ",{"type":40,"tag":55,"props":56,"children":58},"code",{"className":57},[],[59],{"type":46,"value":60},"POST \u002Fapi\u002Fv1\u002Faudio\u002Ftranscriptions",{"type":46,"value":62}," using ",{"type":40,"tag":55,"props":64,"children":66},{"className":65},[],[67],{"type":46,"value":68},"curl",{"type":46,"value":70},". Requires ",{"type":40,"tag":55,"props":72,"children":74},{"className":73},[],[75],{"type":46,"value":76},"OPENROUTER_API_KEY",{"type":46,"value":78}," (get one at ",{"type":40,"tag":80,"props":81,"children":85},"a",{"href":82,"rel":83},"https:\u002F\u002Fopenrouter.ai\u002Fkeys",[84],"nofollow",[86],{"type":46,"value":82},{"type":46,"value":88},"). If unset, stop and ask.",{"type":40,"tag":49,"props":90,"children":91},{},[92,98,100,106,108,114,116,122,124,130,132,137,139,145,147,153],{"type":40,"tag":93,"props":94,"children":95},"strong",{},[96],{"type":46,"value":97},"This endpoint is not OpenAI-compatible.",{"type":46,"value":99}," The body is JSON with base64 audio under ",{"type":40,"tag":55,"props":101,"children":103},{"className":102},[],[104],{"type":46,"value":105},"input_audio: { data, format }",{"type":46,"value":107}," — not ",{"type":40,"tag":55,"props":109,"children":111},{"className":110},[],[112],{"type":46,"value":113},"multipart\u002Fform-data",{"type":46,"value":115}," with a ",{"type":40,"tag":55,"props":117,"children":119},{"className":118},[],[120],{"type":46,"value":121},"file",{"type":46,"value":123}," field the way OpenAI's ",{"type":40,"tag":55,"props":125,"children":127},{"className":126},[],[128],{"type":46,"value":129},"\u002Fv1\u002Faudio\u002Ftranscriptions",{"type":46,"value":131}," works. Do not point the OpenAI SDK at this endpoint; it will send the wrong shape. Use ",{"type":40,"tag":55,"props":133,"children":135},{"className":134},[],[136],{"type":46,"value":68},{"type":46,"value":138},", ",{"type":40,"tag":55,"props":140,"children":142},{"className":141},[],[143],{"type":46,"value":144},"fetch",{"type":46,"value":146},", or ",{"type":40,"tag":55,"props":148,"children":150},{"className":149},[],[151],{"type":46,"value":152},"requests",{"type":46,"value":154}," directly.",{"type":40,"tag":156,"props":157,"children":159},"h2",{"id":158},"one-call-json-back",[160],{"type":46,"value":161},"One call, JSON back",{"type":40,"tag":49,"props":163,"children":164},{},[165],{"type":46,"value":166},"Both request and response are JSON. The response body carries:",{"type":40,"tag":168,"props":169,"children":170},"ul",{},[171,182],{"type":40,"tag":172,"props":173,"children":174},"li",{},[175,180],{"type":40,"tag":55,"props":176,"children":178},{"className":177},[],[179],{"type":46,"value":46},{"type":46,"value":181}," — the transcript.",{"type":40,"tag":172,"props":183,"children":184},{},[185,191,193,199,201,207,209,215,216,222,223,229],{"type":40,"tag":55,"props":186,"children":188},{"className":187},[],[189],{"type":46,"value":190},"usage",{"type":46,"value":192}," — always includes ",{"type":40,"tag":55,"props":194,"children":196},{"className":195},[],[197],{"type":46,"value":198},"cost",{"type":46,"value":200},". Providers additionally report either ",{"type":40,"tag":55,"props":202,"children":204},{"className":203},[],[205],{"type":46,"value":206},"seconds",{"type":46,"value":208}," of audio billed or a token breakdown (",{"type":40,"tag":55,"props":210,"children":212},{"className":211},[],[213],{"type":46,"value":214},"total_tokens",{"type":46,"value":138},{"type":40,"tag":55,"props":217,"children":219},{"className":218},[],[220],{"type":46,"value":221},"input_tokens",{"type":46,"value":138},{"type":40,"tag":55,"props":224,"children":226},{"className":225},[],[227],{"type":46,"value":228},"output_tokens",{"type":46,"value":230},"), depending on how they price the request. Don't assume both are present.",{"type":40,"tag":49,"props":232,"children":233},{},[234,236,242],{"type":46,"value":235},"Sample response (duration-priced provider, e.g. ",{"type":40,"tag":55,"props":237,"children":239},{"className":238},[],[240],{"type":46,"value":241},"google\u002Fchirp-3",{"type":46,"value":243},"):",{"type":40,"tag":245,"props":246,"children":251},"pre",{"className":247,"code":248,"language":249,"meta":250,"style":250},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"text\": \"I used to rule the world.\",\n  \"usage\": {\n    \"seconds\": 20,\n    \"cost\": 0.005333\n  }\n}\n","json","",[252],{"type":40,"tag":55,"props":253,"children":254},{"__ignoreMap":250},[255,267,311,336,368,393,402],{"type":40,"tag":256,"props":257,"children":260},"span",{"class":258,"line":259},"line",1,[261],{"type":40,"tag":256,"props":262,"children":264},{"style":263},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[265],{"type":46,"value":266},"{\n",{"type":40,"tag":256,"props":268,"children":270},{"class":258,"line":269},2,[271,276,281,286,291,296,302,306],{"type":40,"tag":256,"props":272,"children":273},{"style":263},[274],{"type":46,"value":275},"  \"",{"type":40,"tag":256,"props":277,"children":279},{"style":278},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[280],{"type":46,"value":46},{"type":40,"tag":256,"props":282,"children":283},{"style":263},[284],{"type":46,"value":285},"\"",{"type":40,"tag":256,"props":287,"children":288},{"style":263},[289],{"type":46,"value":290},":",{"type":40,"tag":256,"props":292,"children":293},{"style":263},[294],{"type":46,"value":295}," \"",{"type":40,"tag":256,"props":297,"children":299},{"style":298},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[300],{"type":46,"value":301},"I used to rule the world.",{"type":40,"tag":256,"props":303,"children":304},{"style":263},[305],{"type":46,"value":285},{"type":40,"tag":256,"props":307,"children":308},{"style":263},[309],{"type":46,"value":310},",\n",{"type":40,"tag":256,"props":312,"children":314},{"class":258,"line":313},3,[315,319,323,327,331],{"type":40,"tag":256,"props":316,"children":317},{"style":263},[318],{"type":46,"value":275},{"type":40,"tag":256,"props":320,"children":321},{"style":278},[322],{"type":46,"value":190},{"type":40,"tag":256,"props":324,"children":325},{"style":263},[326],{"type":46,"value":285},{"type":40,"tag":256,"props":328,"children":329},{"style":263},[330],{"type":46,"value":290},{"type":40,"tag":256,"props":332,"children":333},{"style":263},[334],{"type":46,"value":335}," {\n",{"type":40,"tag":256,"props":337,"children":339},{"class":258,"line":338},4,[340,345,350,354,358,364],{"type":40,"tag":256,"props":341,"children":342},{"style":263},[343],{"type":46,"value":344},"    \"",{"type":40,"tag":256,"props":346,"children":348},{"style":347},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[349],{"type":46,"value":206},{"type":40,"tag":256,"props":351,"children":352},{"style":263},[353],{"type":46,"value":285},{"type":40,"tag":256,"props":355,"children":356},{"style":263},[357],{"type":46,"value":290},{"type":40,"tag":256,"props":359,"children":361},{"style":360},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[362],{"type":46,"value":363}," 20",{"type":40,"tag":256,"props":365,"children":366},{"style":263},[367],{"type":46,"value":310},{"type":40,"tag":256,"props":369,"children":371},{"class":258,"line":370},5,[372,376,380,384,388],{"type":40,"tag":256,"props":373,"children":374},{"style":263},[375],{"type":46,"value":344},{"type":40,"tag":256,"props":377,"children":378},{"style":347},[379],{"type":46,"value":198},{"type":40,"tag":256,"props":381,"children":382},{"style":263},[383],{"type":46,"value":285},{"type":40,"tag":256,"props":385,"children":386},{"style":263},[387],{"type":46,"value":290},{"type":40,"tag":256,"props":389,"children":390},{"style":360},[391],{"type":46,"value":392}," 0.005333\n",{"type":40,"tag":256,"props":394,"children":396},{"class":258,"line":395},6,[397],{"type":40,"tag":256,"props":398,"children":399},{"style":263},[400],{"type":46,"value":401},"  }\n",{"type":40,"tag":256,"props":403,"children":405},{"class":258,"line":404},7,[406],{"type":40,"tag":256,"props":407,"children":408},{"style":263},[409],{"type":46,"value":410},"}\n",{"type":40,"tag":49,"props":412,"children":413},{},[414],{"type":46,"value":415},"Sample response (token-priced provider):",{"type":40,"tag":245,"props":417,"children":419},{"className":247,"code":418,"language":249,"meta":250,"style":250},"{\n  \"text\": \"Hello, this is a test of speech-to-text transcription.\",\n  \"usage\": {\n    \"total_tokens\": 113,\n    \"input_tokens\": 83,\n    \"output_tokens\": 30,\n    \"cost\": 0.000508\n  }\n}\n",[420],{"type":40,"tag":55,"props":421,"children":422},{"__ignoreMap":250},[423,430,466,489,517,545,573,597,605],{"type":40,"tag":256,"props":424,"children":425},{"class":258,"line":259},[426],{"type":40,"tag":256,"props":427,"children":428},{"style":263},[429],{"type":46,"value":266},{"type":40,"tag":256,"props":431,"children":432},{"class":258,"line":269},[433,437,441,445,449,453,458,462],{"type":40,"tag":256,"props":434,"children":435},{"style":263},[436],{"type":46,"value":275},{"type":40,"tag":256,"props":438,"children":439},{"style":278},[440],{"type":46,"value":46},{"type":40,"tag":256,"props":442,"children":443},{"style":263},[444],{"type":46,"value":285},{"type":40,"tag":256,"props":446,"children":447},{"style":263},[448],{"type":46,"value":290},{"type":40,"tag":256,"props":450,"children":451},{"style":263},[452],{"type":46,"value":295},{"type":40,"tag":256,"props":454,"children":455},{"style":298},[456],{"type":46,"value":457},"Hello, this is a test of speech-to-text transcription.",{"type":40,"tag":256,"props":459,"children":460},{"style":263},[461],{"type":46,"value":285},{"type":40,"tag":256,"props":463,"children":464},{"style":263},[465],{"type":46,"value":310},{"type":40,"tag":256,"props":467,"children":468},{"class":258,"line":313},[469,473,477,481,485],{"type":40,"tag":256,"props":470,"children":471},{"style":263},[472],{"type":46,"value":275},{"type":40,"tag":256,"props":474,"children":475},{"style":278},[476],{"type":46,"value":190},{"type":40,"tag":256,"props":478,"children":479},{"style":263},[480],{"type":46,"value":285},{"type":40,"tag":256,"props":482,"children":483},{"style":263},[484],{"type":46,"value":290},{"type":40,"tag":256,"props":486,"children":487},{"style":263},[488],{"type":46,"value":335},{"type":40,"tag":256,"props":490,"children":491},{"class":258,"line":338},[492,496,500,504,508,513],{"type":40,"tag":256,"props":493,"children":494},{"style":263},[495],{"type":46,"value":344},{"type":40,"tag":256,"props":497,"children":498},{"style":347},[499],{"type":46,"value":214},{"type":40,"tag":256,"props":501,"children":502},{"style":263},[503],{"type":46,"value":285},{"type":40,"tag":256,"props":505,"children":506},{"style":263},[507],{"type":46,"value":290},{"type":40,"tag":256,"props":509,"children":510},{"style":360},[511],{"type":46,"value":512}," 113",{"type":40,"tag":256,"props":514,"children":515},{"style":263},[516],{"type":46,"value":310},{"type":40,"tag":256,"props":518,"children":519},{"class":258,"line":370},[520,524,528,532,536,541],{"type":40,"tag":256,"props":521,"children":522},{"style":263},[523],{"type":46,"value":344},{"type":40,"tag":256,"props":525,"children":526},{"style":347},[527],{"type":46,"value":221},{"type":40,"tag":256,"props":529,"children":530},{"style":263},[531],{"type":46,"value":285},{"type":40,"tag":256,"props":533,"children":534},{"style":263},[535],{"type":46,"value":290},{"type":40,"tag":256,"props":537,"children":538},{"style":360},[539],{"type":46,"value":540}," 83",{"type":40,"tag":256,"props":542,"children":543},{"style":263},[544],{"type":46,"value":310},{"type":40,"tag":256,"props":546,"children":547},{"class":258,"line":395},[548,552,556,560,564,569],{"type":40,"tag":256,"props":549,"children":550},{"style":263},[551],{"type":46,"value":344},{"type":40,"tag":256,"props":553,"children":554},{"style":347},[555],{"type":46,"value":228},{"type":40,"tag":256,"props":557,"children":558},{"style":263},[559],{"type":46,"value":285},{"type":40,"tag":256,"props":561,"children":562},{"style":263},[563],{"type":46,"value":290},{"type":40,"tag":256,"props":565,"children":566},{"style":360},[567],{"type":46,"value":568}," 30",{"type":40,"tag":256,"props":570,"children":571},{"style":263},[572],{"type":46,"value":310},{"type":40,"tag":256,"props":574,"children":575},{"class":258,"line":404},[576,580,584,588,592],{"type":40,"tag":256,"props":577,"children":578},{"style":263},[579],{"type":46,"value":344},{"type":40,"tag":256,"props":581,"children":582},{"style":347},[583],{"type":46,"value":198},{"type":40,"tag":256,"props":585,"children":586},{"style":263},[587],{"type":46,"value":285},{"type":40,"tag":256,"props":589,"children":590},{"style":263},[591],{"type":46,"value":290},{"type":40,"tag":256,"props":593,"children":594},{"style":360},[595],{"type":46,"value":596}," 0.000508\n",{"type":40,"tag":256,"props":598,"children":600},{"class":258,"line":599},8,[601],{"type":40,"tag":256,"props":602,"children":603},{"style":263},[604],{"type":46,"value":401},{"type":40,"tag":256,"props":606,"children":608},{"class":258,"line":607},9,[609],{"type":40,"tag":256,"props":610,"children":611},{"style":263},[612],{"type":46,"value":410},{"type":40,"tag":156,"props":614,"children":616},{"id":615},"drop-in-workflow",[617],{"type":46,"value":618},"Drop-in workflow",{"type":40,"tag":245,"props":620,"children":624},{"className":621,"code":622,"language":623,"meta":250,"style":250},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","#!\u002Fusr\u002Fbin\u002Fenv bash\nset -euo pipefail\n\nMODEL=\"google\u002Fchirp-3\"\nFORMAT=\"wav\"                          # wav, mp3, flac, m4a, ogg, webm, aac\nAUDIO=\"audio.wav\"\nBODY=$(mktemp)\nPAYLOAD=$(mktemp)\n\naudio_b64=$(base64 \u003C \"$AUDIO\" | tr -d '\\n')\n\njq -n --arg model \"$MODEL\" --arg data \"$audio_b64\" --arg fmt \"$FORMAT\" \\\n  '{model: $model, input_audio: {data: $data, format: $fmt}}' > \"$PAYLOAD\"\n\n# --data-binary @file keeps the base64 payload off argv (avoids E2BIG \u002F ARG_MAX).\nhttp_code=$(curl -sS -X POST https:\u002F\u002Fopenrouter.ai\u002Fapi\u002Fv1\u002Faudio\u002Ftranscriptions \\\n  -H \"Authorization: Bearer $OPENROUTER_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  --output \"$BODY\" \\\n  -w '%{http_code}' \\\n  --data-binary @\"$PAYLOAD\")\n\nif [[ \"$http_code\" != \"200\" ]]; then\n  echo \"STT failed (HTTP $http_code):\" >&2\n  cat \"$BODY\" >&2\n  rm -f \"$BODY\" \"$PAYLOAD\"\n  exit 1\nfi\n\njq -r '.text' \"$BODY\"\nrm -f \"$BODY\" \"$PAYLOAD\"\n","bash",[625],{"type":40,"tag":55,"props":626,"children":627},{"__ignoreMap":250},[628,637,656,665,692,722,747,770,790,797,867,875,961,997,1005,1014,1055,1086,1111,1137,1163,1193,1201,1257,1292,1317,1354,1368,1377,1385,1423],{"type":40,"tag":256,"props":629,"children":630},{"class":258,"line":259},[631],{"type":40,"tag":256,"props":632,"children":634},{"style":633},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[635],{"type":46,"value":636},"#!\u002Fusr\u002Fbin\u002Fenv bash\n",{"type":40,"tag":256,"props":638,"children":639},{"class":258,"line":269},[640,646,651],{"type":40,"tag":256,"props":641,"children":643},{"style":642},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[644],{"type":46,"value":645},"set",{"type":40,"tag":256,"props":647,"children":648},{"style":298},[649],{"type":46,"value":650}," -euo",{"type":40,"tag":256,"props":652,"children":653},{"style":298},[654],{"type":46,"value":655}," pipefail\n",{"type":40,"tag":256,"props":657,"children":658},{"class":258,"line":313},[659],{"type":40,"tag":256,"props":660,"children":662},{"emptyLinePlaceholder":661},true,[663],{"type":46,"value":664},"\n",{"type":40,"tag":256,"props":666,"children":667},{"class":258,"line":338},[668,674,679,683,687],{"type":40,"tag":256,"props":669,"children":671},{"style":670},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[672],{"type":46,"value":673},"MODEL",{"type":40,"tag":256,"props":675,"children":676},{"style":263},[677],{"type":46,"value":678},"=",{"type":40,"tag":256,"props":680,"children":681},{"style":263},[682],{"type":46,"value":285},{"type":40,"tag":256,"props":684,"children":685},{"style":298},[686],{"type":46,"value":241},{"type":40,"tag":256,"props":688,"children":689},{"style":263},[690],{"type":46,"value":691},"\"\n",{"type":40,"tag":256,"props":693,"children":694},{"class":258,"line":370},[695,700,704,708,713,717],{"type":40,"tag":256,"props":696,"children":697},{"style":670},[698],{"type":46,"value":699},"FORMAT",{"type":40,"tag":256,"props":701,"children":702},{"style":263},[703],{"type":46,"value":678},{"type":40,"tag":256,"props":705,"children":706},{"style":263},[707],{"type":46,"value":285},{"type":40,"tag":256,"props":709,"children":710},{"style":298},[711],{"type":46,"value":712},"wav",{"type":40,"tag":256,"props":714,"children":715},{"style":263},[716],{"type":46,"value":285},{"type":40,"tag":256,"props":718,"children":719},{"style":633},[720],{"type":46,"value":721},"                          # wav, mp3, flac, m4a, ogg, webm, aac\n",{"type":40,"tag":256,"props":723,"children":724},{"class":258,"line":395},[725,730,734,738,743],{"type":40,"tag":256,"props":726,"children":727},{"style":670},[728],{"type":46,"value":729},"AUDIO",{"type":40,"tag":256,"props":731,"children":732},{"style":263},[733],{"type":46,"value":678},{"type":40,"tag":256,"props":735,"children":736},{"style":263},[737],{"type":46,"value":285},{"type":40,"tag":256,"props":739,"children":740},{"style":298},[741],{"type":46,"value":742},"audio.wav",{"type":40,"tag":256,"props":744,"children":745},{"style":263},[746],{"type":46,"value":691},{"type":40,"tag":256,"props":748,"children":749},{"class":258,"line":404},[750,755,760,765],{"type":40,"tag":256,"props":751,"children":752},{"style":670},[753],{"type":46,"value":754},"BODY",{"type":40,"tag":256,"props":756,"children":757},{"style":263},[758],{"type":46,"value":759},"=$(",{"type":40,"tag":256,"props":761,"children":762},{"style":347},[763],{"type":46,"value":764},"mktemp",{"type":40,"tag":256,"props":766,"children":767},{"style":263},[768],{"type":46,"value":769},")\n",{"type":40,"tag":256,"props":771,"children":772},{"class":258,"line":599},[773,778,782,786],{"type":40,"tag":256,"props":774,"children":775},{"style":670},[776],{"type":46,"value":777},"PAYLOAD",{"type":40,"tag":256,"props":779,"children":780},{"style":263},[781],{"type":46,"value":759},{"type":40,"tag":256,"props":783,"children":784},{"style":347},[785],{"type":46,"value":764},{"type":40,"tag":256,"props":787,"children":788},{"style":263},[789],{"type":46,"value":769},{"type":40,"tag":256,"props":791,"children":792},{"class":258,"line":607},[793],{"type":40,"tag":256,"props":794,"children":795},{"emptyLinePlaceholder":661},[796],{"type":46,"value":664},{"type":40,"tag":256,"props":798,"children":800},{"class":258,"line":799},10,[801,806,810,815,820,824,829,833,838,843,848,853,858,863],{"type":40,"tag":256,"props":802,"children":803},{"style":670},[804],{"type":46,"value":805},"audio_b64",{"type":40,"tag":256,"props":807,"children":808},{"style":263},[809],{"type":46,"value":759},{"type":40,"tag":256,"props":811,"children":812},{"style":347},[813],{"type":46,"value":814},"base64",{"type":40,"tag":256,"props":816,"children":817},{"style":263},[818],{"type":46,"value":819}," \u003C",{"type":40,"tag":256,"props":821,"children":822},{"style":263},[823],{"type":46,"value":295},{"type":40,"tag":256,"props":825,"children":826},{"style":670},[827],{"type":46,"value":828},"$AUDIO",{"type":40,"tag":256,"props":830,"children":831},{"style":263},[832],{"type":46,"value":285},{"type":40,"tag":256,"props":834,"children":835},{"style":263},[836],{"type":46,"value":837}," |",{"type":40,"tag":256,"props":839,"children":840},{"style":347},[841],{"type":46,"value":842}," tr",{"type":40,"tag":256,"props":844,"children":845},{"style":298},[846],{"type":46,"value":847}," -d",{"type":40,"tag":256,"props":849,"children":850},{"style":263},[851],{"type":46,"value":852}," '",{"type":40,"tag":256,"props":854,"children":855},{"style":298},[856],{"type":46,"value":857},"\\n",{"type":40,"tag":256,"props":859,"children":860},{"style":263},[861],{"type":46,"value":862},"'",{"type":40,"tag":256,"props":864,"children":865},{"style":263},[866],{"type":46,"value":769},{"type":40,"tag":256,"props":868,"children":870},{"class":258,"line":869},11,[871],{"type":40,"tag":256,"props":872,"children":873},{"emptyLinePlaceholder":661},[874],{"type":46,"value":664},{"type":40,"tag":256,"props":876,"children":878},{"class":258,"line":877},12,[879,884,889,894,899,903,908,912,916,921,925,930,934,938,943,947,952,956],{"type":40,"tag":256,"props":880,"children":881},{"style":347},[882],{"type":46,"value":883},"jq",{"type":40,"tag":256,"props":885,"children":886},{"style":298},[887],{"type":46,"value":888}," -n",{"type":40,"tag":256,"props":890,"children":891},{"style":298},[892],{"type":46,"value":893}," --arg",{"type":40,"tag":256,"props":895,"children":896},{"style":298},[897],{"type":46,"value":898}," model",{"type":40,"tag":256,"props":900,"children":901},{"style":263},[902],{"type":46,"value":295},{"type":40,"tag":256,"props":904,"children":905},{"style":670},[906],{"type":46,"value":907},"$MODEL",{"type":40,"tag":256,"props":909,"children":910},{"style":263},[911],{"type":46,"value":285},{"type":40,"tag":256,"props":913,"children":914},{"style":298},[915],{"type":46,"value":893},{"type":40,"tag":256,"props":917,"children":918},{"style":298},[919],{"type":46,"value":920}," data",{"type":40,"tag":256,"props":922,"children":923},{"style":263},[924],{"type":46,"value":295},{"type":40,"tag":256,"props":926,"children":927},{"style":670},[928],{"type":46,"value":929},"$audio_b64",{"type":40,"tag":256,"props":931,"children":932},{"style":263},[933],{"type":46,"value":285},{"type":40,"tag":256,"props":935,"children":936},{"style":298},[937],{"type":46,"value":893},{"type":40,"tag":256,"props":939,"children":940},{"style":298},[941],{"type":46,"value":942}," fmt",{"type":40,"tag":256,"props":944,"children":945},{"style":263},[946],{"type":46,"value":295},{"type":40,"tag":256,"props":948,"children":949},{"style":670},[950],{"type":46,"value":951},"$FORMAT",{"type":40,"tag":256,"props":953,"children":954},{"style":263},[955],{"type":46,"value":285},{"type":40,"tag":256,"props":957,"children":958},{"style":670},[959],{"type":46,"value":960}," \\\n",{"type":40,"tag":256,"props":962,"children":964},{"class":258,"line":963},13,[965,970,975,979,984,988,993],{"type":40,"tag":256,"props":966,"children":967},{"style":263},[968],{"type":46,"value":969},"  '",{"type":40,"tag":256,"props":971,"children":972},{"style":298},[973],{"type":46,"value":974},"{model: $model, input_audio: {data: $data, format: $fmt}}",{"type":40,"tag":256,"props":976,"children":977},{"style":263},[978],{"type":46,"value":862},{"type":40,"tag":256,"props":980,"children":981},{"style":263},[982],{"type":46,"value":983}," >",{"type":40,"tag":256,"props":985,"children":986},{"style":263},[987],{"type":46,"value":295},{"type":40,"tag":256,"props":989,"children":990},{"style":670},[991],{"type":46,"value":992},"$PAYLOAD",{"type":40,"tag":256,"props":994,"children":995},{"style":263},[996],{"type":46,"value":691},{"type":40,"tag":256,"props":998,"children":1000},{"class":258,"line":999},14,[1001],{"type":40,"tag":256,"props":1002,"children":1003},{"emptyLinePlaceholder":661},[1004],{"type":46,"value":664},{"type":40,"tag":256,"props":1006,"children":1008},{"class":258,"line":1007},15,[1009],{"type":40,"tag":256,"props":1010,"children":1011},{"style":633},[1012],{"type":46,"value":1013},"# --data-binary @file keeps the base64 payload off argv (avoids E2BIG \u002F ARG_MAX).\n",{"type":40,"tag":256,"props":1015,"children":1017},{"class":258,"line":1016},16,[1018,1023,1027,1031,1036,1041,1046,1051],{"type":40,"tag":256,"props":1019,"children":1020},{"style":670},[1021],{"type":46,"value":1022},"http_code",{"type":40,"tag":256,"props":1024,"children":1025},{"style":263},[1026],{"type":46,"value":759},{"type":40,"tag":256,"props":1028,"children":1029},{"style":347},[1030],{"type":46,"value":68},{"type":40,"tag":256,"props":1032,"children":1033},{"style":298},[1034],{"type":46,"value":1035}," -sS",{"type":40,"tag":256,"props":1037,"children":1038},{"style":298},[1039],{"type":46,"value":1040}," -X",{"type":40,"tag":256,"props":1042,"children":1043},{"style":298},[1044],{"type":46,"value":1045}," POST",{"type":40,"tag":256,"props":1047,"children":1048},{"style":298},[1049],{"type":46,"value":1050}," https:\u002F\u002Fopenrouter.ai\u002Fapi\u002Fv1\u002Faudio\u002Ftranscriptions",{"type":40,"tag":256,"props":1052,"children":1053},{"style":670},[1054],{"type":46,"value":960},{"type":40,"tag":256,"props":1056,"children":1058},{"class":258,"line":1057},17,[1059,1064,1068,1073,1078,1082],{"type":40,"tag":256,"props":1060,"children":1061},{"style":298},[1062],{"type":46,"value":1063},"  -H",{"type":40,"tag":256,"props":1065,"children":1066},{"style":263},[1067],{"type":46,"value":295},{"type":40,"tag":256,"props":1069,"children":1070},{"style":298},[1071],{"type":46,"value":1072},"Authorization: Bearer ",{"type":40,"tag":256,"props":1074,"children":1075},{"style":670},[1076],{"type":46,"value":1077},"$OPENROUTER_API_KEY",{"type":40,"tag":256,"props":1079,"children":1080},{"style":263},[1081],{"type":46,"value":285},{"type":40,"tag":256,"props":1083,"children":1084},{"style":670},[1085],{"type":46,"value":960},{"type":40,"tag":256,"props":1087,"children":1089},{"class":258,"line":1088},18,[1090,1094,1098,1103,1107],{"type":40,"tag":256,"props":1091,"children":1092},{"style":298},[1093],{"type":46,"value":1063},{"type":40,"tag":256,"props":1095,"children":1096},{"style":263},[1097],{"type":46,"value":295},{"type":40,"tag":256,"props":1099,"children":1100},{"style":298},[1101],{"type":46,"value":1102},"Content-Type: application\u002Fjson",{"type":40,"tag":256,"props":1104,"children":1105},{"style":263},[1106],{"type":46,"value":285},{"type":40,"tag":256,"props":1108,"children":1109},{"style":670},[1110],{"type":46,"value":960},{"type":40,"tag":256,"props":1112,"children":1114},{"class":258,"line":1113},19,[1115,1120,1124,1129,1133],{"type":40,"tag":256,"props":1116,"children":1117},{"style":298},[1118],{"type":46,"value":1119},"  --output",{"type":40,"tag":256,"props":1121,"children":1122},{"style":263},[1123],{"type":46,"value":295},{"type":40,"tag":256,"props":1125,"children":1126},{"style":670},[1127],{"type":46,"value":1128},"$BODY",{"type":40,"tag":256,"props":1130,"children":1131},{"style":263},[1132],{"type":46,"value":285},{"type":40,"tag":256,"props":1134,"children":1135},{"style":670},[1136],{"type":46,"value":960},{"type":40,"tag":256,"props":1138,"children":1140},{"class":258,"line":1139},20,[1141,1146,1150,1155,1159],{"type":40,"tag":256,"props":1142,"children":1143},{"style":298},[1144],{"type":46,"value":1145},"  -w",{"type":40,"tag":256,"props":1147,"children":1148},{"style":263},[1149],{"type":46,"value":852},{"type":40,"tag":256,"props":1151,"children":1152},{"style":298},[1153],{"type":46,"value":1154},"%{http_code}",{"type":40,"tag":256,"props":1156,"children":1157},{"style":263},[1158],{"type":46,"value":862},{"type":40,"tag":256,"props":1160,"children":1161},{"style":670},[1162],{"type":46,"value":960},{"type":40,"tag":256,"props":1164,"children":1166},{"class":258,"line":1165},21,[1167,1172,1177,1181,1185,1189],{"type":40,"tag":256,"props":1168,"children":1169},{"style":298},[1170],{"type":46,"value":1171},"  --data-binary",{"type":40,"tag":256,"props":1173,"children":1174},{"style":298},[1175],{"type":46,"value":1176}," @",{"type":40,"tag":256,"props":1178,"children":1179},{"style":263},[1180],{"type":46,"value":285},{"type":40,"tag":256,"props":1182,"children":1183},{"style":670},[1184],{"type":46,"value":992},{"type":40,"tag":256,"props":1186,"children":1187},{"style":263},[1188],{"type":46,"value":285},{"type":40,"tag":256,"props":1190,"children":1191},{"style":263},[1192],{"type":46,"value":769},{"type":40,"tag":256,"props":1194,"children":1196},{"class":258,"line":1195},22,[1197],{"type":40,"tag":256,"props":1198,"children":1199},{"emptyLinePlaceholder":661},[1200],{"type":46,"value":664},{"type":40,"tag":256,"props":1202,"children":1204},{"class":258,"line":1203},23,[1205,1211,1216,1220,1225,1229,1234,1238,1243,1247,1252],{"type":40,"tag":256,"props":1206,"children":1208},{"style":1207},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[1209],{"type":46,"value":1210},"if",{"type":40,"tag":256,"props":1212,"children":1213},{"style":263},[1214],{"type":46,"value":1215}," [[",{"type":40,"tag":256,"props":1217,"children":1218},{"style":263},[1219],{"type":46,"value":295},{"type":40,"tag":256,"props":1221,"children":1222},{"style":670},[1223],{"type":46,"value":1224},"$http_code",{"type":40,"tag":256,"props":1226,"children":1227},{"style":263},[1228],{"type":46,"value":285},{"type":40,"tag":256,"props":1230,"children":1231},{"style":263},[1232],{"type":46,"value":1233}," !=",{"type":40,"tag":256,"props":1235,"children":1236},{"style":263},[1237],{"type":46,"value":295},{"type":40,"tag":256,"props":1239,"children":1240},{"style":298},[1241],{"type":46,"value":1242},"200",{"type":40,"tag":256,"props":1244,"children":1245},{"style":263},[1246],{"type":46,"value":285},{"type":40,"tag":256,"props":1248,"children":1249},{"style":263},[1250],{"type":46,"value":1251}," ]];",{"type":40,"tag":256,"props":1253,"children":1254},{"style":1207},[1255],{"type":46,"value":1256}," then\n",{"type":40,"tag":256,"props":1258,"children":1260},{"class":258,"line":1259},24,[1261,1266,1270,1275,1279,1283,1287],{"type":40,"tag":256,"props":1262,"children":1263},{"style":642},[1264],{"type":46,"value":1265},"  echo",{"type":40,"tag":256,"props":1267,"children":1268},{"style":263},[1269],{"type":46,"value":295},{"type":40,"tag":256,"props":1271,"children":1272},{"style":298},[1273],{"type":46,"value":1274},"STT failed (HTTP ",{"type":40,"tag":256,"props":1276,"children":1277},{"style":670},[1278],{"type":46,"value":1224},{"type":40,"tag":256,"props":1280,"children":1281},{"style":298},[1282],{"type":46,"value":243},{"type":40,"tag":256,"props":1284,"children":1285},{"style":263},[1286],{"type":46,"value":285},{"type":40,"tag":256,"props":1288,"children":1289},{"style":263},[1290],{"type":46,"value":1291}," >&2\n",{"type":40,"tag":256,"props":1293,"children":1295},{"class":258,"line":1294},25,[1296,1301,1305,1309,1313],{"type":40,"tag":256,"props":1297,"children":1298},{"style":347},[1299],{"type":46,"value":1300},"  cat",{"type":40,"tag":256,"props":1302,"children":1303},{"style":263},[1304],{"type":46,"value":295},{"type":40,"tag":256,"props":1306,"children":1307},{"style":670},[1308],{"type":46,"value":1128},{"type":40,"tag":256,"props":1310,"children":1311},{"style":263},[1312],{"type":46,"value":285},{"type":40,"tag":256,"props":1314,"children":1315},{"style":263},[1316],{"type":46,"value":1291},{"type":40,"tag":256,"props":1318,"children":1319},{"class":258,"line":28},[1320,1325,1330,1334,1338,1342,1346,1350],{"type":40,"tag":256,"props":1321,"children":1322},{"style":347},[1323],{"type":46,"value":1324},"  rm",{"type":40,"tag":256,"props":1326,"children":1327},{"style":298},[1328],{"type":46,"value":1329}," -f",{"type":40,"tag":256,"props":1331,"children":1332},{"style":263},[1333],{"type":46,"value":295},{"type":40,"tag":256,"props":1335,"children":1336},{"style":670},[1337],{"type":46,"value":1128},{"type":40,"tag":256,"props":1339,"children":1340},{"style":263},[1341],{"type":46,"value":285},{"type":40,"tag":256,"props":1343,"children":1344},{"style":263},[1345],{"type":46,"value":295},{"type":40,"tag":256,"props":1347,"children":1348},{"style":670},[1349],{"type":46,"value":992},{"type":40,"tag":256,"props":1351,"children":1352},{"style":263},[1353],{"type":46,"value":691},{"type":40,"tag":256,"props":1355,"children":1357},{"class":258,"line":1356},27,[1358,1363],{"type":40,"tag":256,"props":1359,"children":1360},{"style":642},[1361],{"type":46,"value":1362},"  exit",{"type":40,"tag":256,"props":1364,"children":1365},{"style":360},[1366],{"type":46,"value":1367}," 1\n",{"type":40,"tag":256,"props":1369,"children":1371},{"class":258,"line":1370},28,[1372],{"type":40,"tag":256,"props":1373,"children":1374},{"style":1207},[1375],{"type":46,"value":1376},"fi\n",{"type":40,"tag":256,"props":1378,"children":1380},{"class":258,"line":1379},29,[1381],{"type":40,"tag":256,"props":1382,"children":1383},{"emptyLinePlaceholder":661},[1384],{"type":46,"value":664},{"type":40,"tag":256,"props":1386,"children":1388},{"class":258,"line":1387},30,[1389,1393,1398,1402,1407,1411,1415,1419],{"type":40,"tag":256,"props":1390,"children":1391},{"style":347},[1392],{"type":46,"value":883},{"type":40,"tag":256,"props":1394,"children":1395},{"style":298},[1396],{"type":46,"value":1397}," -r",{"type":40,"tag":256,"props":1399,"children":1400},{"style":263},[1401],{"type":46,"value":852},{"type":40,"tag":256,"props":1403,"children":1404},{"style":298},[1405],{"type":46,"value":1406},".text",{"type":40,"tag":256,"props":1408,"children":1409},{"style":263},[1410],{"type":46,"value":862},{"type":40,"tag":256,"props":1412,"children":1413},{"style":263},[1414],{"type":46,"value":295},{"type":40,"tag":256,"props":1416,"children":1417},{"style":670},[1418],{"type":46,"value":1128},{"type":40,"tag":256,"props":1420,"children":1421},{"style":263},[1422],{"type":46,"value":691},{"type":40,"tag":256,"props":1424,"children":1426},{"class":258,"line":1425},31,[1427,1432,1436,1440,1444,1448,1452,1456],{"type":40,"tag":256,"props":1428,"children":1429},{"style":347},[1430],{"type":46,"value":1431},"rm",{"type":40,"tag":256,"props":1433,"children":1434},{"style":298},[1435],{"type":46,"value":1329},{"type":40,"tag":256,"props":1437,"children":1438},{"style":263},[1439],{"type":46,"value":295},{"type":40,"tag":256,"props":1441,"children":1442},{"style":670},[1443],{"type":46,"value":1128},{"type":40,"tag":256,"props":1445,"children":1446},{"style":263},[1447],{"type":46,"value":285},{"type":40,"tag":256,"props":1449,"children":1450},{"style":263},[1451],{"type":46,"value":295},{"type":40,"tag":256,"props":1453,"children":1454},{"style":670},[1455],{"type":46,"value":992},{"type":40,"tag":256,"props":1457,"children":1458},{"style":263},[1459],{"type":46,"value":691},{"type":40,"tag":156,"props":1461,"children":1463},{"id":1462},"discovering-stt-models",[1464],{"type":46,"value":1465},"Discovering STT models",{"type":40,"tag":49,"props":1467,"children":1468},{},[1469],{"type":46,"value":1470},"Filter the models endpoint by output modality to list transcription models.",{"type":40,"tag":245,"props":1472,"children":1474},{"className":621,"code":1473,"language":623,"meta":250,"style":250},"curl -sS \"https:\u002F\u002Fopenrouter.ai\u002Fapi\u002Fv1\u002Fmodels?output_modalities=transcription\" \\\n  | jq '.data[] | {id, name, pricing}'\n",[1475],{"type":40,"tag":55,"props":1476,"children":1477},{"__ignoreMap":250},[1478,1506],{"type":40,"tag":256,"props":1479,"children":1480},{"class":258,"line":259},[1481,1485,1489,1493,1498,1502],{"type":40,"tag":256,"props":1482,"children":1483},{"style":347},[1484],{"type":46,"value":68},{"type":40,"tag":256,"props":1486,"children":1487},{"style":298},[1488],{"type":46,"value":1035},{"type":40,"tag":256,"props":1490,"children":1491},{"style":263},[1492],{"type":46,"value":295},{"type":40,"tag":256,"props":1494,"children":1495},{"style":298},[1496],{"type":46,"value":1497},"https:\u002F\u002Fopenrouter.ai\u002Fapi\u002Fv1\u002Fmodels?output_modalities=transcription",{"type":40,"tag":256,"props":1499,"children":1500},{"style":263},[1501],{"type":46,"value":285},{"type":40,"tag":256,"props":1503,"children":1504},{"style":670},[1505],{"type":46,"value":960},{"type":40,"tag":256,"props":1507,"children":1508},{"class":258,"line":269},[1509,1514,1519,1523,1528],{"type":40,"tag":256,"props":1510,"children":1511},{"style":263},[1512],{"type":46,"value":1513},"  |",{"type":40,"tag":256,"props":1515,"children":1516},{"style":347},[1517],{"type":46,"value":1518}," jq",{"type":40,"tag":256,"props":1520,"children":1521},{"style":263},[1522],{"type":46,"value":852},{"type":40,"tag":256,"props":1524,"children":1525},{"style":298},[1526],{"type":46,"value":1527},".data[] | {id, name, pricing}",{"type":40,"tag":256,"props":1529,"children":1530},{"style":263},[1531],{"type":46,"value":1532},"'\n",{"type":40,"tag":49,"props":1534,"children":1535},{},[1536,1538,1543,1544,1550,1551,1557],{"type":46,"value":1537},"Models are provider-namespaced — use the full slug (",{"type":40,"tag":55,"props":1539,"children":1541},{"className":1540},[],[1542],{"type":46,"value":241},{"type":46,"value":138},{"type":40,"tag":55,"props":1545,"children":1547},{"className":1546},[],[1548],{"type":46,"value":1549},"openai\u002Fwhisper-1",{"type":46,"value":138},{"type":40,"tag":55,"props":1552,"children":1554},{"className":1553},[],[1555],{"type":46,"value":1556},"openai\u002Fwhisper-large-v3",{"type":46,"value":1558},"), not the short name.",{"type":40,"tag":156,"props":1560,"children":1562},{"id":1561},"parameters",[1563],{"type":46,"value":1564},"Parameters",{"type":40,"tag":1566,"props":1567,"children":1568},"table",{},[1569,1593],{"type":40,"tag":1570,"props":1571,"children":1572},"thead",{},[1573],{"type":40,"tag":1574,"props":1575,"children":1576},"tr",{},[1577,1583,1588],{"type":40,"tag":1578,"props":1579,"children":1580},"th",{},[1581],{"type":46,"value":1582},"Field",{"type":40,"tag":1578,"props":1584,"children":1585},{},[1586],{"type":46,"value":1587},"Required",{"type":40,"tag":1578,"props":1589,"children":1590},{},[1591],{"type":46,"value":1592},"Notes",{"type":40,"tag":1594,"props":1595,"children":1596},"tbody",{},[1597,1628,1664,1732,1776,1797],{"type":40,"tag":1574,"props":1598,"children":1599},{},[1600,1610,1615],{"type":40,"tag":1601,"props":1602,"children":1603},"td",{},[1604],{"type":40,"tag":55,"props":1605,"children":1607},{"className":1606},[],[1608],{"type":46,"value":1609},"model",{"type":40,"tag":1601,"props":1611,"children":1612},{},[1613],{"type":46,"value":1614},"yes",{"type":40,"tag":1601,"props":1616,"children":1617},{},[1618,1620,1626],{"type":46,"value":1619},"Full model slug from ",{"type":40,"tag":55,"props":1621,"children":1623},{"className":1622},[],[1624],{"type":46,"value":1625},"\u002Fapi\u002Fv1\u002Fmodels?output_modalities=transcription",{"type":46,"value":1627},".",{"type":40,"tag":1574,"props":1629,"children":1630},{},[1631,1640,1644],{"type":40,"tag":1601,"props":1632,"children":1633},{},[1634],{"type":40,"tag":55,"props":1635,"children":1637},{"className":1636},[],[1638],{"type":46,"value":1639},"input_audio.data",{"type":40,"tag":1601,"props":1641,"children":1642},{},[1643],{"type":46,"value":1614},{"type":40,"tag":1601,"props":1645,"children":1646},{},[1647,1649,1654,1656,1662],{"type":46,"value":1648},"Base64-encoded raw audio bytes. ",{"type":40,"tag":93,"props":1650,"children":1651},{},[1652],{"type":46,"value":1653},"Not",{"type":46,"value":1655}," a data URI — just the base64 payload, no ",{"type":40,"tag":55,"props":1657,"children":1659},{"className":1658},[],[1660],{"type":46,"value":1661},"data:audio\u002F...;base64,",{"type":46,"value":1663}," prefix.",{"type":40,"tag":1574,"props":1665,"children":1666},{},[1667,1676,1680],{"type":40,"tag":1601,"props":1668,"children":1669},{},[1670],{"type":40,"tag":55,"props":1671,"children":1673},{"className":1672},[],[1674],{"type":46,"value":1675},"input_audio.format",{"type":40,"tag":1601,"props":1677,"children":1678},{},[1679],{"type":46,"value":1614},{"type":40,"tag":1601,"props":1681,"children":1682},{},[1683,1688,1689,1695,1696,1702,1703,1709,1710,1716,1717,1723,1724,1730],{"type":40,"tag":55,"props":1684,"children":1686},{"className":1685},[],[1687],{"type":46,"value":712},{"type":46,"value":138},{"type":40,"tag":55,"props":1690,"children":1692},{"className":1691},[],[1693],{"type":46,"value":1694},"mp3",{"type":46,"value":138},{"type":40,"tag":55,"props":1697,"children":1699},{"className":1698},[],[1700],{"type":46,"value":1701},"flac",{"type":46,"value":138},{"type":40,"tag":55,"props":1704,"children":1706},{"className":1705},[],[1707],{"type":46,"value":1708},"m4a",{"type":46,"value":138},{"type":40,"tag":55,"props":1711,"children":1713},{"className":1712},[],[1714],{"type":46,"value":1715},"ogg",{"type":46,"value":138},{"type":40,"tag":55,"props":1718,"children":1720},{"className":1719},[],[1721],{"type":46,"value":1722},"webm",{"type":46,"value":146},{"type":40,"tag":55,"props":1725,"children":1727},{"className":1726},[],[1728],{"type":46,"value":1729},"aac",{"type":46,"value":1731},". Must match the actual bytes. Support varies by provider.",{"type":40,"tag":1574,"props":1733,"children":1734},{},[1735,1744,1749],{"type":40,"tag":1601,"props":1736,"children":1737},{},[1738],{"type":40,"tag":55,"props":1739,"children":1741},{"className":1740},[],[1742],{"type":46,"value":1743},"language",{"type":40,"tag":1601,"props":1745,"children":1746},{},[1747],{"type":46,"value":1748},"no",{"type":40,"tag":1601,"props":1750,"children":1751},{},[1752,1754,1760,1761,1767,1768,1774],{"type":46,"value":1753},"ISO-639-1 code (",{"type":40,"tag":55,"props":1755,"children":1757},{"className":1756},[],[1758],{"type":46,"value":1759},"en",{"type":46,"value":138},{"type":40,"tag":55,"props":1762,"children":1764},{"className":1763},[],[1765],{"type":46,"value":1766},"ja",{"type":46,"value":138},{"type":40,"tag":55,"props":1769,"children":1771},{"className":1770},[],[1772],{"type":46,"value":1773},"fr",{"type":46,"value":1775},"). Auto-detected if omitted.",{"type":40,"tag":1574,"props":1777,"children":1778},{},[1779,1788,1792],{"type":40,"tag":1601,"props":1780,"children":1781},{},[1782],{"type":40,"tag":55,"props":1783,"children":1785},{"className":1784},[],[1786],{"type":46,"value":1787},"temperature",{"type":40,"tag":1601,"props":1789,"children":1790},{},[1791],{"type":46,"value":1748},{"type":40,"tag":1601,"props":1793,"children":1794},{},[1795],{"type":46,"value":1796},"0–1. Lower is more deterministic.",{"type":40,"tag":1574,"props":1798,"children":1799},{},[1800,1809,1813],{"type":40,"tag":1601,"props":1801,"children":1802},{},[1803],{"type":40,"tag":55,"props":1804,"children":1806},{"className":1805},[],[1807],{"type":46,"value":1808},"provider",{"type":40,"tag":1601,"props":1810,"children":1811},{},[1812],{"type":46,"value":1748},{"type":40,"tag":1601,"props":1814,"children":1815},{},[1816],{"type":46,"value":1817},"Provider passthrough — see below.",{"type":40,"tag":1819,"props":1820,"children":1822},"h3",{"id":1821},"picking-an-audio-format",[1823],{"type":46,"value":1824},"Picking an audio format",{"type":40,"tag":168,"props":1826,"children":1827},{},[1828,1851,1882],{"type":40,"tag":172,"props":1829,"children":1830},{},[1831,1839,1841,1849],{"type":40,"tag":93,"props":1832,"children":1833},{},[1834],{"type":40,"tag":55,"props":1835,"children":1837},{"className":1836},[],[1838],{"type":46,"value":712},{"type":46,"value":1840}," \u002F ",{"type":40,"tag":93,"props":1842,"children":1843},{},[1844],{"type":40,"tag":55,"props":1845,"children":1847},{"className":1846},[],[1848],{"type":46,"value":1701},{"type":46,"value":1850}," — uncompressed or lossless. Highest quality; largest uploads.",{"type":40,"tag":172,"props":1852,"children":1853},{},[1854,1862,1863,1871,1872,1880],{"type":40,"tag":93,"props":1855,"children":1856},{},[1857],{"type":40,"tag":55,"props":1858,"children":1860},{"className":1859},[],[1861],{"type":46,"value":1694},{"type":46,"value":1840},{"type":40,"tag":93,"props":1864,"children":1865},{},[1866],{"type":40,"tag":55,"props":1867,"children":1869},{"className":1868},[],[1870],{"type":46,"value":1708},{"type":46,"value":1840},{"type":40,"tag":93,"props":1873,"children":1874},{},[1875],{"type":40,"tag":55,"props":1876,"children":1878},{"className":1877},[],[1879],{"type":46,"value":1729},{"type":46,"value":1881}," — compressed. Smaller payloads, which matters because base64 inflates bytes by ~33% on top of whatever the file already weighs.",{"type":40,"tag":172,"props":1883,"children":1884},{},[1885,1893,1894,1902,1904,1910],{"type":40,"tag":93,"props":1886,"children":1887},{},[1888],{"type":40,"tag":55,"props":1889,"children":1891},{"className":1890},[],[1892],{"type":46,"value":1722},{"type":46,"value":1840},{"type":40,"tag":93,"props":1895,"children":1896},{},[1897],{"type":40,"tag":55,"props":1898,"children":1900},{"className":1899},[],[1901],{"type":46,"value":1715},{"type":46,"value":1903}," — typical for browser recordings (",{"type":40,"tag":55,"props":1905,"children":1907},{"className":1906},[],[1908],{"type":46,"value":1909},"MediaRecorder",{"type":46,"value":1911},").",{"type":40,"tag":49,"props":1913,"children":1914},{},[1915,1917,1923,1925,1931,1933,1939],{"type":46,"value":1916},"The ",{"type":40,"tag":55,"props":1918,"children":1920},{"className":1919},[],[1921],{"type":46,"value":1922},"format",{"type":46,"value":1924}," field must match the actual container\u002Fcodec of the bytes. A file saved as ",{"type":40,"tag":55,"props":1926,"children":1928},{"className":1927},[],[1929],{"type":46,"value":1930},".wav",{"type":46,"value":1932}," that is actually mp3 will be rejected or mis-decoded. When in doubt, confirm with ",{"type":40,"tag":55,"props":1934,"children":1936},{"className":1935},[],[1937],{"type":46,"value":1938},"ffprobe \u003Cfile>",{"type":46,"value":1627},{"type":40,"tag":156,"props":1941,"children":1943},{"id":1942},"provider-specific-options",[1944],{"type":46,"value":1945},"Provider-specific options",{"type":40,"tag":49,"props":1947,"children":1948},{},[1949,1951,1957,1959,1965],{"type":46,"value":1950},"Provider passthrough goes under ",{"type":40,"tag":55,"props":1952,"children":1954},{"className":1953},[],[1955],{"type":46,"value":1956},"provider.options.\u003Cslug>",{"type":46,"value":1958}," and is only forwarded when that provider handles the request. Example — Groq's ",{"type":40,"tag":55,"props":1960,"children":1962},{"className":1961},[],[1963],{"type":46,"value":1964},"prompt",{"type":46,"value":1966}," for vocabulary hinting:",{"type":40,"tag":245,"props":1968,"children":1970},{"className":247,"code":1969,"language":249,"meta":250,"style":250},"{\n  \"model\": \"openai\u002Fwhisper-large-v3\",\n  \"input_audio\": { \"data\": \"UklGRiQA...\", \"format\": \"wav\" },\n  \"provider\": {\n    \"options\": {\n      \"groq\": {\n        \"prompt\": \"Expected vocabulary: OpenRouter, API, transcription\"\n      }\n    }\n  }\n}\n",[1971],{"type":40,"tag":55,"props":1972,"children":1973},{"__ignoreMap":250},[1974,1981,2016,2109,2132,2156,2181,2215,2223,2231,2238],{"type":40,"tag":256,"props":1975,"children":1976},{"class":258,"line":259},[1977],{"type":40,"tag":256,"props":1978,"children":1979},{"style":263},[1980],{"type":46,"value":266},{"type":40,"tag":256,"props":1982,"children":1983},{"class":258,"line":269},[1984,1988,1992,1996,2000,2004,2008,2012],{"type":40,"tag":256,"props":1985,"children":1986},{"style":263},[1987],{"type":46,"value":275},{"type":40,"tag":256,"props":1989,"children":1990},{"style":278},[1991],{"type":46,"value":1609},{"type":40,"tag":256,"props":1993,"children":1994},{"style":263},[1995],{"type":46,"value":285},{"type":40,"tag":256,"props":1997,"children":1998},{"style":263},[1999],{"type":46,"value":290},{"type":40,"tag":256,"props":2001,"children":2002},{"style":263},[2003],{"type":46,"value":295},{"type":40,"tag":256,"props":2005,"children":2006},{"style":298},[2007],{"type":46,"value":1556},{"type":40,"tag":256,"props":2009,"children":2010},{"style":263},[2011],{"type":46,"value":285},{"type":40,"tag":256,"props":2013,"children":2014},{"style":263},[2015],{"type":46,"value":310},{"type":40,"tag":256,"props":2017,"children":2018},{"class":258,"line":313},[2019,2023,2028,2032,2036,2041,2045,2050,2054,2058,2062,2067,2071,2076,2080,2084,2088,2092,2096,2100,2104],{"type":40,"tag":256,"props":2020,"children":2021},{"style":263},[2022],{"type":46,"value":275},{"type":40,"tag":256,"props":2024,"children":2025},{"style":278},[2026],{"type":46,"value":2027},"input_audio",{"type":40,"tag":256,"props":2029,"children":2030},{"style":263},[2031],{"type":46,"value":285},{"type":40,"tag":256,"props":2033,"children":2034},{"style":263},[2035],{"type":46,"value":290},{"type":40,"tag":256,"props":2037,"children":2038},{"style":263},[2039],{"type":46,"value":2040}," {",{"type":40,"tag":256,"props":2042,"children":2043},{"style":263},[2044],{"type":46,"value":295},{"type":40,"tag":256,"props":2046,"children":2047},{"style":347},[2048],{"type":46,"value":2049},"data",{"type":40,"tag":256,"props":2051,"children":2052},{"style":263},[2053],{"type":46,"value":285},{"type":40,"tag":256,"props":2055,"children":2056},{"style":263},[2057],{"type":46,"value":290},{"type":40,"tag":256,"props":2059,"children":2060},{"style":263},[2061],{"type":46,"value":295},{"type":40,"tag":256,"props":2063,"children":2064},{"style":298},[2065],{"type":46,"value":2066},"UklGRiQA...",{"type":40,"tag":256,"props":2068,"children":2069},{"style":263},[2070],{"type":46,"value":285},{"type":40,"tag":256,"props":2072,"children":2073},{"style":263},[2074],{"type":46,"value":2075},",",{"type":40,"tag":256,"props":2077,"children":2078},{"style":263},[2079],{"type":46,"value":295},{"type":40,"tag":256,"props":2081,"children":2082},{"style":347},[2083],{"type":46,"value":1922},{"type":40,"tag":256,"props":2085,"children":2086},{"style":263},[2087],{"type":46,"value":285},{"type":40,"tag":256,"props":2089,"children":2090},{"style":263},[2091],{"type":46,"value":290},{"type":40,"tag":256,"props":2093,"children":2094},{"style":263},[2095],{"type":46,"value":295},{"type":40,"tag":256,"props":2097,"children":2098},{"style":298},[2099],{"type":46,"value":712},{"type":40,"tag":256,"props":2101,"children":2102},{"style":263},[2103],{"type":46,"value":285},{"type":40,"tag":256,"props":2105,"children":2106},{"style":263},[2107],{"type":46,"value":2108}," },\n",{"type":40,"tag":256,"props":2110,"children":2111},{"class":258,"line":338},[2112,2116,2120,2124,2128],{"type":40,"tag":256,"props":2113,"children":2114},{"style":263},[2115],{"type":46,"value":275},{"type":40,"tag":256,"props":2117,"children":2118},{"style":278},[2119],{"type":46,"value":1808},{"type":40,"tag":256,"props":2121,"children":2122},{"style":263},[2123],{"type":46,"value":285},{"type":40,"tag":256,"props":2125,"children":2126},{"style":263},[2127],{"type":46,"value":290},{"type":40,"tag":256,"props":2129,"children":2130},{"style":263},[2131],{"type":46,"value":335},{"type":40,"tag":256,"props":2133,"children":2134},{"class":258,"line":370},[2135,2139,2144,2148,2152],{"type":40,"tag":256,"props":2136,"children":2137},{"style":263},[2138],{"type":46,"value":344},{"type":40,"tag":256,"props":2140,"children":2141},{"style":347},[2142],{"type":46,"value":2143},"options",{"type":40,"tag":256,"props":2145,"children":2146},{"style":263},[2147],{"type":46,"value":285},{"type":40,"tag":256,"props":2149,"children":2150},{"style":263},[2151],{"type":46,"value":290},{"type":40,"tag":256,"props":2153,"children":2154},{"style":263},[2155],{"type":46,"value":335},{"type":40,"tag":256,"props":2157,"children":2158},{"class":258,"line":395},[2159,2164,2169,2173,2177],{"type":40,"tag":256,"props":2160,"children":2161},{"style":263},[2162],{"type":46,"value":2163},"      \"",{"type":40,"tag":256,"props":2165,"children":2166},{"style":360},[2167],{"type":46,"value":2168},"groq",{"type":40,"tag":256,"props":2170,"children":2171},{"style":263},[2172],{"type":46,"value":285},{"type":40,"tag":256,"props":2174,"children":2175},{"style":263},[2176],{"type":46,"value":290},{"type":40,"tag":256,"props":2178,"children":2179},{"style":263},[2180],{"type":46,"value":335},{"type":40,"tag":256,"props":2182,"children":2183},{"class":258,"line":404},[2184,2189,2194,2198,2202,2206,2211],{"type":40,"tag":256,"props":2185,"children":2186},{"style":263},[2187],{"type":46,"value":2188},"        \"",{"type":40,"tag":256,"props":2190,"children":2192},{"style":2191},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[2193],{"type":46,"value":1964},{"type":40,"tag":256,"props":2195,"children":2196},{"style":263},[2197],{"type":46,"value":285},{"type":40,"tag":256,"props":2199,"children":2200},{"style":263},[2201],{"type":46,"value":290},{"type":40,"tag":256,"props":2203,"children":2204},{"style":263},[2205],{"type":46,"value":295},{"type":40,"tag":256,"props":2207,"children":2208},{"style":298},[2209],{"type":46,"value":2210},"Expected vocabulary: OpenRouter, API, transcription",{"type":40,"tag":256,"props":2212,"children":2213},{"style":263},[2214],{"type":46,"value":691},{"type":40,"tag":256,"props":2216,"children":2217},{"class":258,"line":599},[2218],{"type":40,"tag":256,"props":2219,"children":2220},{"style":263},[2221],{"type":46,"value":2222},"      }\n",{"type":40,"tag":256,"props":2224,"children":2225},{"class":258,"line":607},[2226],{"type":40,"tag":256,"props":2227,"children":2228},{"style":263},[2229],{"type":46,"value":2230},"    }\n",{"type":40,"tag":256,"props":2232,"children":2233},{"class":258,"line":799},[2234],{"type":40,"tag":256,"props":2235,"children":2236},{"style":263},[2237],{"type":46,"value":401},{"type":40,"tag":256,"props":2239,"children":2240},{"class":258,"line":869},[2241],{"type":40,"tag":256,"props":2242,"children":2243},{"style":263},[2244],{"type":46,"value":410},{"type":40,"tag":49,"props":2246,"children":2247},{},[2248],{"type":46,"value":2249},"Options keyed by provider slug are forwarded only when that provider matches; other keys are ignored. Check each provider's upstream docs for available passthrough keys.",{"type":40,"tag":156,"props":2251,"children":2253},{"id":2252},"typescript-fetch",[2254],{"type":46,"value":2255},"TypeScript (fetch)",{"type":40,"tag":245,"props":2257,"children":2261},{"className":2258,"code":2259,"language":2260,"meta":250,"style":250},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import fs from \"fs\";\n\nconst audio = await fs.promises.readFile(\"audio.wav\");\nconst data = audio.toString(\"base64\");\n\nconst res = await fetch(\"https:\u002F\u002Fopenrouter.ai\u002Fapi\u002Fv1\u002Faudio\u002Ftranscriptions\", {\n  method: \"POST\",\n  headers: {\n    Authorization: `Bearer ${process.env.OPENROUTER_API_KEY}`,\n    \"Content-Type\": \"application\u002Fjson\",\n  },\n  body: JSON.stringify({\n    model: \"google\u002Fchirp-3\",\n    input_audio: { data, format: \"wav\" },\n  }),\n});\n\nif (!res.ok) {\n  throw new Error(`STT failed (HTTP ${res.status}): ${await res.text()}`);\n}\n\nconst result = await res.json();\nconsole.log(result.text);\n","typescript",[2262],{"type":40,"tag":55,"props":2263,"children":2264},{"__ignoreMap":250},[2265,2301,2308,2379,2433,2440,2490,2519,2535,2593,2630,2638,2672,2700,2749,2765,2781,2788,2823,2919,2926,2933,2973],{"type":40,"tag":256,"props":2266,"children":2267},{"class":258,"line":259},[2268,2273,2278,2283,2287,2292,2296],{"type":40,"tag":256,"props":2269,"children":2270},{"style":1207},[2271],{"type":46,"value":2272},"import",{"type":40,"tag":256,"props":2274,"children":2275},{"style":670},[2276],{"type":46,"value":2277}," fs ",{"type":40,"tag":256,"props":2279,"children":2280},{"style":1207},[2281],{"type":46,"value":2282},"from",{"type":40,"tag":256,"props":2284,"children":2285},{"style":263},[2286],{"type":46,"value":295},{"type":40,"tag":256,"props":2288,"children":2289},{"style":298},[2290],{"type":46,"value":2291},"fs",{"type":40,"tag":256,"props":2293,"children":2294},{"style":263},[2295],{"type":46,"value":285},{"type":40,"tag":256,"props":2297,"children":2298},{"style":263},[2299],{"type":46,"value":2300},";\n",{"type":40,"tag":256,"props":2302,"children":2303},{"class":258,"line":269},[2304],{"type":40,"tag":256,"props":2305,"children":2306},{"emptyLinePlaceholder":661},[2307],{"type":46,"value":664},{"type":40,"tag":256,"props":2309,"children":2310},{"class":258,"line":313},[2311,2316,2321,2325,2330,2335,2339,2344,2348,2353,2358,2362,2366,2370,2375],{"type":40,"tag":256,"props":2312,"children":2313},{"style":278},[2314],{"type":46,"value":2315},"const",{"type":40,"tag":256,"props":2317,"children":2318},{"style":670},[2319],{"type":46,"value":2320}," audio ",{"type":40,"tag":256,"props":2322,"children":2323},{"style":263},[2324],{"type":46,"value":678},{"type":40,"tag":256,"props":2326,"children":2327},{"style":1207},[2328],{"type":46,"value":2329}," await",{"type":40,"tag":256,"props":2331,"children":2332},{"style":670},[2333],{"type":46,"value":2334}," fs",{"type":40,"tag":256,"props":2336,"children":2337},{"style":263},[2338],{"type":46,"value":1627},{"type":40,"tag":256,"props":2340,"children":2341},{"style":670},[2342],{"type":46,"value":2343},"promises",{"type":40,"tag":256,"props":2345,"children":2346},{"style":263},[2347],{"type":46,"value":1627},{"type":40,"tag":256,"props":2349,"children":2350},{"style":642},[2351],{"type":46,"value":2352},"readFile",{"type":40,"tag":256,"props":2354,"children":2355},{"style":670},[2356],{"type":46,"value":2357},"(",{"type":40,"tag":256,"props":2359,"children":2360},{"style":263},[2361],{"type":46,"value":285},{"type":40,"tag":256,"props":2363,"children":2364},{"style":298},[2365],{"type":46,"value":742},{"type":40,"tag":256,"props":2367,"children":2368},{"style":263},[2369],{"type":46,"value":285},{"type":40,"tag":256,"props":2371,"children":2372},{"style":670},[2373],{"type":46,"value":2374},")",{"type":40,"tag":256,"props":2376,"children":2377},{"style":263},[2378],{"type":46,"value":2300},{"type":40,"tag":256,"props":2380,"children":2381},{"class":258,"line":338},[2382,2386,2391,2395,2400,2404,2409,2413,2417,2421,2425,2429],{"type":40,"tag":256,"props":2383,"children":2384},{"style":278},[2385],{"type":46,"value":2315},{"type":40,"tag":256,"props":2387,"children":2388},{"style":670},[2389],{"type":46,"value":2390}," data ",{"type":40,"tag":256,"props":2392,"children":2393},{"style":263},[2394],{"type":46,"value":678},{"type":40,"tag":256,"props":2396,"children":2397},{"style":670},[2398],{"type":46,"value":2399}," audio",{"type":40,"tag":256,"props":2401,"children":2402},{"style":263},[2403],{"type":46,"value":1627},{"type":40,"tag":256,"props":2405,"children":2406},{"style":642},[2407],{"type":46,"value":2408},"toString",{"type":40,"tag":256,"props":2410,"children":2411},{"style":670},[2412],{"type":46,"value":2357},{"type":40,"tag":256,"props":2414,"children":2415},{"style":263},[2416],{"type":46,"value":285},{"type":40,"tag":256,"props":2418,"children":2419},{"style":298},[2420],{"type":46,"value":814},{"type":40,"tag":256,"props":2422,"children":2423},{"style":263},[2424],{"type":46,"value":285},{"type":40,"tag":256,"props":2426,"children":2427},{"style":670},[2428],{"type":46,"value":2374},{"type":40,"tag":256,"props":2430,"children":2431},{"style":263},[2432],{"type":46,"value":2300},{"type":40,"tag":256,"props":2434,"children":2435},{"class":258,"line":370},[2436],{"type":40,"tag":256,"props":2437,"children":2438},{"emptyLinePlaceholder":661},[2439],{"type":46,"value":664},{"type":40,"tag":256,"props":2441,"children":2442},{"class":258,"line":395},[2443,2447,2452,2456,2460,2465,2469,2473,2478,2482,2486],{"type":40,"tag":256,"props":2444,"children":2445},{"style":278},[2446],{"type":46,"value":2315},{"type":40,"tag":256,"props":2448,"children":2449},{"style":670},[2450],{"type":46,"value":2451}," res ",{"type":40,"tag":256,"props":2453,"children":2454},{"style":263},[2455],{"type":46,"value":678},{"type":40,"tag":256,"props":2457,"children":2458},{"style":1207},[2459],{"type":46,"value":2329},{"type":40,"tag":256,"props":2461,"children":2462},{"style":642},[2463],{"type":46,"value":2464}," fetch",{"type":40,"tag":256,"props":2466,"children":2467},{"style":670},[2468],{"type":46,"value":2357},{"type":40,"tag":256,"props":2470,"children":2471},{"style":263},[2472],{"type":46,"value":285},{"type":40,"tag":256,"props":2474,"children":2475},{"style":298},[2476],{"type":46,"value":2477},"https:\u002F\u002Fopenrouter.ai\u002Fapi\u002Fv1\u002Faudio\u002Ftranscriptions",{"type":40,"tag":256,"props":2479,"children":2480},{"style":263},[2481],{"type":46,"value":285},{"type":40,"tag":256,"props":2483,"children":2484},{"style":263},[2485],{"type":46,"value":2075},{"type":40,"tag":256,"props":2487,"children":2488},{"style":263},[2489],{"type":46,"value":335},{"type":40,"tag":256,"props":2491,"children":2492},{"class":258,"line":404},[2493,2498,2502,2506,2511,2515],{"type":40,"tag":256,"props":2494,"children":2495},{"style":2191},[2496],{"type":46,"value":2497},"  method",{"type":40,"tag":256,"props":2499,"children":2500},{"style":263},[2501],{"type":46,"value":290},{"type":40,"tag":256,"props":2503,"children":2504},{"style":263},[2505],{"type":46,"value":295},{"type":40,"tag":256,"props":2507,"children":2508},{"style":298},[2509],{"type":46,"value":2510},"POST",{"type":40,"tag":256,"props":2512,"children":2513},{"style":263},[2514],{"type":46,"value":285},{"type":40,"tag":256,"props":2516,"children":2517},{"style":263},[2518],{"type":46,"value":310},{"type":40,"tag":256,"props":2520,"children":2521},{"class":258,"line":599},[2522,2527,2531],{"type":40,"tag":256,"props":2523,"children":2524},{"style":2191},[2525],{"type":46,"value":2526},"  headers",{"type":40,"tag":256,"props":2528,"children":2529},{"style":263},[2530],{"type":46,"value":290},{"type":40,"tag":256,"props":2532,"children":2533},{"style":263},[2534],{"type":46,"value":335},{"type":40,"tag":256,"props":2536,"children":2537},{"class":258,"line":607},[2538,2543,2547,2552,2557,2562,2567,2571,2576,2580,2584,2589],{"type":40,"tag":256,"props":2539,"children":2540},{"style":2191},[2541],{"type":46,"value":2542},"    Authorization",{"type":40,"tag":256,"props":2544,"children":2545},{"style":263},[2546],{"type":46,"value":290},{"type":40,"tag":256,"props":2548,"children":2549},{"style":263},[2550],{"type":46,"value":2551}," `",{"type":40,"tag":256,"props":2553,"children":2554},{"style":298},[2555],{"type":46,"value":2556},"Bearer ",{"type":40,"tag":256,"props":2558,"children":2559},{"style":263},[2560],{"type":46,"value":2561},"${",{"type":40,"tag":256,"props":2563,"children":2564},{"style":670},[2565],{"type":46,"value":2566},"process",{"type":40,"tag":256,"props":2568,"children":2569},{"style":263},[2570],{"type":46,"value":1627},{"type":40,"tag":256,"props":2572,"children":2573},{"style":670},[2574],{"type":46,"value":2575},"env",{"type":40,"tag":256,"props":2577,"children":2578},{"style":263},[2579],{"type":46,"value":1627},{"type":40,"tag":256,"props":2581,"children":2582},{"style":670},[2583],{"type":46,"value":76},{"type":40,"tag":256,"props":2585,"children":2586},{"style":263},[2587],{"type":46,"value":2588},"}`",{"type":40,"tag":256,"props":2590,"children":2591},{"style":263},[2592],{"type":46,"value":310},{"type":40,"tag":256,"props":2594,"children":2595},{"class":258,"line":799},[2596,2600,2605,2609,2613,2617,2622,2626],{"type":40,"tag":256,"props":2597,"children":2598},{"style":263},[2599],{"type":46,"value":344},{"type":40,"tag":256,"props":2601,"children":2602},{"style":2191},[2603],{"type":46,"value":2604},"Content-Type",{"type":40,"tag":256,"props":2606,"children":2607},{"style":263},[2608],{"type":46,"value":285},{"type":40,"tag":256,"props":2610,"children":2611},{"style":263},[2612],{"type":46,"value":290},{"type":40,"tag":256,"props":2614,"children":2615},{"style":263},[2616],{"type":46,"value":295},{"type":40,"tag":256,"props":2618,"children":2619},{"style":298},[2620],{"type":46,"value":2621},"application\u002Fjson",{"type":40,"tag":256,"props":2623,"children":2624},{"style":263},[2625],{"type":46,"value":285},{"type":40,"tag":256,"props":2627,"children":2628},{"style":263},[2629],{"type":46,"value":310},{"type":40,"tag":256,"props":2631,"children":2632},{"class":258,"line":869},[2633],{"type":40,"tag":256,"props":2634,"children":2635},{"style":263},[2636],{"type":46,"value":2637},"  },\n",{"type":40,"tag":256,"props":2639,"children":2640},{"class":258,"line":877},[2641,2646,2650,2655,2659,2664,2668],{"type":40,"tag":256,"props":2642,"children":2643},{"style":2191},[2644],{"type":46,"value":2645},"  body",{"type":40,"tag":256,"props":2647,"children":2648},{"style":263},[2649],{"type":46,"value":290},{"type":40,"tag":256,"props":2651,"children":2652},{"style":670},[2653],{"type":46,"value":2654}," JSON",{"type":40,"tag":256,"props":2656,"children":2657},{"style":263},[2658],{"type":46,"value":1627},{"type":40,"tag":256,"props":2660,"children":2661},{"style":642},[2662],{"type":46,"value":2663},"stringify",{"type":40,"tag":256,"props":2665,"children":2666},{"style":670},[2667],{"type":46,"value":2357},{"type":40,"tag":256,"props":2669,"children":2670},{"style":263},[2671],{"type":46,"value":266},{"type":40,"tag":256,"props":2673,"children":2674},{"class":258,"line":963},[2675,2680,2684,2688,2692,2696],{"type":40,"tag":256,"props":2676,"children":2677},{"style":2191},[2678],{"type":46,"value":2679},"    model",{"type":40,"tag":256,"props":2681,"children":2682},{"style":263},[2683],{"type":46,"value":290},{"type":40,"tag":256,"props":2685,"children":2686},{"style":263},[2687],{"type":46,"value":295},{"type":40,"tag":256,"props":2689,"children":2690},{"style":298},[2691],{"type":46,"value":241},{"type":40,"tag":256,"props":2693,"children":2694},{"style":263},[2695],{"type":46,"value":285},{"type":40,"tag":256,"props":2697,"children":2698},{"style":263},[2699],{"type":46,"value":310},{"type":40,"tag":256,"props":2701,"children":2702},{"class":258,"line":999},[2703,2708,2712,2716,2720,2724,2729,2733,2737,2741,2745],{"type":40,"tag":256,"props":2704,"children":2705},{"style":2191},[2706],{"type":46,"value":2707},"    input_audio",{"type":40,"tag":256,"props":2709,"children":2710},{"style":263},[2711],{"type":46,"value":290},{"type":40,"tag":256,"props":2713,"children":2714},{"style":263},[2715],{"type":46,"value":2040},{"type":40,"tag":256,"props":2717,"children":2718},{"style":670},[2719],{"type":46,"value":920},{"type":40,"tag":256,"props":2721,"children":2722},{"style":263},[2723],{"type":46,"value":2075},{"type":40,"tag":256,"props":2725,"children":2726},{"style":2191},[2727],{"type":46,"value":2728}," format",{"type":40,"tag":256,"props":2730,"children":2731},{"style":263},[2732],{"type":46,"value":290},{"type":40,"tag":256,"props":2734,"children":2735},{"style":263},[2736],{"type":46,"value":295},{"type":40,"tag":256,"props":2738,"children":2739},{"style":298},[2740],{"type":46,"value":712},{"type":40,"tag":256,"props":2742,"children":2743},{"style":263},[2744],{"type":46,"value":285},{"type":40,"tag":256,"props":2746,"children":2747},{"style":263},[2748],{"type":46,"value":2108},{"type":40,"tag":256,"props":2750,"children":2751},{"class":258,"line":1007},[2752,2757,2761],{"type":40,"tag":256,"props":2753,"children":2754},{"style":263},[2755],{"type":46,"value":2756},"  }",{"type":40,"tag":256,"props":2758,"children":2759},{"style":670},[2760],{"type":46,"value":2374},{"type":40,"tag":256,"props":2762,"children":2763},{"style":263},[2764],{"type":46,"value":310},{"type":40,"tag":256,"props":2766,"children":2767},{"class":258,"line":1016},[2768,2773,2777],{"type":40,"tag":256,"props":2769,"children":2770},{"style":263},[2771],{"type":46,"value":2772},"}",{"type":40,"tag":256,"props":2774,"children":2775},{"style":670},[2776],{"type":46,"value":2374},{"type":40,"tag":256,"props":2778,"children":2779},{"style":263},[2780],{"type":46,"value":2300},{"type":40,"tag":256,"props":2782,"children":2783},{"class":258,"line":1057},[2784],{"type":40,"tag":256,"props":2785,"children":2786},{"emptyLinePlaceholder":661},[2787],{"type":46,"value":664},{"type":40,"tag":256,"props":2789,"children":2790},{"class":258,"line":1088},[2791,2795,2800,2805,2810,2814,2819],{"type":40,"tag":256,"props":2792,"children":2793},{"style":1207},[2794],{"type":46,"value":1210},{"type":40,"tag":256,"props":2796,"children":2797},{"style":670},[2798],{"type":46,"value":2799}," (",{"type":40,"tag":256,"props":2801,"children":2802},{"style":263},[2803],{"type":46,"value":2804},"!",{"type":40,"tag":256,"props":2806,"children":2807},{"style":670},[2808],{"type":46,"value":2809},"res",{"type":40,"tag":256,"props":2811,"children":2812},{"style":263},[2813],{"type":46,"value":1627},{"type":40,"tag":256,"props":2815,"children":2816},{"style":670},[2817],{"type":46,"value":2818},"ok) ",{"type":40,"tag":256,"props":2820,"children":2821},{"style":263},[2822],{"type":46,"value":266},{"type":40,"tag":256,"props":2824,"children":2825},{"class":258,"line":1113},[2826,2831,2836,2841,2845,2850,2854,2858,2862,2866,2871,2875,2880,2884,2889,2894,2898,2902,2907,2911,2915],{"type":40,"tag":256,"props":2827,"children":2828},{"style":1207},[2829],{"type":46,"value":2830},"  throw",{"type":40,"tag":256,"props":2832,"children":2833},{"style":263},[2834],{"type":46,"value":2835}," new",{"type":40,"tag":256,"props":2837,"children":2838},{"style":642},[2839],{"type":46,"value":2840}," Error",{"type":40,"tag":256,"props":2842,"children":2843},{"style":2191},[2844],{"type":46,"value":2357},{"type":40,"tag":256,"props":2846,"children":2847},{"style":263},[2848],{"type":46,"value":2849},"`",{"type":40,"tag":256,"props":2851,"children":2852},{"style":298},[2853],{"type":46,"value":1274},{"type":40,"tag":256,"props":2855,"children":2856},{"style":263},[2857],{"type":46,"value":2561},{"type":40,"tag":256,"props":2859,"children":2860},{"style":670},[2861],{"type":46,"value":2809},{"type":40,"tag":256,"props":2863,"children":2864},{"style":263},[2865],{"type":46,"value":1627},{"type":40,"tag":256,"props":2867,"children":2868},{"style":670},[2869],{"type":46,"value":2870},"status",{"type":40,"tag":256,"props":2872,"children":2873},{"style":263},[2874],{"type":46,"value":2772},{"type":40,"tag":256,"props":2876,"children":2877},{"style":298},[2878],{"type":46,"value":2879},"): ",{"type":40,"tag":256,"props":2881,"children":2882},{"style":263},[2883],{"type":46,"value":2561},{"type":40,"tag":256,"props":2885,"children":2886},{"style":1207},[2887],{"type":46,"value":2888},"await",{"type":40,"tag":256,"props":2890,"children":2891},{"style":670},[2892],{"type":46,"value":2893}," res",{"type":40,"tag":256,"props":2895,"children":2896},{"style":263},[2897],{"type":46,"value":1627},{"type":40,"tag":256,"props":2899,"children":2900},{"style":642},[2901],{"type":46,"value":46},{"type":40,"tag":256,"props":2903,"children":2904},{"style":670},[2905],{"type":46,"value":2906},"()",{"type":40,"tag":256,"props":2908,"children":2909},{"style":263},[2910],{"type":46,"value":2588},{"type":40,"tag":256,"props":2912,"children":2913},{"style":2191},[2914],{"type":46,"value":2374},{"type":40,"tag":256,"props":2916,"children":2917},{"style":263},[2918],{"type":46,"value":2300},{"type":40,"tag":256,"props":2920,"children":2921},{"class":258,"line":1139},[2922],{"type":40,"tag":256,"props":2923,"children":2924},{"style":263},[2925],{"type":46,"value":410},{"type":40,"tag":256,"props":2927,"children":2928},{"class":258,"line":1165},[2929],{"type":40,"tag":256,"props":2930,"children":2931},{"emptyLinePlaceholder":661},[2932],{"type":46,"value":664},{"type":40,"tag":256,"props":2934,"children":2935},{"class":258,"line":1195},[2936,2940,2945,2949,2953,2957,2961,2965,2969],{"type":40,"tag":256,"props":2937,"children":2938},{"style":278},[2939],{"type":46,"value":2315},{"type":40,"tag":256,"props":2941,"children":2942},{"style":670},[2943],{"type":46,"value":2944}," result ",{"type":40,"tag":256,"props":2946,"children":2947},{"style":263},[2948],{"type":46,"value":678},{"type":40,"tag":256,"props":2950,"children":2951},{"style":1207},[2952],{"type":46,"value":2329},{"type":40,"tag":256,"props":2954,"children":2955},{"style":670},[2956],{"type":46,"value":2893},{"type":40,"tag":256,"props":2958,"children":2959},{"style":263},[2960],{"type":46,"value":1627},{"type":40,"tag":256,"props":2962,"children":2963},{"style":642},[2964],{"type":46,"value":249},{"type":40,"tag":256,"props":2966,"children":2967},{"style":670},[2968],{"type":46,"value":2906},{"type":40,"tag":256,"props":2970,"children":2971},{"style":263},[2972],{"type":46,"value":2300},{"type":40,"tag":256,"props":2974,"children":2975},{"class":258,"line":1203},[2976,2981,2985,2990,2995,2999,3004],{"type":40,"tag":256,"props":2977,"children":2978},{"style":670},[2979],{"type":46,"value":2980},"console",{"type":40,"tag":256,"props":2982,"children":2983},{"style":263},[2984],{"type":46,"value":1627},{"type":40,"tag":256,"props":2986,"children":2987},{"style":642},[2988],{"type":46,"value":2989},"log",{"type":40,"tag":256,"props":2991,"children":2992},{"style":670},[2993],{"type":46,"value":2994},"(result",{"type":40,"tag":256,"props":2996,"children":2997},{"style":263},[2998],{"type":46,"value":1627},{"type":40,"tag":256,"props":3000,"children":3001},{"style":670},[3002],{"type":46,"value":3003},"text)",{"type":40,"tag":256,"props":3005,"children":3006},{"style":263},[3007],{"type":46,"value":2300},{"type":40,"tag":156,"props":3009,"children":3011},{"id":3010},"python-requests",[3012],{"type":46,"value":3013},"Python (requests)",{"type":40,"tag":245,"props":3015,"children":3019},{"className":3016,"code":3017,"language":3018,"meta":250,"style":250},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import base64\nimport os\nimport requests\n\nwith open(\"audio.wav\", \"rb\") as f:\n    data = base64.b64encode(f.read()).decode(\"utf-8\")\n\nres = requests.post(\n    \"https:\u002F\u002Fopenrouter.ai\u002Fapi\u002Fv1\u002Faudio\u002Ftranscriptions\",\n    headers={\n        \"Authorization\": f\"Bearer {os.environ['OPENROUTER_API_KEY']}\",\n        \"Content-Type\": \"application\u002Fjson\",\n    },\n    json={\n        \"model\": \"google\u002Fchirp-3\",\n        \"input_audio\": {\"data\": data, \"format\": \"wav\"},\n    },\n)\n\nif not res.ok:\n    raise RuntimeError(f\"STT failed (HTTP {res.status_code}): {res.text}\")\n\nprint(res.json()[\"text\"])\n","python",[3020],{"type":40,"tag":55,"props":3021,"children":3022},{"__ignoreMap":250},[3023,3031,3039,3047,3054,3062,3070,3077,3085,3093,3101,3109,3117,3125,3133,3141,3149,3156,3163,3170,3178,3186,3193],{"type":40,"tag":256,"props":3024,"children":3025},{"class":258,"line":259},[3026],{"type":40,"tag":256,"props":3027,"children":3028},{},[3029],{"type":46,"value":3030},"import base64\n",{"type":40,"tag":256,"props":3032,"children":3033},{"class":258,"line":269},[3034],{"type":40,"tag":256,"props":3035,"children":3036},{},[3037],{"type":46,"value":3038},"import os\n",{"type":40,"tag":256,"props":3040,"children":3041},{"class":258,"line":313},[3042],{"type":40,"tag":256,"props":3043,"children":3044},{},[3045],{"type":46,"value":3046},"import requests\n",{"type":40,"tag":256,"props":3048,"children":3049},{"class":258,"line":338},[3050],{"type":40,"tag":256,"props":3051,"children":3052},{"emptyLinePlaceholder":661},[3053],{"type":46,"value":664},{"type":40,"tag":256,"props":3055,"children":3056},{"class":258,"line":370},[3057],{"type":40,"tag":256,"props":3058,"children":3059},{},[3060],{"type":46,"value":3061},"with open(\"audio.wav\", \"rb\") as f:\n",{"type":40,"tag":256,"props":3063,"children":3064},{"class":258,"line":395},[3065],{"type":40,"tag":256,"props":3066,"children":3067},{},[3068],{"type":46,"value":3069},"    data = base64.b64encode(f.read()).decode(\"utf-8\")\n",{"type":40,"tag":256,"props":3071,"children":3072},{"class":258,"line":404},[3073],{"type":40,"tag":256,"props":3074,"children":3075},{"emptyLinePlaceholder":661},[3076],{"type":46,"value":664},{"type":40,"tag":256,"props":3078,"children":3079},{"class":258,"line":599},[3080],{"type":40,"tag":256,"props":3081,"children":3082},{},[3083],{"type":46,"value":3084},"res = requests.post(\n",{"type":40,"tag":256,"props":3086,"children":3087},{"class":258,"line":607},[3088],{"type":40,"tag":256,"props":3089,"children":3090},{},[3091],{"type":46,"value":3092},"    \"https:\u002F\u002Fopenrouter.ai\u002Fapi\u002Fv1\u002Faudio\u002Ftranscriptions\",\n",{"type":40,"tag":256,"props":3094,"children":3095},{"class":258,"line":799},[3096],{"type":40,"tag":256,"props":3097,"children":3098},{},[3099],{"type":46,"value":3100},"    headers={\n",{"type":40,"tag":256,"props":3102,"children":3103},{"class":258,"line":869},[3104],{"type":40,"tag":256,"props":3105,"children":3106},{},[3107],{"type":46,"value":3108},"        \"Authorization\": f\"Bearer {os.environ['OPENROUTER_API_KEY']}\",\n",{"type":40,"tag":256,"props":3110,"children":3111},{"class":258,"line":877},[3112],{"type":40,"tag":256,"props":3113,"children":3114},{},[3115],{"type":46,"value":3116},"        \"Content-Type\": \"application\u002Fjson\",\n",{"type":40,"tag":256,"props":3118,"children":3119},{"class":258,"line":963},[3120],{"type":40,"tag":256,"props":3121,"children":3122},{},[3123],{"type":46,"value":3124},"    },\n",{"type":40,"tag":256,"props":3126,"children":3127},{"class":258,"line":999},[3128],{"type":40,"tag":256,"props":3129,"children":3130},{},[3131],{"type":46,"value":3132},"    json={\n",{"type":40,"tag":256,"props":3134,"children":3135},{"class":258,"line":1007},[3136],{"type":40,"tag":256,"props":3137,"children":3138},{},[3139],{"type":46,"value":3140},"        \"model\": \"google\u002Fchirp-3\",\n",{"type":40,"tag":256,"props":3142,"children":3143},{"class":258,"line":1016},[3144],{"type":40,"tag":256,"props":3145,"children":3146},{},[3147],{"type":46,"value":3148},"        \"input_audio\": {\"data\": data, \"format\": \"wav\"},\n",{"type":40,"tag":256,"props":3150,"children":3151},{"class":258,"line":1057},[3152],{"type":40,"tag":256,"props":3153,"children":3154},{},[3155],{"type":46,"value":3124},{"type":40,"tag":256,"props":3157,"children":3158},{"class":258,"line":1088},[3159],{"type":40,"tag":256,"props":3160,"children":3161},{},[3162],{"type":46,"value":769},{"type":40,"tag":256,"props":3164,"children":3165},{"class":258,"line":1113},[3166],{"type":40,"tag":256,"props":3167,"children":3168},{"emptyLinePlaceholder":661},[3169],{"type":46,"value":664},{"type":40,"tag":256,"props":3171,"children":3172},{"class":258,"line":1139},[3173],{"type":40,"tag":256,"props":3174,"children":3175},{},[3176],{"type":46,"value":3177},"if not res.ok:\n",{"type":40,"tag":256,"props":3179,"children":3180},{"class":258,"line":1165},[3181],{"type":40,"tag":256,"props":3182,"children":3183},{},[3184],{"type":46,"value":3185},"    raise RuntimeError(f\"STT failed (HTTP {res.status_code}): {res.text}\")\n",{"type":40,"tag":256,"props":3187,"children":3188},{"class":258,"line":1195},[3189],{"type":40,"tag":256,"props":3190,"children":3191},{"emptyLinePlaceholder":661},[3192],{"type":46,"value":664},{"type":40,"tag":256,"props":3194,"children":3195},{"class":258,"line":1203},[3196],{"type":40,"tag":256,"props":3197,"children":3198},{},[3199],{"type":46,"value":3200},"print(res.json()[\"text\"])\n",{"type":40,"tag":156,"props":3202,"children":3204},{"id":3203},"troubleshooting",[3205],{"type":46,"value":3206},"Troubleshooting",{"type":40,"tag":49,"props":3208,"children":3209},{},[3210,3220,3222,3227,3229,3235],{"type":40,"tag":93,"props":3211,"children":3212},{},[3213,3215],{"type":46,"value":3214},"Garbled or empty ",{"type":40,"tag":55,"props":3216,"children":3218},{"className":3217},[],[3219],{"type":46,"value":46},{"type":46,"value":3221}," — the ",{"type":40,"tag":55,"props":3223,"children":3225},{"className":3224},[],[3226],{"type":46,"value":1922},{"type":46,"value":3228}," field probably doesn't match the actual bytes, or the audio is silent\u002Fcorrupted. Confirm with ",{"type":40,"tag":55,"props":3230,"children":3232},{"className":3231},[],[3233],{"type":46,"value":3234},"ffprobe audio.wav",{"type":46,"value":1627},{"type":40,"tag":49,"props":3237,"children":3238},{},[3239,3252,3254,3259,3261,3267,3269,3275],{"type":40,"tag":93,"props":3240,"children":3241},{},[3242,3244,3250],{"type":46,"value":3243},"400 with ",{"type":40,"tag":55,"props":3245,"children":3247},{"className":3246},[],[3248],{"type":46,"value":3249},"\"Invalid base64\"",{"type":46,"value":3251}," or silent failure",{"type":46,"value":3253}," — ",{"type":40,"tag":55,"props":3255,"children":3257},{"className":3256},[],[3258],{"type":46,"value":2049},{"type":46,"value":3260}," must be just base64, not a data URI (",{"type":40,"tag":55,"props":3262,"children":3264},{"className":3263},[],[3265],{"type":46,"value":3266},"data:audio\u002Fwav;base64,...",{"type":46,"value":3268},"). Strip the prefix if you copied it from a browser ",{"type":40,"tag":55,"props":3270,"children":3272},{"className":3271},[],[3273],{"type":46,"value":3274},"FileReader",{"type":46,"value":1627},{"type":40,"tag":49,"props":3277,"children":3278},{},[3279,3290,3292,3298,3300,3306,3308,3313,3315,3320],{"type":40,"tag":93,"props":3280,"children":3281},{},[3282,3284],{"type":46,"value":3283},"400 with a ",{"type":40,"tag":55,"props":3285,"children":3287},{"className":3286},[],[3288],{"type":46,"value":3289},"ZodError",{"type":46,"value":3291}," — a required field is missing or the wrong type. The body looks like ",{"type":40,"tag":55,"props":3293,"children":3295},{"className":3294},[],[3296],{"type":46,"value":3297},"{\"success\":false,\"error\":{\"name\":\"ZodError\",\"message\":\"[...]\"}}",{"type":46,"value":3299}," — the nested ",{"type":40,"tag":55,"props":3301,"children":3303},{"className":3302},[],[3304],{"type":46,"value":3305},"message",{"type":46,"value":3307}," JSON string names the bad path (commonly ",{"type":40,"tag":55,"props":3309,"children":3311},{"className":3310},[],[3312],{"type":46,"value":1639},{"type":46,"value":3314}," or ",{"type":40,"tag":55,"props":3316,"children":3318},{"className":3317},[],[3319],{"type":46,"value":1675},{"type":46,"value":1911},{"type":40,"tag":49,"props":3322,"children":3323},{},[3324,3329],{"type":40,"tag":93,"props":3325,"children":3326},{},[3327],{"type":46,"value":3328},"413 \u002F request too large",{"type":46,"value":3330}," — base64 inflates bytes by ~33%, so a large raw file becomes an even larger JSON payload. Use a smaller source file (compressed format, lower sample rate, or trimmed clip).",{"type":40,"tag":49,"props":3332,"children":3333},{},[3334,3339,3341,3346,3347,3352,3354,3360],{"type":40,"tag":93,"props":3335,"children":3336},{},[3337],{"type":46,"value":3338},"Model not found",{"type":46,"value":3340}," — use the full slug from ",{"type":40,"tag":55,"props":3342,"children":3344},{"className":3343},[],[3345],{"type":46,"value":1625},{"type":46,"value":2799},{"type":40,"tag":55,"props":3348,"children":3350},{"className":3349},[],[3351],{"type":46,"value":241},{"type":46,"value":3353},", not ",{"type":40,"tag":55,"props":3355,"children":3357},{"className":3356},[],[3358],{"type":46,"value":3359},"chirp-3",{"type":46,"value":1911},{"type":40,"tag":156,"props":3362,"children":3364},{"id":3363},"references",[3365],{"type":46,"value":3366},"References",{"type":40,"tag":168,"props":3368,"children":3369},{},[3370,3380],{"type":40,"tag":172,"props":3371,"children":3372},{},[3373],{"type":40,"tag":80,"props":3374,"children":3377},{"href":3375,"rel":3376},"https:\u002F\u002Fopenrouter.ai\u002Fdocs\u002Fguides\u002Foverview\u002Fmultimodal\u002Fstt",[84],[3378],{"type":46,"value":3379},"STT guide",{"type":40,"tag":172,"props":3381,"children":3382},{},[3383],{"type":40,"tag":80,"props":3384,"children":3387},{"href":3385,"rel":3386},"https:\u002F\u002Fopenrouter.ai\u002Fmodels?output_modalities=transcription",[84],[3388],{"type":46,"value":3389},"Models page — filter to transcription output",{"type":40,"tag":3391,"props":3392,"children":3393},"style",{},[3394],{"type":46,"value":3395},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":3397,"total":1057},[3398,3414,3424,3440,3454,3465,3474,3486,3498,3507,3518,3527],{"slug":3399,"name":3399,"fn":3400,"description":3401,"org":3402,"tags":3403,"stars":24,"repoUrl":25,"updatedAt":3413},"create-agent-tui","scaffold terminal agents with OpenRouter","Scaffolds a complete agent TUI in TypeScript using @openrouter\u002Fagent — like create-react-app for terminal agents. Generates a customizable terminal interface with three input styles, four tool display modes, ASCII banners, streaming output, session persistence, and configurable tools. Use when building an agent, creating a TUI, scaffolding an agent project, or building a coding assistant.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3404,3407,3410,3411],{"name":3405,"slug":3406,"type":16},"Agents","agents",{"name":3408,"slug":3409,"type":16},"CLI","cli",{"name":9,"slug":8,"type":16},{"name":3412,"slug":2260,"type":16},"TypeScript","2026-07-14T05:38:18.849741",{"slug":3415,"name":3415,"fn":3416,"description":3417,"org":3418,"tags":3419,"stars":24,"repoUrl":25,"updatedAt":3423},"create-headless-agent","scaffold headless agents with OpenRouter","Scaffolds a headless agent in TypeScript using @openrouter\u002Fagent and Bun — for CLI tools, API servers, queue workers, and pipelines. No terminal UI. Use when building a headless agent, programmatic agent, CLI tool that uses AI, batch agent, pipeline agent, API agent, agent without a UI, or agent service.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3420,3421,3422],{"name":3405,"slug":3406,"type":16},{"name":3408,"slug":3409,"type":16},{"name":3412,"slug":2260,"type":16},"2026-07-14T05:38:30.178029",{"slug":3425,"name":3425,"fn":3426,"description":3427,"org":3428,"tags":3429,"stars":24,"repoUrl":25,"updatedAt":3439},"open-responses","implement Open Responses-compliant APIs","This skill should be used when implementing, consuming, or debugging an Open Responses-compliant API — the open standard for multi-provider LLM interoperability. Covers protocol, items, state machines, streaming events, tools, the agentic loop pattern, and extensions. Triggers on: Open Responses, open-responses, \u002Fv1\u002Fresponses endpoint, multi-provider LLM API, Open Responses compliance.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3430,3433,3436],{"name":3431,"slug":3432,"type":16},"API Development","api-development",{"name":3434,"slug":3435,"type":16},"Interoperability","interoperability",{"name":3437,"slug":3438,"type":16},"LLM","llm","2026-07-14T05:38:13.153467",{"slug":3441,"name":3441,"fn":3442,"description":3443,"org":3444,"tags":3445,"stars":24,"repoUrl":25,"updatedAt":3453},"openrouter-agent-migration","migrate OpenRouter SDK to agent patterns","Migration guide from @openrouter\u002Fsdk to @openrouter\u002Fagent for callModel, tool(), stop conditions, and agent features. This skill should be used when code imports callModel, tool(), or stop conditions from @openrouter\u002Fsdk and needs to migrate to @openrouter\u002Fagent.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3446,3449,3452],{"name":3447,"slug":3448,"type":16},"Migration","migration",{"name":3450,"slug":3451,"type":16},"SDK","sdk",{"name":3412,"slug":2260,"type":16},"2026-07-14T05:38:28.914981",{"slug":3455,"name":3455,"fn":3456,"description":3457,"org":3458,"tags":3459,"stars":24,"repoUrl":25,"updatedAt":3464},"openrouter-analytics","analyze OpenRouter usage and spend","Answer natural-language questions about a user's OpenRouter usage data — spend, request volume, model breakdown, latency, token usage, and cost optimization. Use when the user asks about their API usage, billing, costs, top models, traffic patterns, or wants to optimize their OpenRouter spend.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3460,3463],{"name":3461,"slug":3462,"type":16},"Analytics","analytics",{"name":9,"slug":8,"type":16},"2026-07-30T05:30:15.098344",{"slug":3466,"name":3466,"fn":3467,"description":3468,"org":3469,"tags":3470,"stars":24,"repoUrl":25,"updatedAt":3473},"openrouter-analytics-query","execute analytics queries against OpenRouter","Construct and execute analytics queries against the OpenRouter API — full parameter reference for metrics, dimensions, filters, time ranges, ordering, and pagination. Use when building or debugging an analytics query, understanding the request\u002Fresponse shape, or handling query errors.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3471,3472],{"name":3461,"slug":3462,"type":16},{"name":3431,"slug":3432,"type":16},"2026-07-14T05:38:26.402047",{"slug":3475,"name":3475,"fn":3476,"description":3477,"org":3478,"tags":3479,"stars":24,"repoUrl":25,"updatedAt":3485},"openrouter-analytics-schema","query OpenRouter analytics schema","Discover the OpenRouter analytics schema — available metrics, dimensions, filter operators, and granularities. Use when you need to know what analytics data is queryable, what dimensions you can break down by, or how to map a user's question to the right metric\u002Fdimension combination.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3480,3481,3482],{"name":3461,"slug":3462,"type":16},{"name":3437,"slug":3438,"type":16},{"name":3483,"slug":3484,"type":16},"Reporting","reporting","2026-07-14T05:38:32.721796",{"slug":3487,"name":3487,"fn":3488,"description":3489,"org":3490,"tags":3491,"stars":24,"repoUrl":25,"updatedAt":3497},"openrouter-benchmarks","query OpenRouter model benchmarks","Query OpenRouter's Benchmarks API for model benchmark rankings and scores. Use when the user asks for benchmark-backed model selection, model rankings by coding\u002Fintelligence\u002Fagentic ability, Artificial Analysis or Design Arena ELO\u002Fwin-rate results, benchmark citations, or wants to call GET \u002Fapi\u002Fv1\u002Fbenchmarks. Also use alongside openrouter-models when the user asks what model should power an app, product, workflow, or use case and benchmark evidence could inform or rule out part of the recommendation, including creative writing, editing, coding, design, agentic, or intelligence-heavy apps. Do not use for OpenRouter usage analytics, billing\u002Fspend analysis, generation metadata, provider uptime\u002Flatency, generic model pricing\u002Fcapability lookup without any selection or benchmark-relevance decision, or creating an evaluation suite for a local app.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3492,3493,3496],{"name":3461,"slug":3462,"type":16},{"name":3494,"slug":3495,"type":16},"Benchmarking","benchmarking",{"name":3437,"slug":3438,"type":16},"2026-07-14T05:38:27.658475",{"slug":3499,"name":3499,"fn":3500,"description":3501,"org":3502,"tags":3503,"stars":24,"repoUrl":25,"updatedAt":3506},"openrouter-generations","retrieve metadata for OpenRouter generations","Retrieve detailed metadata and stored content for individual OpenRouter generations. Use when the user wants to inspect a specific request — its cost, latency, token usage, provider routing, or the actual prompt\u002Fcompletion text — or is debugging a failed or unexpected generation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3504,3505],{"name":3437,"slug":3438,"type":16},{"name":9,"slug":8,"type":16},"2026-07-14T05:38:25.132801",{"slug":3508,"name":3508,"fn":3509,"description":3510,"org":3511,"tags":3512,"stars":24,"repoUrl":25,"updatedAt":3517},"openrouter-images","generate images with OpenRouter","Generate images from text prompts and edit existing images using OpenRouter's dedicated Image API. Use when the user asks to create, generate, or make an image, picture, or illustration from a description, or wants to edit, modify, transform, or alter an existing image with a text prompt.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3513,3516],{"name":3514,"slug":3515,"type":16},"Image Generation","image-generation",{"name":9,"slug":8,"type":16},"2026-07-14T05:38:21.393411",{"slug":3519,"name":3519,"fn":3520,"description":3521,"org":3522,"tags":3523,"stars":24,"repoUrl":25,"updatedAt":3526},"openrouter-models","query OpenRouter model metadata and pricing","Query OpenRouter for available AI models, pricing, capabilities, throughput, and provider performance. Use when the user asks about available OpenRouter models, model pricing, model context lengths, model capabilities, provider latency or uptime, throughput limits, supported parameters, wants to search\u002Ffilter\u002Fcompare models, or find the fastest provider for a model.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3524,3525],{"name":3437,"slug":3438,"type":16},{"name":9,"slug":8,"type":16},"2026-07-14T05:38:22.650307",{"slug":3528,"name":3528,"fn":3529,"description":3530,"org":3531,"tags":3532,"stars":24,"repoUrl":25,"updatedAt":3540},"openrouter-oauth","implement OpenRouter OAuth authentication","Implement \"Sign In with OpenRouter\" using OAuth PKCE — framework-agnostic, no SDK or client registration required. Use when the user wants to add OpenRouter login, authentication, sign-in buttons, OAuth, or AI model inference API keys for browser-based apps. No client registration, no backend, no secrets required.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3533,3536,3539],{"name":3534,"slug":3535,"type":16},"Auth","auth",{"name":3537,"slug":3538,"type":16},"OAuth","oauth",{"name":9,"slug":8,"type":16},"2026-07-14T05:38:20.116308",{"items":3542,"total":1057},[3543,3550,3556,3562,3568,3573,3578],{"slug":3399,"name":3399,"fn":3400,"description":3401,"org":3544,"tags":3545,"stars":24,"repoUrl":25,"updatedAt":3413},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3546,3547,3548,3549],{"name":3405,"slug":3406,"type":16},{"name":3408,"slug":3409,"type":16},{"name":9,"slug":8,"type":16},{"name":3412,"slug":2260,"type":16},{"slug":3415,"name":3415,"fn":3416,"description":3417,"org":3551,"tags":3552,"stars":24,"repoUrl":25,"updatedAt":3423},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3553,3554,3555],{"name":3405,"slug":3406,"type":16},{"name":3408,"slug":3409,"type":16},{"name":3412,"slug":2260,"type":16},{"slug":3425,"name":3425,"fn":3426,"description":3427,"org":3557,"tags":3558,"stars":24,"repoUrl":25,"updatedAt":3439},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3559,3560,3561],{"name":3431,"slug":3432,"type":16},{"name":3434,"slug":3435,"type":16},{"name":3437,"slug":3438,"type":16},{"slug":3441,"name":3441,"fn":3442,"description":3443,"org":3563,"tags":3564,"stars":24,"repoUrl":25,"updatedAt":3453},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3565,3566,3567],{"name":3447,"slug":3448,"type":16},{"name":3450,"slug":3451,"type":16},{"name":3412,"slug":2260,"type":16},{"slug":3455,"name":3455,"fn":3456,"description":3457,"org":3569,"tags":3570,"stars":24,"repoUrl":25,"updatedAt":3464},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3571,3572],{"name":3461,"slug":3462,"type":16},{"name":9,"slug":8,"type":16},{"slug":3466,"name":3466,"fn":3467,"description":3468,"org":3574,"tags":3575,"stars":24,"repoUrl":25,"updatedAt":3473},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3576,3577],{"name":3461,"slug":3462,"type":16},{"name":3431,"slug":3432,"type":16},{"slug":3475,"name":3475,"fn":3476,"description":3477,"org":3579,"tags":3580,"stars":24,"repoUrl":25,"updatedAt":3485},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3581,3582,3583],{"name":3461,"slug":3462,"type":16},{"name":3437,"slug":3438,"type":16},{"name":3483,"slug":3484,"type":16}]