Generate images

POST/api/v1/images

Generate one to four images from a prompt. Deducts credits (see Credit costs) and saves each result to your generation history.

Body

jsonjson
{
"prompt": "a neon dragon over Tokyo", // required
"model": "nano-banana", // optional, default nano-banana
"ratio": "16:9", // 1:1 | 16:9 | 9:16 | 4:5 | 3:2 | 2:3
"count": 1, // 1 to 4
"image_urls": [] // required for edit models
}

Response

jsonjson
{
"images": [{ "url": "https://…​.jpg", "id": "uuid" }],
"model": "nano-banana",
"credits_spent": 6,
"credits_remaining": 994
}

Edit models (nano-banana-edit, flux-kontext-pro) require at least one URL in image_urls.

Generate video

POST/api/v1/videos

Video generation is asynchronous. Submitting returns a job id and a poll URL; the credits are charged up front and automatically refunded if the render fails.

Body

jsonjson
{
"prompt": "a drone shot over a neon city at night", // required
"model": "kling-2.5-turbo", // kling-3-pro, seedance-2.0, veo-3, wan-pro, ltx-2.3-fast, …
"ratio": "9:16",
"duration": 5,
"image_url": "https://…​.jpg", // optional first frame (image-to-video)
"image_mode": "first-frame"
}

Response (202)

jsonjson
{ "id": "uuid", "status": "pending", "credits_spent": 28, "poll": "/api/v1/videos/uuid" }
GET/api/v1/videos/{id}

Poll every few seconds until status is done (with a url) or error.

bashbash
curl https://intentos.eu/api/v1/videos/uuid -H "Authorization: Bearer sk_live_…"
# { "id": "uuid", "status": "done", "url": "https://…​.mp4" }

Upscale & remove background

POST/api/v1/upscale

4× upscale an image. Cost: 5 credits. Body: { "image_url": "https://…" }{ "url", "credits_spent", "credits_remaining" }.

POST/api/v1/remove-bg

Remove the background (transparent PNG). Cost: 3 credits. Same body and response shape as upscale.

Text to speech

POST/api/v1/voice

Synthesize speech with your own ElevenLabs voice. Because it uses your own key (configure it in Settings), it does not spend IntentOS credits. Returns audio/mpeg.

bashbash
curl -X POST https://intentos.eu/api/v1/voice \
-H "Authorization: Bearer sk_live_…" -H "Content-Type: application/json" \
-d '{ "text": "Hello from IntentOS" }' --output speech.mp3

Get credits

GET/api/v1/credits

Returns your current balance and plan.

jsonjson
{ "credits": 992, "plan": "pro", "credit_value_eur": 0.05 }

List generations

GET/api/v1/generations?type=image&limit=20

Lists your recent generations, newest first. type is image (default) or video; limit is 1 to 100.

jsonjson
{
"type": "image",
"generations": [
{ "id": "uuid", "prompt": "…", "model": "nano-banana",
"ratio": "1:1", "url": "https://…​.jpg", "created_at": "…" }
]
}

Skills marketplace

GET/api/v1/skills?q=ads&category=ads&sort=popular&limit=20

Search published, reviewed skills. sort is newest (default), popular or name. Categories: image video ads carousels shorts branding research voice automation other.

GET/api/v1/skills/:slug

Returns one skill with its full instructions and a ready-to-save file (SKILL.md with frontmatter). Counts as an install for your account.

jsonjson
{
"slug": "product-ad-set",
"name": "Product ad set",
"version": "1.0.0",
"creator": "IntentOS",
"instructions": "# What this skill does…",
"filename": "product-ad-set/SKILL.md",
"file": "---
name: product-ad-set
…"
}

The dispatch

One pattern, every week.

A single short email each week breaking down what made one viral video work, and how to adapt it. No fluff.

Join 1,800+ marketers reading every Thursday. Unsubscribe anytime.