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

  • studiotext or image-to-image / video generation
  • virtual-stagingrequires source_object_key
  • photo-restorerequires source_object_key
  • product-backgroundrequires source_object_key
  • career-photorequires source_object_key (a front-facing portrait)

Errors

StatusMeaning
400Bad request — missing field or invalid inputs
401Missing, malformed, or revoked API key
402Out of credits, or spend cap reached
403Plan does not allow this tool / combination
404Job not found, or belongs to another user
500Server 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.

Need higher volumes, dedicated capacity, or a hosted-model SLA? Email hello@studii.tech.