Multimodal input
Several models accept images alongside text, using the standard OpenAI
content-parts format. Look for the Text + Image badge on a model card.
Text-only models will reject image parts with a clean 400.
Audio input is not yet available on any model. It is on the roadmap; audio parts sent today return a clean
400.
Models that accept image input:
mimo-v2.6-flash(multimodal)mimo-v2.6-prodeepseek-v4.1-flashdeepseek-v4.1-flash-1017gemma-4-31bkimi-k2.6kimi-k3minimax-m3nemotron-3-ultranemotron-3.5-super-vl
Sending an image
Use a content array with a text part and an image_url part. The URL can be
a public https:// URL or a base64 data: URI.
Python
resp = client.chat.completions.create(
model="mimo-v2.6-flash",
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "What's in this image?"},
{"type": "image_url", "image_url": {
"url": "https://example.com/photo.jpg"
}},
],
}],
)
Base64 data URI
import base64
with open("photo.jpg", "rb") as f:
b64 = base64.b64encode(f.read()).decode()
messages = [{
"role": "user",
"content": [
{"type": "text", "text": "Describe this picture."},
{"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{b64}"}},
],
}]
curl
curl https://api.pgsgrove.com/v1/chat/completions \
-H "Authorization: Bearer $PGS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "kimi-k2.6",
"messages": [{
"role": "user",
"content": [
{ "type": "text", "text": "Read the text in this image." },
{ "type": "image_url", "image_url": { "url": "https://example.com/sign.png" } }
]
}]
}'
Billing & privacy
Image tokens are metered automatically and billed like any other input tokens. Images are transit-only: they are forwarded to the model to answer your request and are not stored. They are processed only to answer your request.
Image generation is not offered. These models take images as input only.