TL;DR — Sign up, copy your test key, and POST one request with an
Idempotency-Keyand anend_user_id. Poll thestatus_urluntil the run is final.
Run your first style in three steps. Calls go from your server to https://api.wandura.ai with an API key.
1. Sign up
Sign up with your email. You get a personal account, a Test product with a test key, and a My app product for live runs.
2. Get a key
Your test key (wdr_test_…) is shown once when you sign up. Test keys return a sample result for $0, so you can build the whole integration before adding money. Live keys (wdr_live_…) run for real and draw from the product wallet. Keep keys on your server:
export WANDURA_API_KEY=wdr_test_...3. Send your first request
Every submit needs an Idempotency-Key header and an end_user_id (the person in your app) in the body.
curl -X POST https://api.wandura.ai/v2/styles/sty_ghibli_portrait \
-H "Authorization: Bearer $WANDURA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"lane": "priority", "end_user_id": "user_123", "inputs": {"subject": "a girl smiling at the camera"}}'With the SDKs:
import { Wandura } from '@wandura/sdk';
const wandura = new Wandura(); // reads WANDURA_API_KEY
const run = await wandura.runs.createAndWait('sty_ghibli_portrait', {
lane: 'priority',
end_user_id: 'user_123',
inputs: { subject: 'a girl smiling at the camera' },
});
console.log(run.status, run.output?.[0]?.url);from wandura import Wandura
wandura = Wandura() # reads WANDURA_API_KEY
run = wandura.runs.create_and_wait("sty_ghibli_portrait", {
"lane": "priority",
"end_user_id": "user_123",
"inputs": {"subject": "a girl smiling at the camera"},
})
print(run["status"], run.get("output"))The response is a run with request_id, status_url and cancel_url. Poll status_url or get a signed webhook when it finishes.
Poll for the result
curl https://api.wandura.ai/v2/runs/run_Qk2m9XaB7Lc4 -H "Authorization: Bearer $WANDURA_API_KEY"Priority: start at 2 s, multiply by 1.5, cap at 10 s, add 0–0.5 s of random jitter. Relax: 10 s up to 60 s. Final statuses: completed, failed, nsfw, canceled.
Next
- Concepts: runs, lanes, free runs, webhooks, limits, idempotency, end-user ID.
- Styles reference: every style with its inputs and price.
- SDKs: official JavaScript and Python clients that do all of this for you.
- Building with an AI agent? Give it
https://api.wandura.ai/v2/openapi.json.
Updated 14 Oct 2026 · Change history (1)