API Docs
Every feature in the Glimerz web app — video generation, photo remodeling, and everything else — runs on the same public API documented here. Base URL: https://api.glimerz.com.
Authentication
Every request needs your workspace's API key as a Bearer token:
Authorization: Bearer sk_test_...Your key was shown once when you signed up or last logged in. If you've lost it, generate a new one below — this immediately invalidates the old one, so update anything already using it.
Submit a task
Accepts an array of 1–20 tasks — send one for a single generation, or several at once to queue a batch in one request. Each task is billed and processed independently, so a partial failure (e.g. running out of credits partway through) only affects the tasks after that point.
curl https://api.glimerz.com/v1 \
-X POST \
-H "Authorization: Bearer sk_test_..." \
-H "Content-Type: application/json" \
-d '[
{
"taskType": "videoInference",
"model": "video/mock-t2v",
"positivePrompt": "a cinematic drone shot over a renovated modern kitchen, warm morning light",
"duration": 5,
"resolution": "720p"
}
]'Response — one result per submitted task, in the same order:
{
"tasks": [
{ "taskUUID": "8c414661-...", "taskType": "videoInference", "model": "video/mock-t2v", "status": "queued" }
]
}A task that fails to submit (bad model, insufficient credits) comes back with status: "failed" and an error field instead of a taskUUID — see Errors below.
Fields vary by taskType — see GET /v1/models below for the exact model catalog and per-model cost. Every task type accepts an optional taskUUID (a UUID you generate yourself, useful for idempotency) and an optional webhookURL to notify just that one task instead of your account-wide default (see Webhooks below). The current task types are videoInference, photoRemodel, imageInpaint, imageBackgroundRemoval, imageUpscale, and videoTranscription.
Check a task's status
Poll this until status is succeeded or failed — or skip polling entirely and use a webhook instead (below).
{
"taskUUID": "8c414661-...",
"taskType": "videoInference",
"model": "video/mock-t2v",
"status": "succeeded",
"resultURLs": ["https://.../result.mp4"],
"cost": 40,
"createdAt": "2026-08-08T18:30:32.629Z",
"startedAt": "2026-08-08T18:30:33.100Z",
"completedAt": "2026-08-08T18:30:41.500Z"
}Webhooks
Registers an account-wide default webhook URL, used for any task that doesn't specify its own webhookURL. Called once, whether the task succeeds or fails.
curl https://api.glimerz.com/v1/webhooks \
-X POST \
-H "Authorization: Bearer sk_test_..." \
-H "Content-Type: application/json" \
-d '{ "url": "https://your-app.example.com/glimerz-webhook" }'Payload delivered to your URL:
{
"taskUUID": "8c414661-...",
"taskType": "videoInference",
"model": "video/mock-t2v",
"status": "succeeded",
"resultURLs": ["https://.../result.mp4"],
"cost": 40,
"error": null
}Your endpoint must be reachable over the public internet — localhost and private/internal addresses are rejected for security reasons.
List available models
Returns every model you can pass as model in a task, its taskType, credit cost, and a human-readable description of its expected params.
{
"models": [
{ "id": "video/mock-t2v", "taskType": "videoInference", "displayName": "Text to Video", "costCredits": 40, "paramSchema": { ... } }
],
"capabilities": { "imageToVideo": true }
}Account usage
Your current credit balance, referral info, and recent transaction history.
{
"creditBalance": 1030,
"referralCode": "cmskp...",
"referralCount": 2,
"recentTransactions": [
{ "amount": -40, "reason": "debit_job_submitted", "jobId": "cmskp...", "createdAt": "..." }
]
}Style presets
Save a named, reusable set of task params (prompt, room type, style, etc. — never a specific photo) and re-apply it later instead of re-sending the same fields every time.
curl https://api.glimerz.com/v1/style-presets \
-X POST \
-H "Authorization: Bearer sk_test_..." \
-H "Content-Type: application/json" \
-d '{
"name": "Cinematic kitchen drone shot",
"taskType": "videoInference",
"params": { "positivePrompt": "a cinematic drone shot over a modern kitchen", "duration": 5, "resolution": "720p" }
}'Errors
Validation failures return HTTP 400 with { "error": "validation_error", "details": {...} }. A missing or invalid API key returns 401 with missing_api_key or invalid_api_key. Inside a POST /v1 batch, an individual task that can't run comes back with status: "failed" and an error of either insufficient_credits or a description of what was wrong with that task — the request itself still returns 202, since other tasks in the same batch may have succeeded.