Skip to content

VanceAI Open API documentation

VanceAI API

概要

VanceAI の画像・動画 AI 処理を自社アプリから直接実行できます。単一の API キー、両メディアタイプに共通の統一ジョブ API、そしてストレージ・アップロード・スケジューリングの詳細を隠したわかりやすいツール名を提供します。

できること

API は VanceAI の処理エンジンを、小さく安定した REST エンドポイント群として公開します。ファイルまたは URL でジョブを送信し、完了をポーリングして結果をダウンロードします。画像動画の両ツールは同じ /v1/jobs リソース配下にあり、選んだ tool がメディアタイプと処理内容を決めます。

メディアツールの例
画像アップスケール、シャープ化、ノイズ除去、背景除去、復元、カートゥーン化、証明写真
動画アップスケール、SDR→HDR、顔補正

ベース URL

すべての API リクエストの送信先:

text
https://cloud-vanceai.vanceai.com/api/v1

すべてのレスポンスは application/json です。すべてのリクエストは API キーで認証する必要があります — 認証を参照してください。

仕組み

API は完全に非同期で、3 つのステップで構成されます:

text
POST /v1/jobs            → returns a job_id immediately (status: "queued")
GET  /v1/jobs/{id}       → poll until status is "succeeded" or "failed"
GET  /v1/jobs/{id}/result → fetch a fresh, never-expiring download link

POST はアップロードや処理中にブロックしません。リクエストを検証してジョブを予約し、数ミリ秒で job_id を返します。その後はバックグラウンドワーカーがアップロード・処理・結果を担うため、数ギガバイトの動画でも HTTP タイムアウトに達することなく処理できます。

主要な概念

概念概要
ジョブとライフサイクル処理の単位。POST で作成し GET でポーリングします。ライフサイクルは queued → processing → succeeded / failed / canceled。
ツールメディアタイプと処理を選択する、わかりやすく安定した名前(例:upscale、video_upscale)。
クレジットと課金処理はクレジットを消費します。ジョブ開始時に予約(凍結)され、失敗・キャンセル時には全額返還されます。
API キーの管理sk_live_ キーはアカウントを識別します。アカウントのダッシュボードで作成・無効化します。

v1 はポーリングのみ

v1 に Webhook はありません — 完了は GET /v1/jobs/{id} をポーリングして確認します。Webhook コールバックは v1.1 で予定しています。v1 の全範囲は変更履歴を参照してください。

次のステップ

はじめに

認証

VanceAI API は API キーでリクエストを認証します。キーはアカウントの権限を持つため、秘密に保管してください。

API キー

キーは次のような形式で、常に sk_live_ プレフィックスで始まります:

text
sk_live_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6

キーは VanceAI アカウントのダッシュボードで作成・無効化します。完全なキーは作成時に一度だけ表示されます — 安全な場所に保管してください。紛失した場合はキーを無効化して新規作成します。API キーの管理を参照してください。

リクエストの認証

すべてのリクエストで、キーを Authorization ヘッダーに bearer トークンとして送信します:

text
Authorization: Bearer sk_live_a1b2c3d4e5f6...

例えば、クレジット残高を確認するには:

bash
curl https://cloud-vanceai.vanceai.com/api/v1/credits \
  -H "Authorization: Bearer sk_live_a1b2c3d4e5f6..."

キーを秘密に保つ

  • sk_live_ キーをクライアントコード、モバイルアプリ、公開リポジトリで決して露出しないでください。
  • API 呼び出しは自社バックエンドからのみ行ってください。
  • アプリや環境ごとに別々のキーを使えば、他に影響を与えずに 1 つだけ無効化できます。

認証エラー

キーが欠落・不正・無効化されている場合は、安定したエラーコードとともに 401 を返します:

json
{
  "error": {
    "code": "invalid_api_key",
    "message": "The API key provided is invalid or has been disabled.",
    "type": "auth"
  }
}

コードの全リストと処理方法はエラーを参照してください。

はじめに

クイックスタート

