The AI Maraya API
Generate images and video from your own app, workflow, or bot with a single REST call. Same models that power the Maraya studio and the Telegram bot.
8-day key
Every issued key expires automatically after 8 days.
Unlimited quota
No generation-count quota while the key is active.
All supported media
Use the same production models as the studio.
Quickstart
curl -X POST https://www.aimaraya.live/v1/generations \
-H "Authorization: Bearer $AI_MARAYA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"category":"video","model":"vseed25","prompt":"A cinematic sunrise above Dubai","duration":"5s","resolution":"720p","aspect_ratio":"16:9"}'const job = await fetch("https://www.aimaraya.live/v1/generations", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.AI_MARAYA_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
category: "video",
model: "vseed25",
prompt: "A cinematic sunrise above Dubai",
duration: "5s",
resolution: "720p",
aspect_ratio: "16:9",
}),
}).then((response) => response.json());
console.log(job.id, job.status_url);Endpoints
/v1/generationsQueue an image, video, or sound-effect generation with optional reference files./v1/generations/{id}Retrieve the status and output of a generation job./v1/generationsList recent generations created by this API key./v1/generations/{id}/cancelCancel a queued or running generation safely./v1/modelsList available models and their capabilities.Rate limits
Unlimited means there is no generation-count quota. Normal queue, model availability and service-protection limits still apply so one integration cannot block other active jobs.
Authentication
Send the key as Authorization: Bearer YOUR_API_KEY. Keys are shown only once when issued, stored hashed, and can be revoked immediately by an administrator.
Signed completion webhooks
Add a public HTTPS webhook_url when submitting a generation. AI Maraya sends a terminal event after the job completes, fails or is cancelled, retries temporary delivery failures, and signs the exact request body using your separately issued webhook secret.
x-aimaraya-timestamp: UNIX_SECONDS
x-aimaraya-delivery: UNIQUE_DELIVERY_ID