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.5(multimodal flagship)gemma-4-31bkimi-k2.6kimi-k2.7nemotron-3-ultra
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.5",
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.7",
"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. This is a passthrough API: what you send is what gets processed, nothing more.
Image generation is not offered. These models take images as input only.