このガイドでは画像アップスケールジョブの全工程(送信・ポーリング・ダウンロード)を解説します。数分で完了し、curl のみを使用します。

1. ジョブを送信する

画像を tool とその config とともに multipart form data で送信します。ファイルを直接アップロード(最大 200 MB)するか、公開 image_url を渡せます。

ファイルをアップロード
curl https://cloud-vanceai.vanceai.com/api/v1/jobs \
  -H "Authorization: Bearer sk_live_..." \
  -F [email protected] \
  -F tool=upscale \
  -F 'config={"scale":4,"face_enhance":true}' \
  -F output_format=jpg

または JSON ボディで URL を送信します:

URL を送信
curl https://cloud-vanceai.vanceai.com/api/v1/jobs \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "image_url": "https://example.com/photo.jpg",
    "tool": "upscale",
    "config": { "scale": 4, "face_enhance": true },
    "output_format": "jpg"
  }'

レスポンスは即座に job_idqueued ステータスを返します:

json
{
  "job_id": "job_3f2a9c...",
  "status": "queued",
  "tool": "upscale",
  "media": "image",
  "credits_estimated": 1.0,
  "credits_charged": 0,
  "created_at": "2026-06-11T08:30:00Z"
}

2. 完了までポーリングする

statussucceeded(または failed)になるまで GET /v1/jobs/{job_id} をポーリングします。画像なら約 2 秒間隔で十分です。

bash
curl https://cloud-vanceai.vanceai.com/api/v1/jobs/job_3f2a9c... \
  -H "Authorization: Bearer sk_live_..."
json
{
  "job_id": "job_3f2a9c...",
  "status": "succeeded",
  "progress": 100,
  "tool": "upscale",
  "result_url": "https://.../preview?sign=...",
  "result": { "width": 4000, "height": 3000, "size": 2451234 },
  "error": null,
  "created_at": "2026-06-11T08:30:00Z",
  "finished_at": "2026-06-11T08:30:42Z"
}

3. 結果をダウンロードする

ステップ 2 の result_url は署名付きリンクで、いずれ期限切れになります。期限切れにならないリンクには、必要時に再署名する result エンドポイントを呼び出します:

bash
curl -L https://cloud-vanceai.vanceai.com/api/v1/jobs/job_3f2a9c.../result \
  -H "Authorization: Bearer sk_live_..." \
  -o upscaled.jpg

これが全フロー

送信 → ポーリング → ダウンロードはすべてのツールで共通で、変わるのは tool 名と config だけです。動画は最初に 1 ステップ増えます:二段階アップロードでファイルをアップロードし、画像の代わりにその upload_id を渡します。全リストはツールページを参照してください。

ガイド

ジョブとライフサイクル

ジョブは 1 つの処理タスク(画像または動画)を表します。作成し、ステータスをポーリングして結果をダウンロードします。本ページは /v1/jobs リソースの完全リファレンスです。

ジョブのライフサイクル

すべてのジョブは次のステータスを遷移します:

status意味
queued受理されワーカーを待っている状態。バックログによっては少し滞留することがあります。
processing処理中。phase フィールドがサブステップを示します。
succeeded完了。result_urlresult が利用可能です。
failed失敗。error に安定したコードが入ります。
canceledあなたによりキャンセル。予約済みクレジットは返還されます。

processing 中は phase フィールドで段階を絞り込めます:uploadingsyncingprocessing。数値の progress(0–100)は phaseprocessing になって初めて意味を持ち、アップロード/同期中は 0 のままです。大きな動画ではアップロード段階が数分かかることがあります — 「止まっているか」は progress ではなく phase で判断してください。

動画をアップロードする

動画は 2 ステップでストレージへ直接アップロードします。バイトが API を経由しないため、数ギガバイトのファイルでもリクエストサイズに制限されません。まず POST /v1/uploads を呼び出して使い捨ての署名付きアップロード URL を取得し、そこへファイルを PUT します。画像はこの手順を省き、ジョブ作成時にインラインでアップロードします(下記参照)。動画の multipart 直接アップロードには対応していません。代替として source_url は引き続き利用できます。

