Get started
Orior API
Generate images and videos with every Orior model, keep characters and products consistent, and publish to social media from your own product, with the credits you already use in Orior.
Base URL https://api.oriorai.com/v1
POST/v1/images
curl -X POST https://api.oriorai.com/v1/images \
-H "Authorization: Bearer $ORIOR_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"prompt": "She is holding the serum next to her face, soft window light",
"character_id": "Qx8p2LmN4vRt",
"product_id": "Pm3kT9aQ",
"aspect_ratio": "4:5",
"resolution": "2K"
}'const response = await fetch('https://api.oriorai.com/v1/images', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.ORIOR_API_KEY}`,
'Idempotency-Key': crypto.randomUUID(),
'Content-Type': 'application/json',
},
body: JSON.stringify({
"prompt": "She is holding the serum next to her face, soft window light",
"character_id": "Qx8p2LmN4vRt",
"product_id": "Pm3kT9aQ",
"aspect_ratio": "4:5",
"resolution": "2K"
}),
})
const data = await response.json()
if (!response.ok) throw new Error(`${data.error.code}: ${data.error.message}`)import os, uuid
import requests
response = requests.post(
"https://api.oriorai.com/v1/images",
headers={"Authorization": f"Bearer {os.environ['ORIOR_API_KEY']}", "Idempotency-Key": str(uuid.uuid4())},
json={
"prompt": "She is holding the serum next to her face, soft window light",
"character_id": "Qx8p2LmN4vRt",
"product_id": "Pm3kT9aQ",
"aspect_ratio": "4:5",
"resolution": "2K",
},
timeout=60,
)
response.raise_for_status()
data = response.json()QuickstartCreate a key and generate your first image in five minutes.API referenceEvery endpoint, parameter and response, with code in cURL, Node.js and Python.Pricing & creditsWhat each request costs, how refunds work and how to cap spend.WebhooksGet notified when generations finish or posts are published.
What you can build
| Capability | Endpoints | Highlights |
|---|---|---|
| Images | POST /images | Prompt, character identity, scene reference, product placement, tagged references; 1K–4K; 10 aspect ratios. |
| Videos | POST /videos | 11 models including Seedance 2.5, Kling 3.0 (and Motion Control), Veo 3, Gemini Omni, MiniMax H3, Wan 2.6 and Grok Imagine. |
| Characters | /characters | Consistent people from three photos or a preset portrait, with a voice. |
| Products | /products | Products reproduced faithfully (label, shape and colour) inside any generation. |
| Social publishing | /social/* | Connect Instagram, TikTok, YouTube, Threads and X accounts and publish or schedule generations. |
| Events | /webhooks | Signed webhooks for finished generations, published posts and low balance. |
API basics
- Base URL:
https://api.oriorai.com/v1. All requests use HTTPS and JSON. - Authentication:
Authorization: Bearer orior_live_…with a key from Dashboard → Developers. See Authentication. - Writes are idempotent: every
POST,PATCHandDELETEcarries anIdempotency-Key, so retries never charge twice. See Idempotency. - Asynchronous generation: image and video requests return
202with a generation you poll or receive by webhook. - Conventions: snake_case fields, timestamps in Unix milliseconds, IDs with type prefixes (
gen_,upl_,pst_,whk_), cursor pagination withnext_cursor. - Errors share one shape with a stable
codeand arequest_idfor support. See Errors. - Machine-readable spec: OpenAPI 3.1, to generate a typed client in any language.
How a request works
Lifecycle
POST /v1/images ──► 202 { id: "gen_…", status: "queued", credits: 2 }
│ credits are reserved
▼
processing ← analysis, prompt writing, generation, automatic fallbacks
│
┌───────────┴───────────┐
▼ ▼
completed failed
result.url (permanent) error.code · credits refunded
│ │
└──── webhook: generation.completed / generation.failedEvery generation also records a timeline of stages that failed and how the pipeline recovered, so you can see why a result took longer or why it failed.
Requirements
- An Orior account on the Influencer or Agency plan. Creator and Free plans cannot create API keys; if a plan ends, its keys stop working immediately.
- Credits in the account. API requests cost 2× the app price. See Pricing.
- Throughput within your plan: 10 parallel generations (~5 images/min) on Influencer, 20 (~10/min) on Agency. See Rate limits. Higher limits on request.
- A server to call from. Never ship API keys in browsers or mobile apps.
Using Orior for a team? Team members’ keys spend the team owner’s credits, and the owner’s plan decides access and limits.