Authentication
Create a developer key in Dashboard → API Keys. Send it as a bearer credential. Authentication uses a one-way hash; the protected dashboard copy action uses the existing encrypted recovery field.
Authorization: Bearer cv_live_...
Accept: application/json
Generation requests also require an Idempotency-Key containing 16 to 128 letters, numbers, dots, colons, underscores, or hyphens.
Core endpoints
| Method | Path | Purpose |
|---|---|---|
| GET | /api/v1/health | Service health |
| GET | /api/v1/account | Account and subscription |
| GET | /api/v1/credits | Shared credit balance |
| GET | /api/v1/models | Models allowed by the current plan |
| GET | /api/v1/generations | Unified generation history |
| POST | /api/v1/images/generate | Image generation |
| POST | /api/v1/photoshoots/generate | Product photoshoot |
| POST | /api/v1/video/generate | Submit an asynchronous video job |
| GET | /api/v1/video/jobs/{job_id} | Video status |
| POST | /api/v1/voice/generate | Voice endpoint; disabled until an adapter is configured |
Selection and errors
Use a selection object with auto, a permitted tier, or an exact provider and model. Available choices come from the models endpoint and plan entitlements.
Responses use a consistent JSON envelope with success, data, meta, or an error containing a stable code and message. Generated media URLs remain private and require the same bearer credential.