━━ DOCS

API REFERENCE.

ONE BASE URL. ONE AUTH HEADER. EVERY MODEL.

━━ 01

QUICKSTART

GENERATE YOUR FIRST IMAGE IN 30 SECONDS.

export PLUME_KEY="pl_live_…"

curl https://plumestudios.dev/api/run/flux/schnell \
  -H "Authorization: Bearer $PLUME_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "a brutalist concrete tower at dawn",
    "image_size": "square_hd"
  }'
━━ 02

AUTHENTICATION

EVERY REQUEST NEEDS AN Authorization HEADER WITH YOUR PLUME KEY. KEYS LIVE IN YOUR DASHBOARD.

Authorization: Bearer pl_live_XXXXXXXXXXXX

KEYS ARE SERVER-SIDE ONLY. NEVER SHIP THEM TO THE BROWSER.

━━ 03

RUN A MODEL

RUNS ARE ASYNC. POST /api/run/<slug> RETURNS A jobId IMMEDIATELY; POLL GET /api/jobs/<jobId> UNTIL IT COMPLETES. THIS KEEPS SLOW MODELS (VIDEO) FROM TIMING OUT.

# 1. submit
POST /api/run/flux-pro/v1.1
{ "prompt": "a wisp of ink at dusk", "aspect_ratio": "16:9" }

→ { "jobId": "…", "status": "pending" }

# 2. poll until done
GET /api/jobs/<jobId>

→ { "status": "pending" }          # keep polling
→ {
    "status": "completed",
    "preview": "https://cdn.plumestudios.dev/…/img.png",
    "cost": 0.052
  }
━━ 04

OUTPUTS

EVERY RESPONSE HAS THE SAME SHAPE. preview IS THE PRIMARY OUTPUT (URL OR STRING), ALONGSIDE cost AND latencyMs.

image
preview = url to png/jpg
video
preview = url to mp4
audio
preview = url to wav/mp3
text
preview = generated text
━━ 05

ERRORS

  • 400INVALID INPUT JSON
  • 401MISSING OR INVALID KEY
  • 402INSUFFICIENT CREDITS
  • 404UNKNOWN MODEL SLUG
  • 429RATE LIMITED
  • 502UPSTREAM MODEL FAILURE
━━ 06

MODEL INDEX

36 MODELS WITH FULL PRICING IN THE CATALOG.