基本概念

エラー

GemleadはHTTPステータスとJSONのエラーを返します。エラーのtypeとcodeは変わらないので、コードの分岐にそのまま使えます。

エラーオブジェクト

エラーはすべて同じ形式です。messageは人が読むためのもので、変わることがあります。typeとcodeはコードで扱うためのものです。また、エラーかどうかにかかわらず、すべてのレスポンスにRequest-Idヘッダーが付きます。

属性

  • typestring
    エラーの分類。HTTPステータスごとに1つです。
  • codestring
    具体的なエラーの内容。下記のコード一覧を参照してください。
  • messagestring
    エラーを説明する文。
  • paramstringまたはnull
    原因となったパラメーター。該当する場合のみ含まれます。
  • request_idstring
    リクエストのID。Request-Idヘッダーと同じ値です。サポートが必要なときは、このIDをお知らせください。
  • doc_urlstring
    このページで、該当するコードを説明している箇所のURL。
レスポンス400
{
  "error": {
    "type": "invalid_request_error",
    "code": "parameter_invalid",
    "message": "score_min must be an integer from 0 to 100.",
    "param": "score_min",
    "request_id": "req_7Hq2LmX9pT4vK1sN",
    "doc_url": "https://gemlead.ai/docs/errors#parameter_invalid"
  }
}

HTTPステータスコード

ステータスタイプ意味
400invalid_request_errorパラメーターが不足している、不明である、または無効です。パスが受け付けないメソッドも、405とともにこのタイプになります。
401authentication_errorキーがない、キーが誤っている、またはキーが無効にされています。
403permission_errorキーは有効ですが、この操作は許可されていません。readキーでの書き込みや、FreeプランやStarterプランのアカウントなどです。
404not_found_errorキーのアカウントに該当するオブジェクトがないか、そのルートが存在しません。
409idempotency_errorIdempotency-Keyが別のリクエストで再利用されたか、最初のリクエストがまだ処理中です。
429rate_limit_errorリクエストが多すぎます。Retry-After秒待ってください。
500api_errorGemlead側で問題が発生しました。まだ利用できないエンドポイントの場合は501になります。あとで同じIdempotency-Keyで再試行してください。

エラーコード

