クイックスタート
このガイドは API キーからディスク上の完成 MP4 まで案内します。 Agency プランのアカウントと、動画がレンダリングされるまでの数分間が必要です。
-
API鍵を手に入れてください
アプリ内で 「アカウント> API キー」を開き、キーを作成してコピーします。そして、それを環境変数に保存してコードから外します:
ターミナルウィンドウ export REIGNITER_API_KEY="emp_..."詳細は 認証 を参照してください。
-
鍵を確認しろ
GET /v1/meに電話してください。200はキーが機能することを意味します。応答にはクレジット残高も表示されます。ターミナルウィンドウ 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} -
動画を始めましょう
briefでPOST /v1/renderを呼び出します。Reigniterシーンを計画し、レンダリングを開始します。新しい値を付けたIdempotency-Keyを送信し、ネットワークのリトライで同じ動画を2回再生できないようにします。ターミナルウィンドウ 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"])202 Acceptedとjob_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."} -
仕事が終わるのを待て
statusがsucceeded、failed、またはcancelledになるまで数秒ごとにポーリングGET /v1/job/{id}します。レンダリングは通常数分かかります。ターミナルウィンドウ 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"])完成した作品はこんな感じです:
{"job_id": "7d2e4b10-5c3a-4f8e-a1b2-9c0d8e7f6a54","status": "succeeded","progress": 100,"video_url": "https://cdn.example.com/exports/7d2e4b10.mp4","error": null}ポーリングの代わりに、
video.completedにウェブフックを購読することができます。 -
ビデオをダウンロード
video_urlMP4への直接リンクです。ダウンロードして自分の側に保存してください。ターミナルウィンドウ 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)
もし何か問題が起きたら
Section titled “もし何か問題が起きたら”401:キーとBearerプレフィックスを確認してください 。認証を参照してください。402:その口座は Agency プランに含まれておらず、クレジットが切れています。codeを読んでください。422 BRAND_REQUIREDやNO_ANCHOR、または400 PRESENTER_REQUIRED:レンダリングにはブランド、製品写真、またはプレゼンターが必要です。「 動画作成」を参照してください。429:ゆっくり話をつけて。 「限界」を参照してください。
すべてのステータスと code は エラーズに記載されています。
今後のステップ
Section titled “今後のステップ”- 動画制作:ブランドキット、商品写真、シーンプラン、トレーニング動画。
- Webhooks:動画が準備できたら署名付きコールバックを得られます。
- レンダリング参照を作成してください:すべてのフィールド。