---
title: "Image Support: route limits and note replacement"
description: "Describes how to configure a route to carry images in Library Tool Results and when Duale AI replaces an image with a short note."
lang: en
status: public-preview
lastUpdated: 2026-10-21
url: https://duale.ai/en/docs/model-routing/images
---

## AI-generated summary

This page covers image delivery checks, route requirements, profile budgets, replacement conditions, and recovery options for Library Tool Result images.

- Image delivery checks for provider requests.
- Route requirements for carrying images in Tool Results.
- Image profile limits and provider ceilings.
- Conditions that replace an image with a note.
- Recovery options for a dropped image.

Summaries were generated by AI.

---

Image Support covers images inside Library Tool Results: the images of a Library document that a Task reads. A request
cannot attach an image directly as model input. Use this reference to configure a route that can carry images and to
predict when the model receives a short note instead of an image.

## What decides whether an image reaches the model

Duale AI checks each image again for every provider request that would carry it.

```mermaid
flowchart TB
    accTitle: What decides whether an image reaches the model
    accDescr {
      An image inside a Library Tool Result reaches the model only when every check passes for that provider request. The Agent Identity of the Task must still be able to read the Library, and the document must still exist. The selected route must have an Image Support profile and a provider type that carries images. The image must fit the limits for one image and for the whole request. If a check fails, the model receives a short note instead, and text from the document stays available.
    }
    Image[Image in a Library Tool Result]
    Access{Agent Identity can still read it, and the document exists?}
    Route{Route has Image Support and a provider type that carries images?}
    Limits{Fits the limits for one image and for the request?}
    Sent[Image sent with this provider request]
    Placeholder[Short note in place of the image]
    Image --> Access
    Access -- Yes --> Route
    Access -- No --> Placeholder
    Route -- Yes --> Limits
    Route -- No --> Placeholder
    Limits -- Yes --> Sent
    Limits -- No --> Placeholder
```

## Check whether the route can carry an image

Both checks must pass before an image can reach the model:

- The route carries an **Image Support** profile. Absent means no image is ever sent to that model.
- The provider type can carry an image inside a Tool Result. Anthropic, AWS Bedrock, OpenAI Responses, and Mistral can.
  Other provider types, including Microsoft Foundry and DashScope Qwen, send no image bytes.

On Mistral, enable the profile only after verifying that the selected endpoint accepts Tool Result images.

These conditions also affect route choice. When at least one route can carry at least one image,
Duale AI uses only routes that can carry at least one. When no route can, all routes remain available
and every image is replaced by a note.

The **Image Support** form appears on every provider type. You can therefore save a profile on a route
that cannot receive an image. A saved profile alone does not prove that the provider type carries images.

Every provider request carries its included images in full. Duale AI stores no file at the provider; see
[Data protection](https://duale.ai/en/docs/security/data-protection.md#external-data-paths) for the provider-retention boundary.

## Set the image profile and budget

The profile needs three values: images per request, bytes per image, and the largest width or height in pixels. The
form accepts 1 to 1,000 images, up to 128 MiB per image, and up to 65,535 px. Enter limits verified on the selected
endpoint. The ceilings below can tighten those values.

Duale AI applies its own ceilings on top of your profile. A ceiling can only tighten your values, never raise them:

| Provider type    | Images per request | Bytes per image   | Long-edge rule                               | Request ceiling  |
| ---------------- | ------------------ | ----------------- | -------------------------------------------- | ---------------- |
| Anthropic        | 100                | 7,500,000         | Above 20 images, the limit drops to 2,000 px | 28,000,000 bytes |
| AWS Bedrock      | 20                 | 3,750,000         | None                                         | 20,000,000 bytes |
| OpenAI Responses | Your profile only  | Your profile only | None                                         | None             |
| Mistral          | Your profile only  | Your profile only | None                                         | None             |

A **Request ceiling** counts the whole provider request, not only its images. A long Task history leaves less room for
images in the same request.

One more limit applies to every provider request, on every provider type, and is not in the table: about 42.9 MiB of
image files in one request. Above it, Duale AI replaces the oldest images with a short note until the request fits,
keeping the newest. On OpenAI
Responses and Mistral routes, use your profile to express the remaining limits of the selected endpoint.

An OpenAI Responses route also carries **Image Detail**. `low` requests low detail; `auto` and `high`
both request high detail. The selected endpoint determines image processing and billed tokens.

Budget image workloads using measured input-token usage and configured prices. Duale AI estimates image tokens to fit
each request into the context window. Usage that the provider bills can differ, so validate it with representative
images on the selected endpoint.

## When an image is replaced by a note

Duale AI replaces an image with a short note and can still return a successful answer from text in these cases:

- The selected route cannot carry images: every image is replaced.
- One image exceeds a byte or dimension limit for one image, or cannot fit the request by itself: that image is
  replaced.
- The request exceeds the image count, the request ceiling of the provider type, or the total image limit: the
  oldest images are replaced, keeping the newest.
- The source document no longer exists, or its image reference or bytes are permanently invalid or corrupt: that image
  is replaced.
- The Agent Identity of the Task can no longer read the Library that holds the image, including for an image from
  earlier work or a parent Task: that image is replaced. The
  [Grant rule](https://duale.ai/en/docs/libraries/access.md#a-grant-change-applies-to-images-already-in-use) describes this check.

Above 20 images on an Anthropic route, the same oldest-first rule applies. While any image exceeds the tightened
2,000 px long edge, Duale AI replaces the oldest images, whatever their size, until 20 remain or none exceeds that edge.
It never makes an image smaller.

Every route receives the same short note in place of a removed image, in every provider request where the image is
unavailable. Text derived from that image, such as recognized characters or a caption, stays, as does text extracted
from the document itself. Each provider request makes its own image selection. Replacing an image in one request does
not rewrite the stored Task history or stop a later request on an image-capable route from carrying it.

A temporary failure to read an image is not a replacement. Duale AI retries it like a
[provider outage](https://duale.ai/en/docs/model-routing/contract-and-limits.md#keep-a-task-through-a-provider-outage).

## Restore a dropped image

Ask for a value that only the image carries, and check it against a source outside the model. To restore a dropped
image, bring it under the limits: read the document at a lower resolution, or split a document that exceeds the count
or request ceiling across several requests.

## Related content

- [Procurement: every supplier, invoice and bid checked](https://duale.ai/en/use-cases/procurement.md)
- [Library security: encryption and deletion](https://duale.ai/en/docs/libraries/security.md)
- [Provider capabilities on a Model Route](https://duale.ai/en/docs/model-routing/provider-capabilities.md)
- [Manage Libraries: create, upload, and verify ingestion](https://duale.ai/en/docs/sdk/manage-libraries.md)
- [Model routing under your provider contracts](https://duale.ai/en/product/model-routing.md)
- [Model routing: route selection and configuration](https://duale.ai/en/docs/model-routing.md)

---

## Sitemap

See the full [Markdown sitemap](https://duale.ai/sitemap.md) for all pages.
