開発者向け

API&インテグレーションリファレンス

ビジネスAPIの呼び出し、APIキーの管理、Webhookの受信に必要なすべての情報。

← ダッシュボードに戻る

認証

ビジネスAPIはすべてのリクエストでAPIキーによる認証を行います。X-Api-Keyヘッダー、またはAuthorizationヘッダーのBearerトークンとして送信してください。

キーには qrg_ プレフィックスが付いており、作成時に一度だけ表示されます。後から再確認することはできませんので安全に保管してください。

有効なキーがないリクエストは401を返します。必要な権限を持たないキーには、エラー insufficient_scope とともに403が返されます。ワークスペース外のリソースは、存在しないものとして404を返します。

ベースURL

すべてのビジネスAPIエンドポイントは /v1 プレフィックスの下に存在します。

例えば、QRコード一覧の取得は https://qr-global.com/api/v1/qr-codes にリクエストします。

解決されたベースURL
https://qr-global.com

エンドポイント

すべてのエンドポイントは /api/v1 の下にあり、記載された権限を持つキーが必要です。

メソッドパス権限説明
GET/qr-codesqr:readQRコード一覧(フィルター:type、search、folder_id、tag、archived)
POST/qr-codesqr:writeQRコードを作成
POST/qr-codes/bulkqr:write最大100個のQRコードを一度に作成
GET/qr-codes/{id}qr:readQRコードを1件取得
PUT/qr-codes/{id}qr:writeQRコードとそのフォルダー・タグを更新
DELETE/qr-codes/{id}qr:writeQRコードを削除
GET/qr-codes/{id}/imageqr:read画像をレンダリング(PNGまたはSVG)
GET/qr-codes/{id}/statsanalytics:readスキャン統計
GET/qr-codes/{id}/scansanalytics:readスキャンログ
GET/foldersqr:readフォルダー一覧
GET/tagsqr:readタグ一覧
GET/webhookswebhooks:manageWebhook購読の一覧
POST/webhookswebhooks:manageイベントを購読
DELETE/webhooks/{id}webhooks:manage購読を解除

Postman、コードジェネレーター、ノーコードツール向けの機械可読な仕様(OpenAPI 3.1): openapi.json をダウンロード

APIキー

ダッシュボードのAPIキーページでキーを作成・失効させることができます。

各キーはワークスペースに属し、プランのレート制限を引き継ぎます。

キーの失効は即座に反映されます。

APIキー

権限(スコープ)

キーの作成時に、フルアクセスか、連携に必要な権限だけを付与してください。権限のないキーには403が返され、レスポンスにエラー insufficient_scope と required_scope が含まれます。

qr:read — QRコードの閲覧
QRコードとその画像、フォルダー、タグの一覧表示と閲覧。
qr:write — QRコードの管理
QRコードの作成(一括作成を含む)、編集、フォルダー間の移動、タグ付け、削除。
analytics:read — 分析データの閲覧
各QRコードのスキャン統計とスキャンログ。
webhooks:manage — Webhookの管理
エンドポイントのイベント購読と購読解除(Zapier、Make)。

権限機能の導入前に作成されたキーは、引き続きフルアクセスを持ちます。フルアクセスには、今後追加される権限も含まれます。

コード例

curlコマンドをコピー&ペーストしてすぐに開始できます。YOUR_API_KEY をAPIキーページで取得したキーに置き換えてください。

QRコード一覧の取得

curl -sS -H "X-Api-Key: YOUR_API_KEY" -H "Accept: application/json" \
  "https://qr-global.com/api/v1/qr-codes"

QRコードの作成

QRのタイプとコンテンツを送信すると、サーバーがコードを生成して保存します。

curl -sS -X POST "https://qr-global.com/api/v1/qr-codes" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"type":"url","content":"https://example.com","display_name":"Example link"}'

画像のレンダリング

作成済みのPNGまたはSVGファイルを取得します(?format=png

curl -sS "https://qr-global.com/api/v1/qr-codes/123/image?format=png&size=512" \
  -H "X-Api-Key: YOUR_API_KEY" -o qr.png

# SVG (vector, no size limit on scale):
curl -sS "https://qr-global.com/api/v1/qr-codes/123/image?format=svg" \
  -H "X-Api-Key: YOUR_API_KEY" -o qr.svg

Webhookのサンプルペイロード

{
  "event": "qr.scan.created",
  "timestamp": "2026-04-03T12:00:00+00:00",
  "data": {
    "qr_code_id": 7,
    "qr_code_uuid": "9b2f0c1e-4d4a-4f7e-9a51-2a7c3c1d8e10",
    "type": "url",
    "scan_id": 42,
    "country": "UA",
    "device_type": "mobile",
    "scanned_at": "2026-04-03T12:00:00+00:00"
  }
}

スキャン分析

GET /qr-codes/{id}/stats は、合計、ユニーク訪問者、上位の国、デバイス、ブラウザー、日別スキャン数を返します。GET /qr-codes/{id}/scans は、スキャンログを新しい順に1ページ50件(per_page は最大100)で返します。

どちらも from と to(2026-10-01 のような日付、または完全なタイムスタンプ)、および timezone(デフォルトは UTC)を受け付けます。時刻のない日付は、そのタイムゾーンでの1日全体を表します。

利用できるのはプランの履歴保存期間内のデータのみで、それより古いスキャンは削除されます。訪問者のIPアドレスとユーザーエージェントが返されることはありません。

期間を指定したスキャン統計

curl -sS "https://qr-global.com/api/v1/qr-codes/123/stats?from=2026-10-01&to=2026-10-31&timezone=Europe/Kyiv" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Accept: application/json"

スキャンログ(2ページ目)

curl -sS "https://qr-global.com/api/v1/qr-codes/123/scans?per_page=100&page=2" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Accept: application/json"

フォルダーとタグ

GET /folders と GET /tags は、ワークスペースのフォルダーとタグを一覧表示します。QRコードの作成・更新時に folder_id と tags(タグのスラッグ)を渡してください。folder_id null でコードはフォルダーから外れ、tags はタグ全体を置き換えます。

QRコード一覧は ?folder_id= または ?tag= で絞り込めます。

QRコードをフォルダーに移動してタグを付ける

curl -sS -X PUT "https://qr-global.com/api/v1/qr-codes/123" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
  "folder_id": 4,
  "tags": [
    "campaign",
    "priority"
  ]
}'

