APIリファレンス

APIドキュメント

Vectorgramをアプリケーションに組み込みましょう。送信用、ポーリング用、ダウンロード用のエンドポイントが1つずつ。ジョブは設計上、非同期です。ベースURLはhttps://api.vectorgram.ai、認証はAuthorization: Bearer <api_key>です。キーは次のような形式ですvectorgram_sk_live_…。プレフィックスを意図的に省略なく表記しているため、古い.envで見つかったキーも、実際に試さずに特定できます。

新規アカウントでは、API変換を30日間25回無料で利用できます。フル品質、透かしなし。その後は、APIを含むプラン(Pro以上)が必要になり、呼び出しはそのプランの月間枠から消費されます。超過課金はないため、枠を使い切った後の呼び出しには402がリセット日時とともに返ります。GET /v1/accountは、両方の枠とそれぞれの残りを報告します。

クイックスタート

1:APIキーを取得

APIキー

読み込んでいます…

2:画像を送信

curl -X POST https://api.vectorgram.ai/v1/vectorize \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Idempotency-Key: 8f1b0c2e-0a1d-4f77-9c3a-2b6e5d4c1a90" \
  -F "file=@image.png" \
  -F "image_type=clipart" \
  -F "detail=high" \
  -F "gradients=smooth" \
  -F "smoothing=strong" \
  -F "retention=24h"

レスポンスは202 Acceptedで、ジョブはキューに投入された状態です。変換はまだ行われていません。同じリクエストを同じIdempotency-Keyで2回送信すると、2つ目を作る代わりに最初のジョブが返されます。使用済みのキーでファイルや設定を変更するのは409です。

3:ポーリング、またはWebhookで受信

GET /v1/jobs/job_abc123

{
  "id": "job_abc123",
  "status": "queued",
  "progress": 0,
  "queue_position": 3,
  "mode": "logo",
  "retention": "24h",
  "megapixels": 2.1,
  "created_at": "2026-08-03T10:30:00Z"
}

statusはqueued → processing → completed | failed | canceled | expiredのように遷移します。キューに入っている間は、実際のqueue_positionが返ります。でっち上げたカウントダウンではありません。処理中のprogressは、サイズの見積もりから補間された値で、ファイルが実際に存在するようになるまで95%で頭打ちになります。大きな画像には数分かかることもあります。常識的な間隔でポーリングするか、さらに良い方法としてWebhookを登録してください。

4:ダウンロード

{
  "id": "job_abc123",
  "status": "completed",
  "progress": 100,
  "download_url": "https://api.vectorgram.ai/v1/jobs/job_abc123/download",
  "completed_at": "2026-08-03T10:30:04Z",
  "expires_at": "2026-08-04T10:30:04Z"
}

download_urlが現れるのは結果が存在するようになってからです。同じベアラートークンが必要で、ファイルは添付としてストリーミングされます。retention=noneの場合、ファイルは提供と同時に削除されます。ダウンロードは一度だけ行ってください。

変換パラメータ

すべてのフィールドは、POST /v1/vectorizeへのmultipart form dataとして送ります。バッジ手動が付いた4つはトレース制御です。Pro、Studio、Agency、Enterpriseで利用できます。FreeとLiteでは、これらは拒否されずに受け入れられた後、既定値へ置き換えられます。そのため、常に送り続けるクライアントでも変換は完了します。得られるのは自動結果というだけです。

filePNG、JPEG、WebP、AVIF、BMPのいずれか、≤ 50 MB

必須。変換する画像です。ファイル名ではなくバイト列から判定されます。

image_typeauto · clipart · photo · scan · blueprint

画像の種類。既定はautoで、エンジンによる自動分類に任せます。

output_formatsvg

省略可。svgが唯一の値です。エンジンが書き出すのはSVGで、それを別の形式に変換する処理はありません。EPS、PNG、PDF、DXF、AIは、キューに入れて失敗させるのではなく、400 unsupported_output_formatで拒否されます。

retentionnone · 24h · 3d · 7d · 10d

結果の保持期間。既定は24h。noneは最初のダウンロード後に削除します。要求は拒否されず、プランの上限に丸められます。Freeでは要求しても結果を10日間保持することはできません。

batch_id任意の文字列

自分で決めるグルーピングキー。ジョブにそのまま返され、フィルターとしても使えます。画像1枚につき1リクエストを送ります。一括変換はProから(30ファイル、Studioで50、Agencyで100)。それ未満ではグループに保持できるのは1ファイルだけで、2つ目は400 batch_limit_exceededを返します。

folder_name任意の文字列

