Multimodal Overview
For supported models, send messages[].content as an OpenAI-compatible content-part array instead of a plain string. Currently accepted parts:
text image_url input_audio
input_fileWhen should you use it?
Section titled “When should you use it?”Read a single model's modalities from model discovery; the endpoint needs no authentication:
curl -s https://llmtr.com/v1/models/google/gemini-3.6-flash | jq '.architecture'To list every model that supports a specific operation (image generation, embeddings, TTS, …) filter the catalog on supported_operations:
# All image-generating modelscurl -s https://llmtr.com/v1/models \ | jq -r '.data[] | select(.supported_operations[] == "IMAGES_GENERATIONS").id'
# Embedding modelscurl -s https://llmtr.com/v1/models \ | jq -r '.data[] | select(.supported_operations[] == "EMBEDDINGS").id'
# Text-to-speech modelscurl -s https://llmtr.com/v1/models \ | jq -r '.data[] | select(.supported_operations[] == "AUDIO_SPEECH").id'When a model is sent to the wrong endpoint, the 400 unsupported_operation response includes error.details.supported_endpoints and error.details.suggested_endpoint to point you at the correct route. See Errors.
Content-part shape
Section titled “Content-part shape”{ "messages": [ { "role": "user", "content": [ { "type": "text", "text": "What's in this image?" }, { "type": "image_url", "image_url": { "url": "https://..." } } ] } ]}Limits and notes
Section titled “Limits and notes”- Media is sent through the JSON body. Remote URLs are safer than inline base64.
- Keep inline base64 audio clips short (< 1 MB recommended).
- For large files, PDFs, video, or reusable media use the Files API.