一括作成

POST /qr-codes/bulk は、1回のリクエストで最大100個のQRコードを作成します。ダッシュボードのCSVインポートと同様に一括作成を含むプランが必要で、有効なQRコードの上限が適用されます。

各項目は個別に処理されます。レスポンスには全項目が、ステータス created(新しいコードを含む)または failed(error と errors を含む)とともに返されます。バッチ全体ではなく、失敗した項目だけを再送してください。

QRコードを2つ作成

curl -sS -X POST "https://qr-global.com/api/v1/qr-codes/bulk" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
  "codes": [
    {
      "type": "url",
      "content": "https://example.com/spring",
      "display_name": "Spring flyer",
      "tags": [
        "campaign"
      ]
    },
    {
      "type": "url",
      "content": "https://example.com/menu",
      "display_name": "Table menu",
      "folder_id": 4
    }
  ]
}'

Webhookの購読(REST hooks)

Zapier、Make、独自のサービスから、APIでイベントを購読できます。url と events を指定して POST /webhooks を送信し、購読解除には DELETE /webhooks/{id} を使用します。これらはWebhookページで使われているものと同じエンドポイントです。

POST のレスポンスには secret が含まれ、一度だけ表示されます。X-Webhook-Signature ヘッダーの検証に使用してください。独自の secret(16文字以上)を送信しない場合は、自動で生成されます。

イベント:qr.scan.created, subscription.updated, payment.succeeded, lead.captured, rsvp.received, feedback.received, poll.voted。購読にはWebhookを含むプランが必要ですが、購読解除はいつでも可能です。1つのワークスペースに登録できるエンドポイントは最大25個です。

スキャンを購読

curl -sS -X POST "https://qr-global.com/api/v1/webhooks" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
  "url": "https://hooks.zapier.com/hooks/catch/123/abc/",
  "events": [
    "qr.scan.created"
  ]
}'

購読を解除

curl -sS -X DELETE "https://qr-global.com/api/v1/webhooks/42" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Accept: application/json"
Webhook はライトプランでご利用いただけます。アップグレードして有効化してください。

Webhook

Webhookはイベントが発生した際、リアルタイムでエンドポイントへ通知を送信するため、ポーリングは不要です。

ダッシュボードのWebhookページでエンドポイントを設定します。

各配信は署名され、失敗した場合は指数バックオフで自動再試行されます。

スキャンイベントは、作成したQRコードがスキャンされた際に発火します。

配信ログで配信試行、ペイロード、レスポンスを確認できます。

配信完了を確認するために 2xx ステータスを返してください。それ以外のステータスは失敗として扱われます。

Webhook配信ログ
Webhook はライトプランでご利用いただけます。アップグレードして有効化してください。

コンバージョン計測

コンバージョンがあれば、A/Bテストはスキャン数だけでなく、どの遷移先が注文や登録につながるかを判断できます。自動最適化をオンにすると、最もコンバージョンの高いバリアントにトラフィックが移ります。

訪問者がコンバージョン後に見るページ(注文確認、サンクスページ、完了ページ)にスクリプトを追加してください。どのドメインでも動作し、APIキーは不要です。

スニペット

<script src="https://qr-global.com/c.js" async></script>
  • スキャンのたびに署名付きパラメーター qrg_v が遷移先URLに追加され、コンバージョンがQRコードとバリアントに紐づきます。
  • スクリプトはトークンをファーストパーティCookieに30日間保存するため、訪問者が先に別のページを見てもコンバージョンは計測されます。
  • 1回のスキャンは1回だけカウントされます。サンクスページを再読み込みしてもコンバージョンは増えません。
  • http(s) のページにリダイレクトするQRコードで動作します。

エクスポート

エクスポートページから、QRコード、スキャン履歴、位置情報、アクティビティをCSVとして出力できます。

エクスポート機能はAPIキーではなくダッシュボードのセッションを使用します。ログインした状態で実行してください。

エクスポート

ヒントとよくあるエラー

  • 401 Unauthorized — APIキーが未設定または無効です。X-Api-Keyヘッダーを確認してください。
  • 403 Forbidden — キーに必要な権限がない(insufficient_scope)か、プランにその機能が含まれていません(api_access_required、bulk_not_available、webhooks_not_available)。
  • 404 Not Found — リソースが存在しないか、別のワークスペースに属しています。
  • 429 Too Many Requests — プランの1分あたりの上限に達しました。Retry-After ヘッダーに示された秒数だけ待ってください。
  • 一部の機能(Webhookなど)はプランに依存します。エンドポイントが機能エラーを返した場合はアップグレードをご検討ください。
  • まだWebhookの配信がありませんか?作成したQRコードをスキャンしてテストを発生させてください。
  • 失敗したWebhook配信は自動再試行されます。配信ログから手動で再試行することも可能です。
  • チームメンバーはワークスペース内で操作します。キーとデータはワークスペース所有者に紐付けられます。

役立つリンク