POST/v1/uploads

リクエストパラメータ

FieldTypeDescription
file_namerequiredstring動画拡張子を含むファイル名(例:clip.mp4)。ストレージキーとコンテンツタイプの導出に使われます。
file_sizenumber任意。ファイルサイズ(バイト単位)。指定した場合、単一アップロード上限(レスポンスの max_bytes、約 4.9 GB)を超えるとリクエストは即座に失敗します。指定しない場合でもアップロード時に上限が適用されます。
content_typestring任意の MIME タイプ(例:video/mp4)。省略時は拡張子から推測されます。

bash
curl https://cloud-vanceai.vanceai.com/api/v1/uploads \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "file_name": "clip.mp4",
    "file_size": 734003200,
    "content_type": "video/mp4"
  }'

レスポンス — 201 Created

json
{
  "upload_id": "upl_8f3b1c2a...",
  "put_url": "https://<bucket>.r2.cloudflarestorage.com/...&X-Amz-Signature=...",
  "expires_at": "2026-06-13T08:30:00Z",
  "max_bytes": 5261334937
}

put_url は 24 時間有効な署名付き URL です。認証ヘッダーなしで、ファイルだけを 1 回の PUT でアップロードします:

ファイルをアップロード
curl -X PUT --upload-file clip.mp4 \
  -H "Content-Type: video/mp4" \
  "https://<bucket>.r2.cloudflarestorage.com/...&X-Amz-Signature=..."

PUT が成功したら、ファイルの代わりに upload_id を渡してジョブを作成します — ジョブを作成するを参照。各 upload_id は 1 回限り使用できます。

bash
curl https://cloud-vanceai.vanceai.com/api/v1/jobs \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "upload_id": "upl_8f3b1c2a...",
    "tool": "video_upscale",
    "config": { "scale": 2, "codec": "h264" }
  }'
レスポンス — 202 Accepted
{
  "job_id": "job_3f2a9c...",
  "status": "queued",
  "tool": "video_upscale",
  "media": "video",
  "credits_estimated": 0,
  "credits_charged": 0,
  "created_at": "2026-06-11T08:30:00Z"
}

サイズ上限と有効期限

1 回の PUT は最大約 4.9 GB です(正確なバイト上限は max_bytes)。より大きいファイルのアップロードを要求すると 413 file_too_large を返します。署名付き URL は 24 時間後に失効し、未使用の upload_idupload_expired となるため、新しく取得し直す必要があります。

ジョブを作成する

POST/v1/jobs

メディアの指定方法はタイプによって異なります。画像:ファイルの直接アップロード(multipart)または公開 URL。動画:上記のアップロード手順で得た upload_id、または公開 source_urltool がメディアタイプと処理を選択します。

リクエストパラメータ

FieldTypeDescription
image / filefile画像のみ:バイナリアップロード(multipart)。file はエイリアスとして利用可能です。動画には upload_id を使用します。
upload_idstring動画のみ:ファイルをアップロードした後に POST /v1/uploads が返す upload_id。1 回限り使用可能です。
image_url / source_urlstring取得対象の公開アクセス可能な URL(画像または動画)。ファイル/upload_id の代わりに使用します。source_url はエイリアスとして利用可能です。
toolrequiredstring処理内容(例:upscalevideo_upscale)。ツールを参照。
configobjectツール固有のオプション(画像と動画でオプションは異なります)。ツールを参照。
output_formatstring画像のみ:jpg(既定)、pngwebp。動画では無視されます(config.codec を使用)。

冪等性

Idempotency-Key ヘッダーを渡すと、ジョブを重複させずに作成リクエストを安全に再試行できます。レート制限と冪等性を参照。

bash
curl https://cloud-vanceai.vanceai.com/api/v1/jobs \
  -H "Authorization: Bearer sk_live_..." \
  -H "Idempotency-Key: a-unique-string" \
  -F [email protected] \
  -F tool=upscale \
  -F 'config={"scale":4,"face_enhance":true}'

