Skip to content

Multimodal (Attachments)

The Multimodal section defines what the agent does when a conversation receives an image, document, or audio attachment. It does not enable the attachment button for a public inbox: that permission belongs to the inbox itself.

  1. Open Agents and select the agent.
  2. In the editor sidebar, select Multimodal.
  3. Configure the Image, Files, and Audio cards separately.
  4. Select Save in the bottom bar.

Changes remain a draft until saved. Discard restores the saved configuration. When a card has no stored configuration yet, the product assumes Accept natively for images and files and Accept audio for audio.

The Image card offers three modes:

  • Accept natively: sends the image to the main model when it supports vision. Check for the Current model supports it badge. If you see Current model doesn’t support it, do not use this mode: the current version discards the image and adds only a technical notice to the model context, without guaranteeing a clear explanation to the user.
  • Pre-process with another model: the selected model describes the image, including visible text, and its description enters the agent context. The selector shows globally active models that are authorized for preprocessing and support vision.
  • Don’t accept images: lets you write one Portuguese and one English reply, up to 500 characters each.

Preprocessing is useful when the main model cannot see images or when you want to separate visual reading from the final reply. It turns the image into a textual description: the agent does not receive the original pixels after this step.

The Files card uses the same three modes, but native behavior depends on the type:

  • TXT, Markdown, and CSV are read directly as text;
  • PDF is sent to the main model when it supports files; otherwise, the system tries to extract content with the global default model;
  • DOC, DOCX, XLS, and XLSX are extracted with the global default model before reaching the agent;
  • another accepted type is sent as a native file only when the main model declares file support.

Extracted text is limited to 15,000 characters per attachment in the turn context. Later content may be truncated, so send only the pages, sheets, or excerpts that matter.

Under Pre-process with another model, choose an authorized file-capable model. If you see No file-capable model available, do not save the mode: the interface’s instruction to configure one in the Models tab does not point to the real control, which depends on the platform-managed global catalog.

Under Don’t accept files, fill in the PT and EN messages, also limited to 500 characters.

Accept audio controls audio files received through integrations or the API. Audio is not sent natively to the model: SquadOS uses OpenAI Whisper, adds the transcription to textual context, and records a processing step. The current version fixes the transcription language to Portuguese, including in EN conversations.

Under standard platform billing, a successful transcription costs approximately 13 credits per minute. Duration is estimated from file size and type rather than measured from exact playback time. A failure produces the [Áudio não transcrito] marker for the agent and does not charge Whisper credits.

When you disable audio, write the PT and EN messages. In the Hub, this also removes the microphone while the agent is selected. The Hub recorder is a different flow: it transcribes in the browser into a text draft; public links and widgets do not show that recorder. See Audio and Transcription for channel differences.

If any attachment in the turn uses a Don’t accept mode, the pipeline stops the entire turn, does not call the model, and replies with the first configured rejection message. This also happens when the user included text or another accepted attachment in the same message.

The language comes first from the locale supplied with the message, then from the organization’s language; any value other than en uses PT. Rejection costs zero credits and is stored as the agent’s reply.

Always fill in both messages. The current editor allows empty fields to be saved despite the validation expected by the pipeline: if EN is empty, the reply falls back to PT; if both are empty, rejection may fail to stop the turn as configured.

SquadOS web composers accept up to five attachments per message:

  • JPEG, PNG, GIF, and WebP images;
  • PDF, TXT, Markdown, CSV, DOC, DOCX, XLS, and XLSX;
  • no video.

The final file sent to storage may be at most 4 MB. Recompressible images may enter the browser at up to 10 MB and PDFs at up to 25 MB, but both must finish at or below 4 MB after preparation. GIFs and other documents do not receive that allowance. The file picker does not accept audio; incoming audio normally comes from a compatible channel or the API.

These are web-composer limits. External integrations have their own validation and persistence. On a public page or widget, the attachment button appears only when the inbox has Allow attachments enabled; after upload, the agent modes still decide how each modality is processed. See Chat Interface.

The main model is configured under Models. Models in the preprocessing selector come from a separate list that is globally authorized by capability.

Preprocessing an image or file makes an additional call. Automatic PDF, Word, or Excel extraction may also call the global default model. With your own OpenRouter key, these calls use the organization’s key. Under platform billing, the current version does not fold the cost of these extraction calls into the response credit ledger; do not treat the displayed total as a complete measurement of multimodal cost.

After saving:

  1. use Test Agent or a Hub conversation;
  2. send a small example of each enabled modality;
  3. confirm that an image or file produced a description/extraction step when preprocessing applies;
  4. test every blocked mode in PT and EN, in a message without other important data;
  5. review extracted content, especially names, numbers, tables, and content near the 15,000-character limit.

If a preprocessing model is removed or deactivated, the runtime does not silently fall back to native mode: it adds a configuration error to the context. Return to Multimodal, choose another model, and save again.