HCC2D API

HCC2D REST API を使うと、HCC2D コードや QR コードをプログラムから生成できます。利用には API キーが必要です。こちらから申請してください。

認証

Authorization ヘッダーにキーを指定します。

Authorization: Bearer hcc2d_<64 hex chars>

有効なキーがないリクエストは HTTP 401 で拒否されます。

ベース URL

https://hcc2d.com/api/v1

エンドポイント

POST /api/v1/generate

ペイロードを HCC2D または QR シンボルへエンコードし、PNG 画像を取得します。

リクエストボディ(JSON)

項目必須説明
payloadBase64stringはいbase64 で符号化したペイロードバイト列
inputNamestringいいえHCC2DF コンテナ内に保存するファイル名。既定値は payload.bin。structured: false の場合は無視されます。
structuredbooleanいいえペイロードを HCC2DF コンテナ(ファイル名 + zlib 圧縮)で包みます。既定値は true。false にするとコンテナなしで生バイトを格納します。URL や vCard では false を推奨します。
modestringいいえシンボル種別: qr、hcc2d4(4 色)、hcc2d8(8 色、既定)
ecstringいいえ誤り訂正レベル: L、M、Q、H(既定は M)
versionintegerいいえシンボルバージョン(1〜40)。0 を指定すると自動選択です。
scaleintegerいいえ1 モジュールあたりのピクセル数(1〜64、既定は 12)
quietZoneintegerいいえクワイエットゾーン幅(モジュール単位、0〜64、既定は 4)

リクエスト例

curl -X POST https://hcc2d.com/api/v1/generate   -H "Authorization: Bearer hcc2d_<your-key>"   -H "Content-Type: application/json"   -d '{
    "payloadBase64": "SGVsbG8sIFdvcmxkIQ==",
    "inputName": "payload.txt",
    "structured": true,
    "mode": "hcc2d8",
    "ec": "M",
    "version": 0,
    "scale": 4,
    "quietZone": 4
  }' --output code.png

成功レスポンス(200)

{
  "ok": true,
  "imageUrl": "/generated/<uuid>.png",
  "message": "Code generated successfully — Version 1"
}

エラーレスポンス

{
  "ok": false,
  "error": "Human-readable message",
  "code": "machine_readable_code"
}

エラーコード

HTTPコード意味
400missing_payloadpayloadBase64 が未指定、または空です
400invalid_base64payloadBase64 が正しい base64 ではありません
400empty_payloadデコード後のペイロードが 0 バイトです
400payload_over_maxペイロードがサーバーの事前チェック上限を超えています
400too_large_settings絶対上限には収まるものの、指定した version / EC / mode の組み合わせでは入りません
400too_large_absoluteどのシンボルでも収まらないサイズです。ペイロードを減らしてください
400encoder_failed容量以外の理由でエンコーダが入力を拒否しました
400invalid_mode / invalid_ec / invalid_version / invalid_scale / invalid_quiet_zoneいずれかのパラメータが許容範囲外です
401auth_requiredAPI キーが未指定、無効、または失効しています
413body_too_largeHTTP ボディが parser の上限を超えています
415unsupported_media_typeContent-Type が application/json ではありません
429rate_limitedキー単位または IP 単位のレート制限に達しました
429too_many_jobs同時実行ジョブ数の上限に達しています
500internal_error予期しないサーバー内部エラーです
502missing_outputエンコーダは実行されたものの画像が生成されませんでした
503encoder_unavailableサーバー上でエンコーダの実行ファイルが見つかりません
504encoder_timeoutエンコーダ処理がタイムアウトを超過しました

レート制限

制限
API キーごと30 リクエスト / 分
IP ごと(キーあり)60 リクエスト / 分
総当たり対策15 分以内に 10 回認証失敗すると 15 分間 IP をロック

制限に達すると、サーバーは Retry-After ヘッダー付きで 429 を返します。

より高い上限が必要な場合は info@hcc2d.com までご連絡ください。

ペイロードサイズ制限

上限適用箇所
ボディパーサ約 86 KBJSON 解析前のサーバー — body_too_large を返します
事前チェック65,536 バイト(64 KB)base64 デコード後のサーバー — payload_over_max を返します
コードの絶対上限約 8,859 バイトエンコーダ — too_large_absolute を返します
設定依存の上限version と EC に依存エンコーダ — too_large_settings を返します

既定では、サーバーは HCC2DF コンテナ経由で zlib 圧縮してからエンコードするため、生データが 64 KB あっても収まる場合があります。structured: false を指定するとコンテナを使わずに生バイトをエンコードします。

Web UI でも 64 KB のアップロード上限を設けており、サーバー側の事前チェックと揃えています。

画像の取得

生成された PNG は https://hcc2d.com<imageUrl> で提供され、1 時間保持されます。生成後は早めにダウンロードしてください。

API キーの取得

公式申請フォームから API キーを申請してください。

参考情報

HCC2DF 形式リファレンス — 構造化コンテナのバイナリレイアウトを項目ごとに説明します。

コード例 — JavaScript、Python、Java、PHP の実行可能なサンプルです。

← HCC2D Encoder に戻る