レスポンス — 202 Accepted

json
{
  "job_id": "job_3f2a9c...",
  "status": "queued",
  "tool": "upscale",
  "media": "image",
  "credits_estimated": 1.0,
  "credits_charged": 0,
  "created_at": "2026-06-11T08:30:00Z"
}

レスポンスはクレジットが課金される前に返ります(credits_charged0)。credits_estimated は事前見積もりで、確定額はジョブが processing に達した時点で反映されます。クレジットと課金を参照。

大きいファイルと URL

画像の直接アップロードは 200 MB が上限で、それより大きい画像は 413 file_too_large を返します — source_url に切り替えてください。動画は multipart を一切経由しません — アップロード手順(1 回の PUT で最大約 4.9 GB)でアップロードするか、source_url を渡します。サーバー側の URL 取得は SSRF 対策が施されており、http/https のみ許可、プライベート/内部ネットワーク宛先は拒否されます。

ジョブを取得する

GET/v1/jobs/{job_id}

ジョブの現在のステータスを返します。ジョブが終了ステータスに達するまでポーリングします。

レスポンス — 200(processing)

json
{
  "job_id": "job_3f2a9c...",
  "status": "processing",
  "phase": "uploading",
  "progress": 0,
  "tool": "video_upscale",
  "media": "video",
  "result_url": null,
  "result": null,
  "error": null,
  "created_at": "2026-06-11T08:30:00Z",
  "finished_at": null
}

レスポンス — 200(succeeded)

json
{
  "job_id": "job_3f2a9c...",
  "status": "succeeded",
  "progress": 100,
  "tool": "upscale",
  "result_url": "https://.../preview?sign=...",
  "result": { "width": 4000, "height": 3000, "size": 2451234 },
  "error": null,
  "created_at": "2026-06-11T08:30:00Z",
  "finished_at": "2026-06-11T08:30:42Z"
}

result の形は画像で { width, height, size }、動画で { width, height, duration, size, codec } です。result_url は署名付きリンクで期限切れになります — 恒久リンクには下記の result エンドポイントを使用してください。

結果を取得する

GET/v1/jobs/{job_id}/result

新しく署名された結果 URL に(302)リダイレクトします — 呼び出すたびに再署名されるため、リンクは期限切れになりませんresult_url をキャッシュするのではなく、出力をダウンロードする際は常にこれを使用してください。

bash
curl -L https://cloud-vanceai.vanceai.com/api/v1/jobs/job_3f2a9c.../result \
  -H "Authorization: Bearer sk_live_..." \
  -o result.jpg

結果がまだ準備できていない場合

ジョブ成功直後、結果オブジェクトの同期に少し時間がかかることがあります。エンドポイントは内部的に再試行しますが、非常に大きい動画では一時的に 202 result_not_ready を返すことがあります — 少し待って再試行してください。結果のダウンロードで追加クレジットがかかることはありません。

ジョブをキャンセルする

POST/v1/jobs/{job_id}/cancel

まだ queued または processing のジョブをキャンセルします。主に長時間の動画ジョブで有用です。予約済みクレジットは全額返還されます。

レスポンス — 200
{ "job_id": "job_3f2a9c...", "status": "canceled" }

すでに succeededfailedcanceled のジョブは 409 not_cancelable を返します。

ジョブを削除する

DELETE/v1/jobs/{job_id}

ジョブレコードと関連する結果を削除します — プライバシーやコンプライアンス目的で処理済みアセットを整理するのに便利です。ジョブがまだ進行中の場合は、先にキャンセルされ(クレジットは返還され)ます。

レスポンス — 200
{ "job_id": "job_3f2a9c...", "deleted": true }
  • すでに削除済みのジョブを削除しても 200 { "deleted": true } を返します(冪等)。
  • 削除できるのは自分のアカウントのジョブのみです。それ以外は 404 job_not_found を返します。

ガイド

ツール

POST /v1/jobs に渡す tool が、メディアタイプと処理の両方を選択します。画像ツールは単純な名前、動画ツールは video_ プレフィックス付きです。

