Skip to main content
Definable provides unified media types that work across all providers supporting multimodal input.

Images

Pass images from URLs, local files, or raw bytes:

Image Sources

Detail Level

Control the resolution used for analysis:

Audio

Send audio input and receive audio output from supported models.

Audio Input

Only gpt-4o-audio-preview supports raw input_audio blocks. Other models (GPT-4o-mini, Claude, DeepSeek) will reject them. Use audio_transcriber=True on the Agent to automatically transcribe voice to text before it reaches the model — see Voice Note Transcription below.

Audio Output

Voice Note Transcription

When your agent receives voice messages from Telegram, Discord, or other interfaces, you need to transcribe the audio to text before sending it to the model. The audio_transcriber parameter handles this automatically.
When audio_transcriber is set:
  1. Voice messages arrive as Audio objects on the message
  2. Each audio clip is sent to the Whisper API for transcription
  3. The transcript text is appended to the message content
  4. The audio field is cleared so non-audio models don’t receive raw audio blocks
audio_transcriber works at the agent level, so all interfaces (Telegram, Discord, Desktop) and direct arun() callers benefit automatically. No per-interface setup required.

Format Normalization

Telegram sends voice notes as .oga (OGG Opus), which isn’t accepted by all APIs. The reader.audio module provides format normalization:
This requires ffmpeg installed on your system. The audio_transcriber handles this transparently — you don’t need to call normalize_audio_format directly when using it.

Video

Pass video files for analysis:

Files

Send documents and other files:

Using Media with Agents

Agents accept media directly in the run() call:

Supported Formats

Not all providers support all media types. Check your provider’s documentation for specific format and size limits.