エラーと制限
APIエラー、ステータスコード、プランベースのリソース制限を理解する。
APIエラー、レート制限、プラン制限を理解する。
エラー応答フォーマット
すべてのエラーは一貫したフォーマットに従います:
{
"statusCode": 400,
"statusMessage": "Name is required",
"message": "Name is required",
"url": "/api/v1/minds",
"error": true
}
| フィールド | 説明 |
|---|---|
statusCode | HTTPステータスコード |
statusMessage | 人間が読み取れるエラー説明(ハンドラーによってエラーごとに設定されます - 検証エラーの場合、これは特定の問題です。例:"Mind not found"または"Invalid Mind ID format") |
message | v1エラーのためのstatusMessageと同じ内容。デバッグビルドの5xx応答におけるスタック/追加コンテキスト用に予約されています。 |
url | リクエストパス(Nuxt H3によって追加されます) |
error | エラー応答のためのtrue(Nuxt H3によって追加されます) |
プログラムによる処理には常に
statusCodeを頼りにし、人間が読み取れる理由にはstatusMessage(またはmessage)を使用してください。urlおよびerrorフィールドは、基盤となるフレームワークからの便利なメタデータです。
HTTPステータスコード
2xx 成功
| コード | ステータス | 説明 |
|---|---|---|
| 200 | OK | リクエスト成功 |
| 201 | 作成済み | リソースが正常に作成されました(例:POST /minds、POST /minds/{id}/knowledge) |
| 202 | 受理済み | 非同期処理のためにリクエストが受理されました(例:POST /minds/{id}/knowledgeとkeywords) |
| 204 | コンテンツなし | リクエスト成功、応答ボディなし(例:DELETE /minds/{id}/knowledge/{itemId}) |
4xx クライアントエラー
| コード | ステータス | 説明 |
|---|---|---|
| 400 | 不正なリクエスト | 無効なリクエストパラメータ |
| 401 | 認証エラー | APIキーが欠落または無効 |
| 403 | 禁止 | アクセス拒否またはプラン制限に達しました |
| 404 | 未発見 | リソースが存在しません |
| 415 | サポートされていないメディアタイプ | 不正なContent-Typeヘッダー |
| 422 | 処理できないエンティティ | リクエストの形式は正しいものの実行できない。例:準備完了のMindsが10未満のオーディエンスで検証を開始した場合(AUDIENCE_TOO_SMALL) |
| 429 | リクエストが多すぎます | レート制限を超えました |
5xx サーバーエラー
| コード | ステータス | 説明 |
|---|---|---|
| 500 | サーバー内部エラー | サーバー側のエラー |
| 503 | サービス利用不可 | サービスが一時的に利用できません |
一般的なエラー
400 不正なリクエスト
必須フィールドが欠落しています:
{
"statusCode": 400,
"statusMessage": "Name is required"
}
無効な入力:
{
"statusCode": 400,
"statusMessage": "File too large: document.pdf (55.2MB). Maximum size is 50MB."
}
401 認証エラー
APIキーが欠落しています:
{
"statusCode": 401,
"statusMessage": "Unauthorized"
}
解決策: Authorizationヘッダーを含めてください:
-H "Authorization: Bearer minds_your_api_key"
403 禁止
プラン制限に達しました:
{
"statusCode": 403,
"statusMessage": "Starter plan limit reached",
"message": "Starter plan limit reached",
"url": "/api/v1/minds",
"error": true,
"data": {
"code": "PLAN_LIMIT",
"limitType": "sparks",
"currentPlan": "premium",
"limit": 100,
"current": 100
}
}
アクセス拒否:
{
"statusCode": 403,
"statusMessage": "Access denied"
}
404 未発見
リソースが存在しません:
{
"statusCode": 404,
"statusMessage": "Mind not found"
}
415 サポートされていないメディアタイプ
不正なContent-Type:
{
"statusCode": 415,
"statusMessage": "Unsupported Content-Type. Use application/json for links or multipart/form-data for files"
}
解決策: 正しいContent-Typeヘッダーを使用してください:
application/jsonはJSONリクエスト用multipart/form-dataはファイルアップロード用
429 リクエストが多すぎます
レート制限を超えました:
{
"statusCode": 429,
"statusMessage": "Too many requests. Please try again later."
}
レート制限
v1 APIは認証済みアカウントごとの固定ウィンドウ制限を適用します。デプロイ時の既定値は1分あたり300リクエストですが、設定で変更できます。RateLimit-LimitとRateLimit-Remainingを確認し、429の後はRetry-Afterで指定された秒数だけ待機してください。
プラン制限
現在の公開デフォルト値は、生成されたプラン制限表を参照してください。契約固有のオーバーライドは異なる場合があるため、認証済みエラーのdata.limitとdata.currentがそのリクエストの正しい値です。StarterプランはAPI payloadでは"premium"と表示されます。
Mind制限の例
制限に達した際のエラー:
{
"statusCode": 403,
"statusMessage": "Starter plan limit reached",
"message": "Starter plan limit reached",
"url": "/api/v1/minds",
"error": true,
"data": {
"code": "PLAN_LIMIT",
"limitType": "sparks",
"currentPlan": "premium",
"limit": 100,
"current": 100
}
}
知識アップロード制限
- ファイルサイズ: 最大50MB(すべてのプラン)
- ストレージ: 現在明示的なストレージ制限は施行されていません
APIキー制限
- 最大キー数: 現在、上限は設けられていません。
オーディエンス検証の失敗
準備が完了したMindsが10未満のオーディエンスでオーディエンス検証を開始すると、コードAUDIENCE_TOO_SMALLとともに422が返されます。プランで1つの調査に使える規模を超えるオーディエンスは、上記の標準的なプラン制限エラーで拒否されます。
開始に成功すると検証はバックグラウンドで実行されるため、ほとんどの失敗はHTTPエラーにはなりません。代わりに、検証バッチのfailureフィールドを確認してください。バッチは次のいずれかのコードで終了することがあります。
| コード | 意味 |
|---|---|
AUDIENCE_TOO_SMALL | オーディエンスの準備完了のMindsが10未満です。検証の開始時には422としても返されます |
MINDS_NEED_RETRAINING | 回答する前に、オーディエンス内のMindsの再トレーニングが必要です |
NOT_ENOUGH_QUESTIONS | オーディエンスに適合する質問が8問未満のため、何も質問されませんでした |
NOT_ENOUGH_RESPONSES | 実行に必要な合成回答が、残りの数を上回っています |
NO_FITTING_SURVEY | オーディエンスに合う公表済みサーベイがありません |
NO_USABLE_SURVEY | このオーディエンスを検証できるサーベイがありません |
NO_SCORE | このオーディエンスについてスコア化できたサーベイがありません |
RUNS_REFUSED | 検証の実行を開始できませんでした |
SURVEY_NOT_FOUND | 指定されたサーベイが見つかりません |
SURVEY_FILES_UNREADABLE | アップロードされたサーベイファイルを読み取れません |
SURVEY_RESULTS_NOT_FOUND | アップロードされたファイルに、比較できる公表結果が含まれていません |
VALIDATION_TOO_LARGE | 検証で必要な回答が30,000件を超えます |
ベストプラクティス
エラー処理
常にエラーを処理してください:
async function requestJson(url, apiKey, data) {
const response = await fetch(url, {
method: 'POST',
headers: {
'Authorization': `Bearer ${apiKey}`,
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
});
const text = await response.text();
let result = null;
if (text) {
try {
result = JSON.parse(text);
} catch {
if (response.ok) throw new Error('Expected a JSON response');
}
}
if (!response.ok) {
throw Object.assign(new Error(result?.statusMessage || result?.message || `HTTP ${response.status}`), {
status: response.status,
data: result?.data,
retryAfter: response.headers.get('Retry-After')
});
}
return result;
}
リトライロジック
スマートなリトライを実装してください:
- 一時的な
429または5xx応答では、回数を制限した指数バックオフで読み取りを再試行し、Retry-Afterに従ってください。書き込みはエンドポイントが冪等性を保証する場合に限り、同じキーとリクエスト本文で再試行します。結果が不明なタイムアウト後は、再送信する前に既存のリソースやジョブを確認してください。 - 指数バックオフを使用
- 最大リトライ試行回数を設定
4xxエラーではリトライしない(429を除く)
モニタリング
使用状況を追跡してください:
- レート制限ヘッダーをログに記録
- エラー率を監視
- 繰り返し発生するエラーのアラートを設定
- 応答時間を追跡
必要に応じてアップグレード
以下の場合はプランをアップグレードしてください:
- レート制限に頻繁に達する
- より多くのMindsが必要
- より大きなファイルアップロードが必要
- 優先サポートを希望
ヘルプを得る
ステータスを確認
サービスのステータスを監視してください:
- Mindsサービス稼働状況
- 更新情報は@mindsai_coをフォロー
サポートに連絡
以下の問題が発生した場合:
- 持続的な500エラー
- 不正確なレート制限
- 予期しない動作
ご連絡ください:
- フィードバックフォーム
- メール: [email protected]
ドキュメントを確認
ステータスコードリファレンス
すべてのHTTPステータスコードのクイックリファレンス:
2xx Success
├─ 200 OK
└─ 201 Created
4xx Client Error
├─ 400 Bad Request
├─ 401 Unauthorized
├─ 403 Forbidden
├─ 404 Not Found
├─ 415 Unsupported Media Type
└─ 429 Too Many Requests
5xx Server Error
├─ 500 Internal Server Error
└─ 503 Service Unavailable


