API

パネルの機能はすべて、2 つの独立した API から利用できます。どちらも同じアカウント、同じ残高、同じカタログを使い、違いは形式と機能にあります。

パネルの機能はすべて、2 つの独立した API から利用できます。どちらも同じアカウント、同じ残高、同じカタログを使い、違いは形式と機能にあります。

なぜ API が 2 つあるのか

業界全体で使われている従来のリセラー API (v2) は、単一のエンドポイントにフォームを送信し、常に HTTP 200 を返します。既製のパネルソフトウェアが期待する形式はまさにこれなので、そのまま維持しています。一方、自分でシステムを書く開発者は、この形式の制約に繰り返しぶつかっていました。エラーを区別できず、カタログは一塊で返り、注文ステータスを知るには問い合わせ続けるしかありませんでした。v3 はその要求に応えるために書かれました。

レガシー API を停止する予定はありません。終了日は設定されておらず、動いている連携を変更する必要はありません。

比較

項目レガシー (v2)新 (v3)
形式単一エンドポイント、フォーム送信、action パラメーターリソース指向の REST、JSON ボディ
HTTP ステータスコード失敗時も常に 200実際のコード (400、401、402、404、409、429、502)
エラー自由形式のテキストtype + 固定の code + ローカライズされたメッセージ + param + doc_url
注文ステータスローカライズされたテキストのみ固定の機械可読値に加えて表示用ラベルも別途提供
サービス説明なし10 言語の説明、平均所要時間、プラットフォーム、カテゴリー
注文フィールド型名から推測サービスごとに独自のフィールドスキーマを公開
価格の単位明示されない (パッケージで 1000 倍のずれを生む原因)per_1000 または per_order として明示
カタログ1 回のレスポンスに全サービスフィルターとカーソルページネーション
重複注文の防止なしIdempotency-Key
ステータス通知継続的なポーリング署名付き Webhook またはイベントストリーム
スキーマなしOpenAPI 3.1
言語英語とトルコ語 (アドレスが別)10 言語 (ヘッダーまたはパラメーターで指定)

どちらを選ぶべきか

レガシー (v2)

既製のパネルソフトウェア、ボット、リセラーパネルを使っているならレガシー API を選んでください。多くの場合、API のアドレスとキーを差し替えるだけで、数分で動き出します。

新 API (v3)

自分のアプリケーション、ストア、自動化を書いているなら v3 を選んでください。エラー処理、重複注文の防止、通知の仕組みが最初から備わっており、注文フォームをサービススキーマから自動生成できます。

はじめに

  1. 1「キー」タブから API キーを 1 つ作成します。
  2. 2サービス一覧を取得し、使うサービスの id とフィールドスキーマを確認します。
  3. 3注文をまず preview で検証し、そのうえで作成します。
  4. 4ステータスを追うために Webhook を登録するか、イベントストリームを読みます。

エラー (48)

コードステータス説明
missing_api_key401API キーが送信されていません。'Authorization: Bearer <key>' ヘッダーで送信してください。
invalid_api_key401指定された API キーは有効ではありません。
revoked_api_key401この API キーは失効しているため、使用できません。
account_banned403このアカウントは利用禁止になっています。
account_suspended403このアカウントは停止されています。
insufficient_scope403この API キーには、このエンドポイントへの権限がありません。
invalid_json400リクエストボディが有効な JSON ではありません。
unsupported_content_type415サポートされていない Content-Type です。application/json または application/x-www-form-urlencoded を使用してください。
method_not_allowed405この HTTP メソッドは、このエンドポイントでは使用できません。
payload_too_large413リクエストボディが大きすぎます。
missing_parameter400必須パラメーターが不足しています。
invalid_parameter400パラメーターの値が不正です。
invalid_quantity400数量が有効な正の整数ではありません。
quantity_out_of_range400数量がこのサービスで許可されている範囲外です。
invalid_comments400コメント欄が空か、行数が多すぎます。
invalid_username400このサービスでは無効なユーザー名です。
invalid_subscription400サブスクリプションのパラメーターが不正です。
invalid_runs400ドリップフィードの 'runs' の値が不正です。
invalid_interval400ドリップフィードの 'interval' の値が不正です。
dripfeed_not_supported400このサービスはドリップフィードに対応していません。
missing_required_field400このサービスタイプに必要なフィールドが不足しているか、不正です。
service_inactive400このサービスは現在注文できません。
invalid_cursor400ページネーションカーソルが不正です。
invalid_limit400'limit' パラメーターが許可された範囲外です。
invalid_webhook_url400Webhook の URL は公開された https:// のアドレスが必要です。
invalid_events400指定されたイベントタイプのうち、1 つ以上が不明です。
batch_too_large4001 回のバッチリクエストに含まれる項目が多すぎます。
cancel_not_supported400このサービスはキャンセルに対応していません。
refill_not_supported400このサービスはリフィルを提供していません。
unknown_endpoint404不明なエンドポイントです。利用可能なルートは API リファレンスをご覧ください。
service_not_found404この id のサービスは存在しません。
order_not_found404アカウント内にこの id の注文は存在しません。
refill_not_found404アカウント内にこの id のリフィルは存在しません。
webhook_not_found404アカウント内にこの id の Webhook エンドポイントは存在しません。
order_not_cancelable409現在のステータスのため、この注文はキャンセルできません。
cancel_rejected409プロバイダーがキャンセル要求を拒否しました。
order_not_completed409リフィルは完了した注文にのみ申請できます。
idempotency_key_reuse409この Idempotency-Key は、別のリクエストボディですでに使用されています。
idempotency_in_progress409この Idempotency-Key のリクエストは処理中です。しばらくしてから再試行してください。
webhook_limit_reached409Webhook エンドポイントの上限に達しました。
insufficient_balance402この注文に必要な残高が不足しています。
rate_limit_exceeded429レート制限を超えました。Retry-After レスポンスヘッダーをご覧ください。
provider_error502プロバイダーがエラーを返しました。再試行してください。
refill_failed502リフィル要求はプロバイダーに拒否されました。
service_temporarily_unavailable503このサービスは一時的に利用できません。しばらくしてから再試行してください。
internal_error500当社側で予期しないエラーが発生しました。