Title: bl omni --audio always 400: sends audio_url, endpoint requires input_audio · Issue #54 · modelstudioai/cli · GitHub
Open Graph Title: bl omni --audio always 400: sends audio_url, endpoint requires input_audio · Issue #54 · modelstudioai/cli
X Title: bl omni --audio always 400: sends audio_url, endpoint requires input_audio · Issue #54 · modelstudioai/cli
Description: bl omni --audio always 400: sends audio_url, OpenAI-compatible endpoint requires input_audio Summary bl omni --audio
Open Graph Description: bl omni --audio always 400: sends audio_url, OpenAI-compatible endpoint requires input_audio Summary bl omni --audio
X Description: bl omni --audio always 400: sends audio_url, OpenAI-compatible endpoint requires input_audio Summary bl omni --audio <file> fails for every Qwen-Omni model with HTTP 400. The CLI builds the a...
Opengraph URL: https://github.com/modelstudioai/cli/issues/54
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"bl omni --audio always 400: sends audio_url, endpoint requires input_audio","articleBody":"## `bl omni --audio` always 400: sends `audio_url`, OpenAI-compatible endpoint requires `input_audio`\n\n### Summary\n`bl omni --audio \u003cfile\u003e` fails for **every** Qwen-Omni model with HTTP 400. The CLI builds the audio content part as type `audio_url`, but the DashScope OpenAI-compatible `/compatible-mode/v1/chat/completions` endpoint only accepts `input_audio` for audio. So audio transcription via the CLI is completely broken.\n\n### Environment\n- bailian-cli **1.3.0**\n- Windows 11, Node (npm global install)\n- Auth: api-key from `~/.bailian/config.json`\n\n### Repro\n```bash\nbl omni --model qwen3.5-omni-flash --audio ./clip.wav --text-only \\\n --system \"transcribe this audio verbatim\" --message \"transcribe this audio.\" --output json\n```\n\n### Actual\n```json\n{\n \"error\": {\n \"code\": 1,\n \"message\": \"Invalid value: audio_url. Supported values are: 'text','image_url','video_url' and 'video'.\",\n \"http_status\": 400,\n \"api_code\": \"invalid_request_error\"\n }\n}\n```\nReproduced identically on `qwen3.5-omni-flash`, `qwen3-omni-flash`, `qwen-omni-turbo`, `qwen2.5-omni-7b` — i.e. not model-specific, it's the request shape.\n\n### Root cause\nThe CLI almost certainly emits:\n```json\n{ \"type\": \"audio_url\", \"audio_url\": { \"url\": \"data:audio/wav;base64,...\" } }\n```\nThe OpenAI-compatible Qwen-Omni API instead expects the `input_audio` shape:\n```json\n{ \"type\": \"input_audio\", \"input_audio\": { \"data\": \"data:audio/wav;base64,...\", \"format\": \"wav\" } }\n```\n\n### Fix\nChange the audio content part builder in the `omni` command from `audio_url` -\u003e `input_audio`, with `{ data, format }` (format inferred from file extension: wav/mp3/opus/pcm). I verified the `input_audio` shape works against the same endpoint/key with a hand-rolled streaming request (text-only modality + `stream_options.include_usage`) across all four models above, so only the CLI's content-part construction needs changing.\n\nRef: https://help.aliyun.com/zh/model-studio/qwen-omni (OpenAI-compatible audio input uses `input_audio`).","author":{"url":"https://github.com/a2fapower","@type":"Person","name":"a2fapower"},"datePublished":"2026-06-12T07:49:28.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":1},"url":"https://github.com/54/cli/issues/54"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:321dc74c-556e-81b1-3e20-14a35e4974bd |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | 9A66:1A176D:1C7B57B:25C1C36:6A52D14D |
| html-safe-nonce | a9c44959cd467f60fb31b082d4f6c04c9960487a2e168bf1a347c5be04974b19 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI5QTY2OjFBMTc2RDoxQzdCNTdCOjI1QzFDMzY6NkE1MkQxNEQiLCJ2aXNpdG9yX2lkIjoiMjcyNzk5NDk2ODU2NDIyNDMzMyIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | f446c1684563a7e7c31ca8947ff3a2c0b46271265e7ac307970f2a16d9ae0d85 |
| hovercard-subject-tag | issue:4647420608 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/modelstudioai/cli/54/issue_layout |
| twitter:image | https://opengraph.githubassets.com/340b93b0e72ecd0ce28ece0644ced6c46236af2aed8bbb82dc3f0802100a388f/modelstudioai/cli/issues/54 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/340b93b0e72ecd0ce28ece0644ced6c46236af2aed8bbb82dc3f0802100a388f/modelstudioai/cli/issues/54 |
| og:image:alt | bl omni --audio always 400: sends audio_url, OpenAI-compatible endpoint requires input_audio Summary bl omni --audio |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | a2fapower |
| hostname | github.com |
| expected-hostname | github.com |
| None | b9a586c06a05a7a86fc7e3f4dbd03e42f6869085879aa184aa6369456dbd50fb |
| turbo-cache-control | no-preview |
| go-import | github.com/modelstudioai/cli git https://github.com/modelstudioai/cli.git |
| octolytics-dimension-user_id | 283556804 |
| octolytics-dimension-user_login | modelstudioai |
| octolytics-dimension-repository_id | 1251875798 |
| octolytics-dimension-repository_nwo | modelstudioai/cli |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 1251875798 |
| octolytics-dimension-repository_network_root_nwo | modelstudioai/cli |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 07a982c1d40157c619b364352b704c3ce66bb332 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width