Home Blog

How to Use Qwen3.8 Omni Flash and LiveTranslate

Qwen3.8 Omni Flash and LiveTranslate via API

Sep 18, 2026

EmpirioLabs AI

Qwen3.8 Omni Flash is Alibaba's omni-input Flash model: it reads text, images, audio, and video, and it answers in text. It ships with a 1M token context, thinking that is on by default, function calling, strict JSON Schema structured output, and one built-in tool, web search.

Qwen3.8 Omni Flash is live on EmpirioLabs today through an OpenAI-compatible API, with streaming and up to 128K output tokens. Try it in the playground or call it from any OpenAI-compatible client. The full spec and current rates live on the Qwen3.8 Omni Flash model page and the API docs.

Shipping in the same launch is Qwen3.8 LiveTranslate Flash Realtime: spoken translation over a WebSocket. Set the target language, speak, and the model replies in that language with text and audio. Open it in the playground or connect to wss://api.empiriolabs.ai/v1/realtime?model=qwen3-8-livetranslate-flash-realtime. Details live on the Realtime Voice API page.

Pricing

Omni Flash billing is usage based with one flat input rate and one flat output rate at every prompt size. Audio and video tokens use the same input rate as text; a video's soundtrack is counted as audio tokens alongside its video tokens. Web search adds a small per-call fee that applies only when a call actually runs. Thinking tokens bill as output tokens.

LiveTranslate bills each completed turn from the usage the model reports, with separate rates for audio tokens and text tokens. Current rates for both models always live on their model pages and the pricing page, which stay in sync with what you are charged.

Quickstart

Point any OpenAI SDK at the EmpirioLabs base URL and pass qwen3-8-omni-flash as the model:

from openai import OpenAI

client = OpenAI(
    base_url="https://api.empiriolabs.ai/v1",
    api_key="YOUR_EMPIRIOLABS_API_KEY",
)

resp = client.chat.completions.create(
    model="qwen3-8-omni-flash",
    messages=[
        {"role": "user", "content": [
            {"type": "text", "text": "What is being said, and what is on screen?"},
            {"type": "input_audio", "input_audio": {
                "format": "mp3",
                "data": "https://example.com/clip.mp3",
            }},
        ]},
    ],
    extra_body={"enable_thinking": True, "thinking_budget": 8192},
)

print(resp.choices[0].message.content)

The same model id works on /v1/responses, the Anthropic-shaped /v1/messages, and the Google-compatible /v1beta/models/qwen3-8-omni-flash:generateContent route. The alternate id qwen3.8-omni-flash resolves to the same model.

LiveTranslate over a WebSocket

LiveTranslate is not HTTP. Connect to the realtime socket with the same API key you use everywhere else, then send a session.update that sets the target language before any audio:

{"type": "session.update", "session": {
    "voice": "Tina",
    "translation": {"language": "en"},
    "modalities": ["text", "audio"]
}}

Then append microphone audio as input_audio_buffer.append events. The model translates as you speak and streams audio back. Voices on this model are Tina, Serena, Ethan, and Cindy. The alternate id qwen3.8-livetranslate-flash-realtime resolves to the same model. A chat-completions call on this slug is rejected; the only advertised endpoint is the socket.

Thinking

On Omni Flash, deep thinking is on by default and streams back as reasoning_content alongside the answer. Control it with enable_thinking and thinking_budget (up to 262,144 tokens), or send reasoning_effort and the platform maps it to a budget sized for the model. Thinking tokens bill as output tokens, so disable thinking or set a small budget for short, latency-sensitive turns.

Built-in tools

Web search on Omni Flash rides behind tool_web_search and is off by default. This model does not expose the web extractor, code interpreter, or image-search tools. When search runs, the response's usage.tool_usage map reports exactly how many calls were made, so you can audit per-tool billing. A single request can invoke search more than once, and each invoked call is billed. LiveTranslate has no web search.

Structured output

For an exact response shape on Omni Flash, pass response_format with {"type": "json_schema", ...} and "strict": true: the model returns exactly the schema's keys with no extras. Plain JSON mode with {"type": "json_object"} is also supported.

Things worth knowing before your first call

  • Omni Flash reads audio and video, and it replies in text. Do not request audio output. There is no voice control on that model.
  • Send Omni Flash audio as a URL or a base64 data URI. Nested input_audio.data must be a URL or a data: URI, not raw base64. A playground MP3 upload uses format: "mpeg"; that aliases to mp3.
  • tool_choice: "required" does not work while thinking is on. The request is rejected with a clear error. Keep tool_choice: "auto" with thinking enabled, or set enable_thinking: false when you need to force a function call.
  • LiveTranslate needs a target language on the first session.update. Without it the socket closes before any audio is produced. Leave source language unset to auto-detect.

Both models are available now in the playground and through the EmpirioLabs API.

Ready to use better endpoints?

Explore our models, or contact us about business inquiries, custom deployments, or anything else.