コンテンツにスキップ

エラーコード・制限値

API がエラーを返す場合、HTTP ステータスコードとともに以下の JSON 形式のボディを返します。

{
"error": "人間可読なエラーメッセージ",
"code": "MACHINE_READABLE_CODE"
}
  • error: 日本語の人間可読メッセージです。画面表示にそのまま使えますが、分岐処理には code を使ってください。
  • code: プログラムで判定するための機械可読コードです。本ページの一覧に固定値として列挙されています。
{
"error": "月間送信上限に達しました",
"code": "MONTHLY_LIMIT_EXCEEDED",
"upgrade_url": "https://todoke.dev/#pricing"
}
codeHTTP意味対処
MISSING_FIELDS400必須フィールドが欠落していますリクエストボディの必須項目を確認してください
INVALID_URL400url / icon / badge / endpointhttps:// で始まっていません対象フィールドを https:// の URL に修正してください
INVALID_ENDPOINT400endpoint の形式が不正ですブラウザの Push API から取得した endpoint をそのまま送信してください
TOO_MANY_ENDPOINTS400バッチ送信の endpoints が上限(100 件)を超えています100 件以下に分割して送信してください
INVALID_EMAIL400メールアドレスの形式が不正です(認証系)メールアドレスの形式を確認してください
INVALID_INPUT400入力値が不正です(認証系。例: パスワードが長すぎる)入力値の形式・長さを確認してください
INVALID_SCOPE400API キー作成時に指定した scope 名が不正ですsubscribe_only / notify / full のいずれかを指定してください
MISSING_CODE400GitHub OAuth コールバックに code パラメータがありませんOAuth フローを最初からやり直してください
UNAUTHORIZED401認証ヘッダーがない、または不正ですAuthorization: Bearer <API キー> ヘッダーを付与してください
INVALID_API_KEY401API キーが無効ですキーの値を確認するか、ダッシュボードで再発行してください
INVALID_SESSION401セッションが無効です再ログインしてください
INVALID_CREDENTIALS401メールアドレスまたはパスワードが正しくありません入力内容を確認してください
INSUFFICIENT_SCOPE403API キーのスコープが不足していますより上位のスコープ(notify / full)のキーを使用してください
APP_MISMATCH403API キーが URL の appId と一致していませんURL の appId と、使用している API キーの発行元アプリを確認してください
PLAN_LIMIT_EXCEEDED403Free プランのアプリ数上限(1)を超過しています既存アプリを削除するか、プランをアップグレードしてください
INVALID_STATE403GitHub OAuth の state パラメータが不一致ですOAuth フローを最初からやり直してください
NOT_FOUND404指定したリソースが存在しませんアプリ ID・キー ID などの指定値を確認してください
EMAIL_IN_USE409メールアドレスが既に登録済みです別のメールアドレスを使用するか、ログインしてください
PAYLOAD_TOO_LARGE413送信ペイロードが上限(3,072 バイト)を超えていますtitle / body / url / icon / badge の合計サイズを減らしてください
MONTHLY_LIMIT_EXCEEDED429Free プランの月間送信上限(30,000 通)を超過しています(upgrade_url 付き)プランをアップグレードするか、翌月まで待ってください
SUBSCRIBER_LIMIT_EXCEEDED429Free プランの購読者数上限(1,000 人)を超過しています(upgrade_url 付き)プランをアップグレードするか、購読者数を整理してください
RATE_LIMITED429レート制限を超過しましたRetry-After ヘッダー(秒)の時間を待ってから再試行してください
GITHUB_AUTH_FAILED502GitHub との OAuth 認証に失敗しましたしばらく待って再度ログインを試してください
OAUTH_NOT_CONFIGURED503サーバー側で GitHub OAuth が設定されていません管理者に問い合わせてください(GitHub ログインは利用不可)
CONFIG_ERROR503サーバー側の設定不備です(暗号化キー・ペッパー未設定など)管理者に問い合わせてください
INTERNAL_ERROR500未処理の例外が発生しましたしばらく待って再試行し、解消しない場合はサポートに連絡してください

以下のエンドポイントは IP アドレス単位でレート制限されています。

対象制限
ログイン(POST /auth/login10 回 / 60 秒
GitHub OAuth 開始(GET /auth/github10 回 / 60 秒(ログインとカウンタを共有)
ユーザー登録(POST /auth/register5 回 / 60 秒
API キー認証エンドポイント20 回 / 60 秒

制限を超過すると HTTP 429(code: "RATE_LIMITED")が返り、Retry-After: 60 ヘッダーが付与されます。

項目上限超過時のエラーコード
アプリ数1PLAN_LIMIT_EXCEEDED(403)
購読者数1,000SUBSCRIBER_LIMIT_EXCEEDED(429)
月間送信数30,000 通MONTHLY_LIMIT_EXCEEDED(429)

いずれの上限超過時もレスポンスにアップグレード導線 upgrade_urlhttps://todoke.dev/#pricing)が含まれます。

  • ペイロードサイズ: title / body / url / icon / badge を JSON にエンコードした UTF-8 サイズで 3,072 バイトまで。超過すると PAYLOAD_TOO_LARGE(413)
  • バッチ送信件数: POST /api/v1/notify/batchendpoints100 件まで。超過すると TOO_MANY_ENDPOINTS(400)
  • URL 形式: url / icon / badge / endpointhttps:// のみ許可されます。http:// を指定すると INVALID_URL(400)