ダッシュボードで一括のファイルが置かれるフォルダの名前。省略可ですがbatch_idが必要です(ない場合は400 invalid_folder_name)。文字数はbatch_idと同じく128文字で、制御文字は使えません。最初に受け入れられたファイルがフォルダ名を決め、以降のファイルが名前を変えることはありません。省略した場合は、作成日を冠した名前が付きます。

detail手動low · medium · high

領域のマージを経て画像に残る情報の量。既定はhigh。1.3.0以降のエンジンでは最も緩いステップです。1〜100のスライダー値も受け付け、段階に振り分けられます。

gradients手動auto · smooth · stepped

グラデーションの処理。既定はsmooth。steppedとautoでは、エンジンのフラットな塗りがそのまま残ります。

smoothing手動off · light · strong · maximum

角の丸め。既定はstrong。本当の角は鋭さを保ち、ベクター化エンジンが誤って丸めた部分だけが丸まって返ります。0〜100のスライダー値も受け付け、段階に振り分けられます。

trace_style手動fill · centerline

エンジンが描くもの。既定はfill。すべての形状が塗りつぶしのアウトラインになります。centerlineは各線の中央に沿って1本の開いたストロークを描き(fill="none"、ストロークの色と幅を指定)、プロッター、レーザー彫刻機、CNCルーター、カッティングマシンがたどるのはこちらで、輪郭を2周する代わりに線1本につき1パスで済みます。線として扱うには太すぎる部分は、塗りつぶし形状のまま残ります。detail、gradients、smoothingは適用されず無視されます。不明な値には400を返します。

close_seamstrue · false

シームの閉じ。全プランで有効。既定はtrue。各塗りは隣の下に0.75 px回り込むため、2色の間に細い明るい線が現れません。falseにすると正確な分割になり、形状は重なりなく端から端まで接します(ジオメトリ編集用)。どちらの場合も形状は一切移動しません。centerlineでは無視されます。

エンドポイント

POST/v1/vectorize
GET/v1/jobs
GET/v1/folders
DELETE/v1/folders/{id}
GET/v1/jobs/{id}
GET/v1/jobs/{id}/download
DELETE/v1/jobs/{id}
POST/v1/jobs/{id}/report
GET/v1/account
GET/v1/keys
POST/v1/keys
DELETE/v1/keys/{id}
GET/v1/webhooks
POST/v1/webhooks
DELETE/v1/webhooks/{id}

生成されるリファレンス(あらゆるフィールド、あらゆるレスポンス形状)は、サービスが次の場所で公開しているSwagger UIです。/docs/swaggerOpenAPIドキュメントは/v3/api-docsにあります。

Webhook

ジョブは非同期で実行されます。大きなファイルでは数分かかることもあるため、ポーリングの代わりにWebhookを購読してください。エンドポイントはPOST /v1/webhooksで登録します。署名シークレットは作成時に一度だけ返され、その後は二度と表示されません。

processing.started
processing.completed
processing.failed
POST https://your-app.example/hooks/vectorgram
X-Vectorgram-Event: processing.completed
X-Vectorgram-Signature: sha256=<hmac of the raw body, hex>

{
  "id": "evt_9f2c…",
  "event": "processing.completed",
  "created_at": "2026-08-03T10:30:04Z",
  "data": { "job_id": "job_abc123", "status": "completed" }
}

署名の検証は、生のリクエストボディからエンドポイントのシークレットでHMAC-SHA256を計算し、定数時間で比較して行います。一致しない場合は未認証のリクエストとして扱ってください。配信は最低1回です。非2xxのレスポンスは指数バックオフで3回再試行されるため、ハンドラはidについてべき等にしてください。エンドポイントは公開アドレスに解決できなければなりません。これは登録時だけでなく、配信時にも再確認されます。

エラー

失敗はJSONとして返ります:{ "error": { "code": "…", "message": "…", "details": { … } } }。読むべきはcodeであり、メッセージではありません。メッセージは言い回しが変わることがあります。

400missing_file
400unreadable_file
400empty_file
400batch_limit_exceeded
400invalid_batch_id
400invalid_folder_name
401unauthorized
402quota_exhausted
402megapixels_exceeded
402high_detail_not_included
403forbidden
404not_found
409not_ready
409idempotency_key_reuse
409request_in_progress
410result_expired
413file_too_large
415unsupported_format
429too_many_active_jobs
429daily_fuse_tripped
503queue_full
503storage_full

Cookie

当サイトでは、どのページが閲覧され、どこで訪問者がつまずいているかを把握するために Google Analytics の Cookie を使用しています — 広告はなく、プロファイリングもせず、何かを売ることもありません。拒否してもサイトの動作はまったく変わりません。詳細は プライバシーポリシー.