Kryyt / Developers
Image Input
Combine text and supported image inputs in one user message.
Request shape
{
"model": "deepseek-v4.1-flash",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "Describe the main objects in this image."
},
{
"type": "image_url",
"image_url": {
"url": "https://your-public-host.example/product.jpg"
}
}
]
}
],
"max_tokens": 512
}Replace the illustrative URL with an image you are authorized to send and that the model service can access. An app file's private URL is not automatically accessible to an API client or provider.
Send local image bytes
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.kryyt.com/v1",
api_key=os.environ["KRYYT_API_KEY"],
timeout=600,
max_retries=0,
)
import base64
from pathlib import Path
encoded = base64.b64encode(Path("product.jpg").read_bytes()).decode("ascii")
response = client.chat.completions.create(
model="deepseek-v4.1-flash",
messages=[{"role": "user", "content": [
{"type": "text", "text": "Describe this product image."},
{"type": "image_url", "image_url": {
"url": "data:image/jpeg;base64," + encoded
}},
]}],
max_tokens=512,
)
print(response.choices[0].message.content)Capability and size limits
Image input is allowed only when the selected model has vision enabled. Otherwise the API returns vision_not_supported. The current seeded Flash configuration enables vision; provider acceptance, image formats, resolutions, and payload limits still apply.
Base64 expands file size. The deployed request-body limit may reject a large encoded image with 413; do not assume the web app's file-upload limit is an identical API image limit.
Current boundaries
The current gateway validates text and image_url parts. Audio, video parts, image generation, OpenAI file_id uploads, and the Responses API are not implemented. This page documents image input, not image generation.