コードステータス意味
api_key_missing401リクエストにAuthorizationヘッダーもX-Api-Keyヘッダーもありません。
api_key_invalid401一致するキーがありません。gl_live_を含め、キー全体をコピーしたか確認してください。
api_key_revoked401キーはアプリで無効にされています。新しいキーを作成してください。
token_expired401AIアシスタントのOAuthアクセストークンの有効期限が切れています。アシスタントが自動で更新します。
insufficient_scope403キーのスコープはreadですが、リクエストはデータを変更しようとしています。write付きのキーを使ってください。
plan_required403アカウントのオーナーがFreeプランかStarterプランを利用しています。APIはトライアル中を含め、BusinessとEnterpriseで利用でき、そのどちらかになれば同じキーが再び使えます。
forbidden403キーのユーザーには、このXアカウントでこの操作をする権限がありません。たとえば、管理者ではないメンバーがチームを変更したり、ペルソナを共有したりする場合です。
parameter_missing400必須パラメーターがありません。paramにその名前が入ります。
parameter_invalid400100を超えるスコアやISO 8601形式でない日付など、APIが受け付けない値のパラメーターがあります。paramにその名前が入ります。
parameter_unknown400クエリまたはボディに、このエンドポイントが受け付けないパラメーターがあります。paramにその名前が入ります。
body_invalid400ボディが有効なJSONではないか、JSONオブジェクトではありません。
cursor_invalid400cursorがAPIの発行したものではないか、別のフィルター用に発行されたものです。
idempotency_key_invalid400Idempotency-Keyが255文字を超えています。
method_not_allowed405このパスはこのメソッドを受け付けません。受け付けるメソッドはAllowヘッダーに記載されています。
url_invalid400Webhook URLがHTTPSでない、認証情報を含んでいる、名前解決できない、またはプライベートアドレスを指しています。
webhook_endpoint_limit_reached400アカウントにはすでに10個のWebhookエンドポイントがあります。先に1つ削除してください。
resource_already_exists400すでに存在します。ペルソナにこの獲得方法で登録済みのソースや、登録済みのキーワード検索などです。
limit_reached400上限に達しています。1アカウントあたり100ペルソナ、1ペルソナあたり500件のキーワード検索、ボードの列50個などです。
seed_source_refused400新しいペルソナの初期ソースとして受け付けられません。投資家、アクセラレーター、メディアのアカウントなどは、買い手につながらないためです。
x_profile_not_found400このユーザー名には、読み取れるXのプロフィールがありません。
lead_without_x_id400リードにまだXアカウントIDがないため、フォローできません。
lead_not_convertible400リードがどのペルソナにも属していないため、ソースにできません。
campaign_archived400キャンペーンはアーカイブ済みです。再び実行するには複製してください。
campaign_not_started400キャンペーンは下書きのため、一時停止する対象がありません。
campaign_flow_empty400キャンペーンのフローにまだステップがありません。開始する前にステップを追加してください。
column_protected400この列は受信トレイやペルソナの列のようにボードに固定された列のため、削除できません。
shared_account_has_campaigns400共有ペルソナから外すXアカウントに、まだそのペルソナのキャンペーンがあります。キャンペーンを削除してから、もう一度お試しください。
owner_cannot_leave400Xアカウントのオーナーは、自分のチームを抜けられません。代わりにメンバーを外してください。
translation_off400会話の翻訳がオフになっています。オンにするか、メッセージを1件ずつ翻訳してください。
recipient_not_messageable400XがDMを拒否しました。リードがDMを閉じているか、アカウントをブロックしています。
media_kind_unsupported400この会話では、この種類のファイルを送れません。ボイスメッセージにはX Chatの会話が必要です。
x_session_expired409Xアカウントのセッションの有効期限が切れています。アプリで再接続してから、もう一度お試しください。
assistant_busy409Julien AIが、このチャットのメッセージ、またはこのXアカウントの3件のメッセージにまだ回答中です。回答を待ってから、もう一度送信してください。
conversation_unavailable409この会話には、まだメッセージを送れるXユーザーがいません。
resource_missing404キーのアカウントに、このIDのオブジェクトはありません。別のアカウントのIDでも同じ応答になります。
route_not_found404このパスにエンドポイントはありません。
idempotency_key_reused409このIdempotency-Keyは、過去24時間以内に別のメソッド、パス、ボディで使われています。
idempotency_key_in_use409このIdempotency-Keyを使った最初のリクエストがまだ処理中です。1秒後に再試行してください。
rate_limit_exceeded429このキーで1分間に120回を超えるリクエストがありました。Retry-After秒待ってください。
export_rate_limit_exceeded429このアカウントで1時間に10回を超えるエクスポートがありました。
dm_paused429Xが現在このアカウントのDMを制限しています。再開のタイミングはRetry-Afterでわかります。
dm_rate_limited429このアカウントから1分間に10件を超えるDMが送信されました。
dm_daily_limit429このアカウントからUTCの今日300件のDMが送信されたか、Xが設定した1日の上限に達しました。
assistant_rate_limited429このXアカウントからJulien AIへのメッセージが1分間に6件を超えたか、オーナー全体でアプリのチャットも含めて1時間に150件を超えました。
assistant_daily_limit429このXアカウントからJulien AIへのメッセージが、UTCの今日100件に達しました。
passcode_rate_limited429このアカウントで、X Chatのパスコードが1時間に5回を超えて試行されました。Xはすべての試行をカウントします。
internal_error500Gemlead側で予期しないエラーが発生しました。request_idがあれば原因を特定できます。
request_timeout500リクエストに時間がかかりすぎました。再試行してください。データを変更するリクエストなら、同じIdempotency-Keyを使います。
not_implemented501このエンドポイントはまだ利用できません。
upstream_unavailable502XまたはGemleadのサービスが応答しませんでした。何も変更されていないので、1分後にもう一度お試しください。

エラーへの対処

  • 400、401、403、404は、そのまま再送しても成功しません。リクエストを修正してから送り直してください。
  • idempotency_key_in_useの409は、1秒ほど待てば成功します。同じIdempotency-Keyで再試行してください。
  • 429はRetry-After秒が経過すれば成功します。レート制限を参照してください。
  • 500は少し待ってから再試行できます。データを変更するリクエストでは同じIdempotency-Keyを送り、処理が二重に実行されないようにしてください。
  • すべてのエラーのrequest_idをログに残してください。お問い合わせの際に、該当するリクエストをすぐに特定できます。