画像ツール

画像ツールは config オブジェクトを取ります。face_enhance オプション(真偽値)はほとんどのツールで任意です。リクエストに output_format を設定して jpg / png / webp を選びます。

toolconfig オプション
upscalescale(2 / 4 / 8、既定 2)、face_enhance
sharpenface_enhance
denoiseface_enhance
remove_bgnone
restoreface_enhance
cartoonizestyle, face_enhance
passport_photonone
customprompt, face_enhance
config の例 — upscale
{ "scale": 4, "face_enhance": true }

バリデーション

upscale.scale は 2・4・8 のいずれか、custom には空でない prompt が必要です。不正な値は 400 invalid_parameter を返します。元画像の寸法を送る必要はありません — アップロード時に検出され、目標サイズの計算に使われます。

動画ツール

動画ツールはエンドツーエンドで処理されます(v1 にプレビュークリップモードはありません)。qualityhigh / medium / low)と codech264 / h265)のオプションは video_hdrvideo_face_enhance にのみ適用されます。video_upscale では出力エンコードがアップスケールエンジンによって決定されるため、quality / codec は使用されません(指定しても効果はありません)。

toolconfig オプション
video_upscalescale(2 / 4、既定 2)、fps
video_hdrqualitycodechdr_color_gamut
video_face_enhanceface_enhanced_modequalitycodec
config の例 — video_upscale
{ "scale": 2 }

元動画の寸法はサーバー側で計測されます

正確な課金のため、サーバーはアップロード後に動画の実際の幅・高さ・長さ・フレームレートを(ffprobe で)計測します — クライアント申告値は信頼しません。事前のクレジット見積もりを得るために configsource_width / source_height / duration を任意で含められますが、確定額は常に計測値に基づきます。出力解像度には上限があり(長辺 4096・短辺 2160)、超えるとクレジットが課金される前に resolution_limit_exceeded でジョブが失敗します。

未対応のツール

存在しないツール、または未提供のツール(動画の translatecolorizesubtitle は v1 にありません)を要求すると 400 unsupported_tool を返します。

ガイド

クレジットと課金

処理はアカウントのクレジットを消費します。クレジットはジョブ開始時に予約され、成功時に確定、失敗・キャンセル時に全額返還されます。

課金の仕組み

ジョブのライフサイクルにおけるクレジットの流れ:

