Developer API
Text, image, and video endpoints
Send valid requests and handle normalized Lato responses for every supported modality.
POST /messages
Send one to 100 user or assistant messages, optional system guidance, max_tokens from 1 to 8192, and temperature from 0 to 2. Omit stream or set it to false; streaming is not currently supported and stream:true returns OPMD_MODEL_005.
curl https://oppermind.com/api/v1/messages \
-H "Authorization: Bearer $OPPERMIND_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"oppermind-lato-1","system":"You answer as a courteous hotel concierge.","max_tokens":200,"temperature":0.4,"messages":[{"role":"user","content":"Recommend a quiet place for breakfast near the harbour."}]}'{
"id": "req_1e7c3a9f5b2d8e4a6c0f9b3d",
"model": "oppermind-lato-1",
"role": "assistant",
"content": [
{
"type": "text",
"text": "Certainly. The Boatshed Cafe on the eastern wharf opens at seven, seats only a dozen tables, and looks straight onto the water."
}
],
"stop_reason": "end_turn",
"usage": {
"input_tokens": 38,
"output_tokens": 31
}
}POST /images
Send a prompt and choose count, standard or HD quality, URL or b64_json response format, aspect ratio, and resolution. Current request enforcement caps image count at four.
curl https://oppermind.com/api/v1/images \
-H "Authorization: Bearer $OPPERMIND_API_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt":"minimalist poster for a community bike repair workshop, teal and cream","n":2,"quality":"hd","aspect_ratio":"3:4","response_format":"url"}'{
"model": "oppermind-lato-1",
"data": [
{
"url": "/api/v1/images/proxy?token=…"
},
{
"url": "/api/v1/images/proxy?token=…"
}
]
}POST /videos
Send a prompt, duration up to 60 seconds, 720p or 1080p, and 24, 30, or 60 fps. Generation is synchronous, so allow a generous timeout and use the finished URL in the POST response.
curl https://oppermind.com/api/v1/videos \
-H "Authorization: Bearer $OPPERMIND_API_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt":"slow aerial pan over rows of solar panels at sunrise","duration_seconds":8,"resolution":"1080p","fps":24}' \
--max-time 180{
"id": "req_8d3b6f2a1c9e7b5d4a0c2e6f",
"model": "oppermind-lato-1-video",
"status": "succeeded",
"url": "/api/v1/videos/proxy?token=…",
"duration_seconds": 8,
"resolution": "1080p"
}Fetch protected video output
The returned video URL is an Oppermind proxy path. Fetch it with the same Bearer API key. GET /videos/{id} is a compatibility confirmation—not a polling requirement.
# url value from the POST /videos response curl "https://oppermind.com/api/v1/videos/proxy?token=…" \ -H "Authorization: Bearer $OPPERMIND_API_KEY" \ -o solar.mp4
(binary video/mp4 body, written to solar.mp4)
Use normalized responses
Responses expose Oppermind Lato model identifiers and never reveal upstream provider names. Capture content, usage, request ID, route type, and API version.
curl https://oppermind.com/api/v1/messages \
-H "Authorization: Bearer $OPPERMIND_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"oppermind-lato-1","max_tokens":100,"messages":[{"role":"user","content":"Name three uses for a spare shipping pallet."}]}' \
-i{
"id": "req_4a9e2c7b5d1f8a3e6b0c4d9f",
"model": "oppermind-lato-1",
"role": "assistant",
"content": [
{
"type": "text",
"text": "Garden planter, workshop shelving, or a raised base for outdoor storage."
}
],
"stop_reason": "end_turn",
"usage": {
"input_tokens": 17,
"output_tokens": 16
}
}Practise this in Oppermind Academy
Follow the related tutorial or course and apply the concept to a real task.
