ハイライト
クォータ超過時のレスポンスが、OpenAI、GitHub、Cloudflareと同様に、Retry-Afterヘッダーを伴うHTTP 429を返すようになりました。料金ページに帯域幅(Bandwidth)の行を追加しました(公開プランはすべて無制限)。また、ジオターゲティングを含まないプランでexitCountriesを要求するリクエストに対しては、パラメーターと解決策を明記した明確な403を返すようになりました。
新着情報
クォータ制限のレスポンスが402からHTTP 429へ
プランの制限(クレジットまたは帯域幅)に達した場合、レスポンスは429 Too Many Requestsとなり、すべての返答にRetry-Afterが付き、body内のresets_atが請求期間の終了日を示します。reasonフィールドは、到達した制限の種類(plan_limit_creditsまたはplan_limit_bandwidth)を通知するため、1分あたりのrate limitと衝突することはありません。
なぜ変更したのか。402(Payment Required)は適切に聞こえますが、実際にはStripeが失敗した請求を報告する際の手法であり、一部のHTTPクライアントやproxyが誤作動を起こします。OpenAI、GitHub、Twilio、Cloudflareはすべて、超過したクォータを429と固有のエラーコードで拒否します。この点において業界標準に従うことは正しい選択です。世の中のすべてのリトライライブラリは、我々のレスポンスの扱い方をすでに知っています。
sleep-and-retry処理を実装する利用者のために、Retry-Afterの値は最大24時間に制限されています。実際のリセット時間が必要な場合は、JSON bodyからresets_atを読み取ってください。
料金ページでの帯域幅表記: 無制限
/pricesの比較表に帯域幅(Bandwidth)の行が追加されました。すべての公開プランは無制限の帯域幅を提供しており、表にもその旨が明記されるようになりました。顧客から質問されて数字が見つからない時になるまで必要とされない情報でしたが、ページ上で確認できるようになりました。
帯域幅を制限するカスタムプランの場合は、同じ行にGBの数値が表示されます。
ジオターゲティングが適切なエラーで自身を制御
プランにジオターゲティング機能が含まれていないにもかかわらずリクエストがexitCountriesを送信した場合、レスポンスは403となり、パラメーターと解決策を記載したメッセージが返されます。以前は、ジオターゲティングが許可されているかのようにリクエストが通過していました。現在は、入り口の段階で明確に失敗するようになりました。
exitCountriesのないリクエストは影響を受けません。これは、機能を実際に要求した場合にのみ機能します。
制限と請求に関するダッシュボードの軽微な修正
3つの利便性向上のための修正を行いました。
- Limitsタブ 保存されたサブタブ(Overview / API keys / Limits & Features)が描画前に復元されるため、リロード時に誤ったタブが一瞬表示されることがなくなりました。
- API Keys 検索ボックスが、単なる入力ではなく標準的な検索パターンを使用するようになりました。
- Billing Payment Methodの下にあるメタ行が適切なスタイルでレンダリングされるようになりました(以前はスタイルが適用されていませんでした)。
内部の仕組み
プラン制限の適用モードをライブで切り替えられるようになりました。6つのデータプレーン制限(製品ごとの同時実行数、1分あたりのレート、1日あたりのブラウザ数、クレジット、帯域幅、機能)と、管理プレーンのキー作成チェックは、我々のチームが管理する設定パネルから、off、signal、enforceの間で切り替え可能です。再デプロイは不要です。バックグラウンドのリフレッシャーが60秒ごとに設定をポーリングし、ホットパスは同期的な状態を保ちます。
なぜこれが重要なのでしょうか。本番環境で制限が誤動作した場合、新しいコードをデプロイする代わりに、数分で制限を緩和できます。また、実際のトラフィックの動きを各ステップで監視しながら、制限ごとに段階的に適用することも可能です。Signalモードはブロックせずにイベントを記録し、enforceは429または403 responseを有効にします。私たちは、この中間ステップを緊急時のトグルではなく、first-classな機能にしたいと考えました。
数値
Retry-Afterquota拒否の上限: 24時間 (実際の自動リセット時間はresets_at)- ランタイム設定のポーリング間隔: 60秒
- 帯域幅無制限のパブリックプラン: すべて
プランのlimiterはこの1ヶ月間の一貫したテーマでした。次のステップ: 最初の制限の適用(クレジットとプロダクトごとのconcurrencyが最初のペアとして自然です)、およびメール配信フェーズのリリースに伴うメール警告です。