段階クレジットに起こること
ジョブ作成(queuedまだ課金されません — credits_charged0
ワーカーが処理を開始クレジットが予約(凍結)されます。残高が不足していると、ジョブは insufficient_credits で失敗します。
ジョブ succeeded予約が確定し、クレジットが差し引かれます。
ジョブ failed / canceled予約が解放され、クレジットは全額返還されます。
結果のダウンロード無料 — 再課金されません。

送信時の事前チェック

ジョブを POST すると、API はキュー投入前に残高を簡易チェックします。見積もり費用が利用可能残高をすでに超えている場合は、即座に 402 insufficient_credits を返します — 大きなアップロードが無駄になりません。確定的な予約はワーカー開始時に行われます。

残高を取得する

GET/v1/credits
bash
curl https://cloud-vanceai.vanceai.com/api/v1/credits \
  -H "Authorization: Bearer sk_live_..."
Response: 200
{ "balance": 999.8, "used": 234.2, "frozen": 12.5 }
FieldTypeDescription
balancenumber今すぐ使えるクレジット(凍結分は除外済み)。
usednumber完了したジョブが消費したクレジット。
frozennumber進行中のジョブが現在予約しているクレジット(まだ確定・解放されていない)。

クレジット量は小数です(一部の処理は 1 クレジット未満を消費します)。

ガイド

レート制限と冪等性

プラットフォームは 2 つの制限で保護されます:キーごとのリクエストレートと、アカウントごとの同時ジョブ数上限。冪等キーを使うとジョブ作成を安全に再試行できます。

リクエストレート(キーごと)

各 API キーにはリクエストレート制限があります。超過すると、現在のウィンドウを示すヘッダーとともに 429 rate_limited を返します:

text
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1718093460

レスポンスには Retry-After ヘッダー(秒)が含まれることもあります — 再試行前にこれに従ってください。

同時実行(アカウントごと)

1 つの動画ジョブが数分かかることがあるため、リクエストレートだけでは不十分です。アカウントが同時に進行(queued または processing)できるジョブ数にも上限があり、通常は画像より動画の方が小さく設定されます。

上限を超えて送信すると 429 concurrency_limit_exceeded を返します。進行中のジョブがいくつか完了するのを待ってから再試行してください。カウントはアカウント単位で集計されるため、複数キーに分散しても回避できません。

ポーリングの指針

v1 に Webhook はないため GET /v1/jobs/{id} をポーリングします。API に過負荷をかけないために:

  • 推奨間隔:画像は約 2 秒動画は 5~10 秒
  • Retry-After ヘッダーがあれば従ってください — 次回ポーリングのヒントです。
  • ジョブが終了ステータス(succeeded / failed / canceled)に達したらポーリングを停止します。

冪等性

ネットワークの不調で POST /v1/jobs が成功したか不明になることがあります。安全に再試行するには、一意の Idempotency-Key ヘッダーを送信します:

bash
curl https://cloud-vanceai.vanceai.com/api/v1/jobs \
  -H "Authorization: Bearer sk_live_..." \
  -H "Idempotency-Key: 8f3b1c2a-...-unique" \
  -F [email protected] \
  -F tool=upscale
  • 同じキーを再送すると元のジョブが返ります — 重複ジョブも二重課金もありません。
  • 論理的なリクエストごとに新しいキーを生成します(UUID が適しています)。
  • 異なる toolconfig で同じキーを再利用すると 409 idempotency_conflict を返します。

キーの有効期間

キーはそのジョブが存在する限り紐付いたままです。ジョブを削除するとキーは解放されます。別途の有効期限はありません。

ガイド

エラー

エラーは安定したコードを持つ一貫した JSON 形式で返り、分岐に使えます。2 種類あります:リクエストエラー(HTTP エラーステータスで返る)と、ジョブエラー(成功した HTTP ポーリングで status: failed として返る)。

エラー形式

json
{
  "error": {
    "code": "insufficient_credits",
    "message": "Your account does not have enough credits for this operation.",
    "type": "billing"
  }
}

code安定した文字列です — これで分岐します。message は人間可読で変わる可能性があります。type は大分類で、authbillingvalidationprocessingrate_limitserver のいずれかです。

リクエストエラー(HTTP ステータス)

リクエストが即座に拒否されると、対応する HTTP ステータスと error ボディが返ります:

HTTPcode発生条件
401invalid_api_keyAPI キーが欠落・無効・無効化されている。
401unauthorized認証に失敗した。
402insufficient_credits送信時の事前残高チェックに失敗した。
400invalid_parameterパラメータが欠落または不正。
400unsupported_toolツールが存在しないか v1 で未提供。
403geo_restrictedお住まいの地域でブロックされている。
404job_not_foundアカウントに該当ジョブがない。
413file_too_large画像の直接アップロードが 200 MB 超、または動画アップロードが単一 PUT 上限(約 4.9 GB)超。
415unsupported_format直接アップロードが未対応形式。
409not_cancelableジョブはすでに終了状態。
409idempotency_conflict同じ冪等キーを異なる tool/config で使用。
404upload_not_foundupload_id が存在しないか、別アカウントのもの。
409upload_already_consumedupload_id は別のジョブで使用済み(1 回限り)。
410upload_expiredupload_id が使用前に失効(24 時間)— 新しく取得し直す。
202result_not_ready結果がまだ同期中 — 少し待って /result を再試行。
429rate_limitedキーごとのリクエストレート超過。
429concurrency_limit_exceededアカウントの進行中ジョブが多すぎる。
503service_unavailable下流の依存先が一時的に利用不可 — 再試行。
500internal_error予期しないサーバーエラー。

ジョブエラー(status: failed)

ジョブが*非同期に*失敗した場合、GET /v1/jobs/{id} のポーリングは status: "failed"error.code のコードを伴って HTTP 200 を返します。失敗ジョブで 5xx を期待しないでください — クエリ自体は成功しています。

`error.code`type発生条件
processing_failedprocessing処理エンジンがタスクを完了できなかった。
processing_timeoutprocessingジョブが最大処理時間を超過した(クレジット返還)。
file_too_largevalidation取得した source_url が 200 MB を超えた。
unsupported_formatvalidation取得した source_url の種別がツールに合致しなかった。
ssrf_blockedvalidationsource_url が許可されない(プライベート/内部)アドレスに解決された。
insufficient_creditsbilling確定予約の前に残高が消費された。
upload_incompletevalidationアップロード済みオブジェクトが存在しないか不完全 — ジョブ作成前にファイルが完全に PUT されていなかった。
resolution_limit_exceededvalidation出力解像度がエンジン上限(長辺 4096・短辺 2160)を超過。課金なし。

再試行

service_unavailable や一時的な 5xx は再試行可能(できればバックオフ付き)として扱ってください。billingauthvalidation エラーは恒久的として扱い、再試行ではなくリクエストを修正してください。

アカウント

API キーの管理

API キーは VanceAI アカウントのダッシュボードで作成・管理します。各キーはアカウントに属し、アカウントのクレジット残高から消費します。

キーを作成する

ダッシュボードで新しいキーを作成し、識別しやすい名前(例:my-app-prod)を付けます。sk_live_ で始まる完全なシークレットは、作成直後に一度だけ表示されます。

キーをすぐにコピーする

当社はキーのハッシュのみを保存し、平文は一切保存しません。作成ダイアログを閉じると、完全なキーは二度と取得できません。紛失した場合はキーを無効化して新規作成してください。

キーを表示する

ダッシュボードはキーを名前、ステータス、識別用の短いプレフィックス(例:sk_live_a1b2)、最終使用日時で一覧表示します。完全なシークレットは二度と表示されず、プレフィックスのみです。

キーを無効化する

キーの無効化は即座に有効になります — そのキーでの以降のリクエストは 401 invalid_api_key を返します。

  • 無効化は恒久的です。再有効化はできません。代わりに新しいキーを作成してください。
  • 管理できるのは自分のアカウントに属するキーのみです。

キーを安全にローテーションする

複数のアクティブキーを併用できるため、ローテーションはシームレスです:新しいキーを作成し、アプリを切り替え、トラフィックが移行したことを確認してから古いキーを無効化します。アプリや環境ごとに別のキーを使うと、漏洩時の影響範囲を限定できます。

リソース

バージョンと変更履歴

API は URL パスでバージョン管理されます。現行バージョンは v1 で、/api/v1 配下で提供されます。

v1 — 現行

最初の安定版には以下が含まれます:

  • 画像・動画共通の統一ジョブ APIPOST /v1/jobsGET /v1/jobs/{id}GET /v1/jobs/{id}/resultPOST /v1/jobs/{id}/cancelDELETE /v1/jobs/{id}GET /v1/credits
  • 8 つの画像ツール3 つの動画ツール(アップスケール、HDR、顔補正)。
  • 大きいファイル:画像の直接アップロードは最大 200 MB、動画は二段階直接アップロード、任意のメディアは source_url 経由(SSRF 対策付き)。
  • 事前クレジットチェックとバックグラウンドワーカーによる非同期処理
  • 失敗・キャンセル時に全額返還されるクレジット予約
  • 安定したエラーコードIdempotency-Key 対応、キーごとのレート制限とアカウントごとの同時実行制限。
  • 動画の二段階直接アップロードPOST /v1/uploads が署名付き URL を発行し、動画をストレージへ直接アップロード(1 回の PUT で最大約 4.9 GB)してリクエストサイズ制限を回避します。
  • 正確な動画課金 — サーバーが ffprobe で解像度・長さ・フレームレートを計測し、出力解像度をエンジン上限に対して事前チェックします。