Quickstart
Deze gids brengt je van een API sleutel naar een afgewerkte MP4 op schijf. Je hebt een account nodig op het Agency abonnement en een paar minuten terwijl de video wordt gerenderd.
-
Haal een API sleutel
Open in de app Account > API sleutels, maak een sleutel aan en kopieer die. Sla het vervolgens op in een omgevingsvariabele zodat het buiten je code blijft:
Terminal window export REIGNITER_API_KEY="emp_..."Zie Authenticatie voor details.
-
Controleer de sleutel
Bel
GET /v1/me. Een200betekent dat de sleutel werkt. De reactie toont ook je kredietsaldo.Terminal window curl https://reigniter.ai/v1/me \-H "Authorization: Bearer $REIGNITER_API_KEY"const BASE = 'https://reigniter.ai';const headers = { Authorization: `Bearer ${process.env.REIGNITER_API_KEY}` };const res = await fetch(`${BASE}/v1/me`, { headers });console.log(res.status, await res.json());import os, requestsBASE = "https://reigniter.ai"headers = {"Authorization": f"Bearer {os.environ['REIGNITER_API_KEY']}"}res = requests.get(f"{BASE}/v1/me", headers=headers)print(res.status_code, res.json()){"user_id": "3f1c2a9e-8b7d-4c1e-9f0a-2d6b5e4c3a21","name": "Sam","credits_remaining": 42} -
Start een video
Roep
POST /v1/renderaan met eenbrief. Reigniter plant de scènes en start de rendering. Stuur eenIdempotency-Keymet een verse waarde, zodat een netwerkpoging dezelfde video niet twee keer kan starten.Terminal window curl https://reigniter.ai/v1/render \-H "Authorization: Bearer $REIGNITER_API_KEY" \-H "Content-Type: application/json" \-H "Idempotency-Key: $(uuidgen)" \-d '{"brief": "A 20 second advert for Northwind Coffee, a small-batch roaster. Warm, early-morning mood. End on the line: Roasted this week, at your door by Friday.","kind": "ad","duration_sec": 20,"aspect": "9:16","quality": "draft"}'import { randomUUID } from 'node:crypto';const res = await fetch(`${BASE}/v1/render`, {method: 'POST',headers: {...headers,'Content-Type': 'application/json','Idempotency-Key': randomUUID(),},body: JSON.stringify({brief: 'A 20 second advert for Northwind Coffee, a small-batch roaster. Warm, early-morning mood. End on the line: Roasted this week, at your door by Friday.',kind: 'ad',duration_sec: 20,aspect: '9:16',quality: 'draft',}),});const job = await res.json();if (res.status !== 202) throw new Error(`${res.status} ${job.code}: ${job.error}`);console.log(job.job_id);import uuidres = requests.post(f"{BASE}/v1/render",headers={**headers, "Idempotency-Key": str(uuid.uuid4())},json={"brief": "A 20 second advert for Northwind Coffee, a small-batch roaster. ""Warm, early-morning mood. End on the line: ""Roasted this week, at your door by Friday.","kind": "ad","duration_sec": 20,"aspect": "9:16","quality": "draft",},)job = res.json()if res.status_code != 202:raise RuntimeError(f"{res.status_code} {job.get('code')}: {job['error']}")print(job["job_id"])Je krijgt
202 Accepteden eenjob_id:{"job_id": "7d2e4b10-5c3a-4f8e-a1b2-9c0d8e7f6a54","status": "starting","title": "Northwind Coffee, at your door by Friday","scenes": 4,"credits_used": 12,"watermarked": false,"poll_url": "/v1/job/7d2e4b10-5c3a-4f8e-a1b2-9c0d8e7f6a54","note": "Render started. Poll poll_url, or subscribe to video.completed via POST /api/webhooks/hooks."} -
Wacht tot het werk klaar is
Poll
GET /v1/job/{id}elke paar seconden totdatstatussucceeded,failedofcancelledis. Een rendering duurt meestal enkele minuten.Terminal window JOB_ID="7d2e4b10-5c3a-4f8e-a1b2-9c0d8e7f6a54"while true; doJOB=$(curl -s "https://reigniter.ai/v1/job/$JOB_ID" \-H "Authorization: Bearer $REIGNITER_API_KEY")STATUS=$(echo "$JOB" | jq -r .status)echo "$STATUS $(echo "$JOB" | jq -r .progress)%"case "$STATUS" in succeeded|failed|cancelled) break ;; esacsleep 10doneecho "$JOB"const FINAL = new Set(['succeeded', 'failed', 'cancelled']);let result;while (true) {const res = await fetch(`${BASE}/v1/job/${job.job_id}`, { headers });result = await res.json();console.log(result.status, `${result.progress}%`);if (FINAL.has(result.status)) break;await new Promise((r) => setTimeout(r, 10_000));}if (result.status !== 'succeeded') throw new Error(result.error ?? result.status);import timeFINAL = {"succeeded", "failed", "cancelled"}while True:result = requests.get(f"{BASE}/v1/job/{job['job_id']}", headers=headers).json()print(result["status"], f"{result['progress']}%")if result["status"] in FINAL:breaktime.sleep(10)if result["status"] != "succeeded":raise RuntimeError(result["error"] or result["status"])Een afgerond werk ziet er zo uit:
{"job_id": "7d2e4b10-5c3a-4f8e-a1b2-9c0d8e7f6a54","status": "succeeded","progress": 100,"video_url": "https://cdn.example.com/exports/7d2e4b10.mp4","error": null}In plaats van peilingen kun je je abonneren op een webhook op
video.completed. -
Download de video
video_urlis een directe link naar de MP4. Download het en sla het aan jouw kant op.Terminal window curl -L -o northwind.mp4 "$(echo "$JOB" | jq -r .video_url)"import { writeFile } from 'node:fs/promises';const video = await fetch(result.video_url);await writeFile('northwind.mp4', Buffer.from(await video.arrayBuffer()));video = requests.get(result["video_url"])video.raise_for_status()with open("northwind.mp4", "wb") as f:f.write(video.content)
Als er iets misgaat
Section titled “Als er iets misgaat”401: controleer de sleutel en hetBearervoorvoegsel. Zie Authenticatie.402: de rekening staat niet op het Agency plan of heeft geen tegoeden meer. Leescode.422 BRAND_REQUIREDofNO_ANCHOR, of400 PRESENTER_REQUIRED: de render heeft een merk, een productfoto of een presentator nodig. Zie Video’s maken.429: rustig aan. Zie Grenzen.
Elke status en code staat vermeld in Fouten.
Volgende stappen
Section titled “Volgende stappen”- Video’s maken: merkkits, productfoto’s, scèneplannen en trainingsvideo’s.
- Webhooks: krijg een ondertekende callback zodra een video klaar is.
- Maak renderreferentie: elk veld.