Getting started
Get a key and make your first video in four calls.
1. Get a key
In Getuser, open Settings › Connect to AI › For developers and click New key. Copy it: it starts with gu_ and is shown once.
export GETUSER_API_KEY="gu_..."Check it works:
curl https://getuser.app/api/v1/health/auth \
-H "Authorization: Bearer $GETUSER_API_KEY"
# {"ok":true}2. See your account
curl https://getuser.app/api/v1/me -H "Authorization: Bearer $GETUSER_API_KEY"{
"workspace": { "id": "…", "name": "Acme" },
"app_name": "Acme Notes",
"plan": "pro",
"credits": {
"balance": 2350,
"held": 0,
"resets_at": "2026-11-18T00:00:00Z",
"daily": false,
"video_cost": 25,
"slideshow_cost": 25
},
"storage": { "used_bytes": 1830000000, "limit_bytes": 20000000000 },
"setup": {
"videos": { "ready": true, "missing": [] },
"slideshows": { "ready": false, "missing": ["images"] }
},
"key": { "id": "…" }
}setup has one gate for videos and one for slideshows. Videos need the app's profile, 5 demos and the founder's own reaction; slideshows need the app's profile and 5 images. If a gate is not ready, the founder adds what its missing lists (app, demos, reaction, images) in the app first.
3. Plan, for free
POST /videos/plan renders nothing and costs nothing. It returns the drafts the Batch page would make, and the cost.
curl https://getuser.app/api/v1/videos/plan \
-H "Authorization: Bearer $GETUSER_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "format": "hook-demo", "count": 3, "lines": "all", "music": true, "theme": "white" }'{
"drafts": [
{
"format": "hook-demo",
"pattern_id": "p07",
"hook_text": "POV: you finally found a notes app that keeps up",
"ending_text": "Acme Notes",
"clip_id": "…",
"hook_asset_id": null,
"demo_id": "…",
"ending_id": "…",
"track": { "id": "…", "source": "stock" },
"theme": "white",
"ai_label": true,
"keep_audio": false
}
],
"cost": 75,
"credits_after": 2275,
"note": null
}4. Render, then wait
Send the drafts back with an Idempotency-Key, so a retry never makes twins:
curl https://getuser.app/api/v1/videos \
-H "Authorization: Bearer $GETUSER_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{ "drafts": [ … the drafts from step 3 … ] }'{ "batch_id": "…", "videos": [{ "id": "6f1c…", "status": "queued" }], "refused": null, "credits_held": 75 }Check each video until it is ready (most take 1–3 minutes):
curl https://getuser.app/api/v1/videos/6f1c… -H "Authorization: Bearer $GETUSER_API_KEY"{
"id": "6f1c…",
"format": "hook-demo",
"status": "ready",
"error_code": null,
"error": null,
"hook_text": "POV: you finally found a notes app that keeps up",
"persona_id": "…",
"batch_id": "…",
"created_at": "2026-10-26T09:12:44Z",
"poster_url": "https://…",
"download_url": "https://…",
"credits": 25
}download_url works for one hour; read the video again for a fresh one. The video is also on the founder's Videos page.
Next
- Concepts: personas, lines, footage, formats.
- Making videos: every option of the planner.
- Errors: what each refusal means.