Studii API
Call any Studii tool from your own server, script, or product. Pro plan and up.
Authentication
Issue a key at /app/settings/api-keys. Pass it on every request as a Bearer token (or via x-api-key):
Authorization: Bearer stu_<your-key>Create a job
Submits a generation. Returns immediately with the job id; pollstatus_urluntil status is completed or failed.
POST https://studii.tech/api/v1/jobs
Authorization: Bearer stu_<your-key>
Content-Type: application/json
{
"tool": "studio",
"inputs": {
"mode": "image",
"source": "text",
"quality": "standard",
"aspect_ratio": "16:9",
"prompt": "A misty pine forest at dawn, shafts of golden light"
}
}202 response:
{
"id": "8a1f...",
"status": "queued",
"status_url": "https://studii.tech/api/v1/jobs/8a1f...",
"credits_charged": 8
}Poll status
GET https://studii.tech/api/v1/jobs/<id>
Authorization: Bearer stu_<your-key>200 response:
{
"id": "8a1f...",
"status": "completed",
"output_url": "https://...supabase.co/.../outputs/<key>",
"output_kind": "image",
"tool": "studio",
"error": null,
"created_at": "2026-05-14T...",
"completed_at": "2026-05-14T...",
"credits_charged": 8
}Upload a source image
Image-to-image tools (virtual-staging, photo-restore, product-background, career-photo) need a source image. Two-step flow:
Step 1 — request a signed URL:
POST https://studii.tech/api/v1/uploads
Authorization: Bearer stu_<your-key>
Content-Type: application/json
{
"filename": "kitchen.jpg",
"content_type": "image/jpeg"
}200 response:
{
"object_key": "8a1f.../9c3e....jpg",
"signed_url": "https://...supabase.co/storage/v1/...?token=...",
"token": "...",
"expires_in": 7200
}Step 2 — PUT the bytes (no auth header, content-type must match):
curl -X PUT "$SIGNED_URL" \
-H "Content-Type: image/jpeg" \
--data-binary "@kitchen.jpg"Step 3 — submit the job with source_object_key set to the returned object_key:
POST https://studii.tech/api/v1/jobs
Authorization: Bearer stu_<your-key>
Content-Type: application/json
{
"tool": "virtual-staging",
"inputs": { "style": "modern", "room": "living" },
"source_object_key": "8a1f.../9c3e....jpg"
}Tool slugs
studio— text or image-to-image / video generationvirtual-staging— requiressource_object_keyphoto-restore— requiressource_object_keyproduct-background— requiressource_object_keycareer-photo— requiressource_object_key(a front-facing portrait)
Errors
| Status | Meaning |
|---|---|
| 400 | Bad request — missing field or invalid inputs |
| 401 | Missing, malformed, or revoked API key |
| 402 | Out of credits, or spend cap reached |
| 403 | Plan does not allow this tool / combination |
| 404 | Job not found, or belongs to another user |
| 500 | Server error — safe to retry |
Spend caps
Each key can have a credit cap. When the cap is reached, jobs return 402. Caps are advisory — they do not refund mid-job. Use a low cap on production keys to bound runaway costs.
Rate limits
Pro: 60 requests / min per key. Team and Business: 300 / min. Lift via support if needed.