API
アプリケーションをJEV AIに接続しましょう。キーを作成し、構造化された質問を送信して、ご自身のコードで結果を読み取れます。
最初のAPI呼び出しをAIに任せる
ターミナルを使えるAIコーディングアシスタントに、指示全文をコピーしてください。当サイトのURL、認証方法、サンプルリクエスト、結果の確認手順が含まれています。下の質問タイプを変更すると、指示も更新されます。先に実行環境でJEV_API_KEYを設定してください。
指示をプレビュー
JEV AIのAPIを使ってサンプルリクエストを1回実行し、実際の結果を報告してください。手順の説明だけで終わらず、ターミナルまたはサーバー側のHTTPツールを使って実行してください。
ベースURL:https://jevai.info
ドキュメント:https://jevai.info/api
モデル:typesafe/jev-1.13
認証:Authorization: Bearer <JEV_API_KEYの値>
Content-Type: application/json
1. 実行環境からJEV_API_KEYを読み取ってください。未設定の場合は、続行する前にローカルで設定するよう私に依頼してください。チャットにキーを貼り付けるよう求めてはいけません。キーを出力したり、ログに含めたり、フロントエンドのコードに保存したりしないでください。HTTPリクエストを実行できない場合は、その旨を伝え、結果を捏造せずに実行可能なコードを提示してください。
2. Bearerヘッダーを付けてGET https://jevai.info/api/jev/account?page=1を実行してください。data.balance.ready、data.balance.pending、data.balance.balanceを確認してください。新しいリクエストには、質問ごとに32,000入力トークンの利用可能残高が必要です。サービスを利用できない、別の操作が保留中、または残高不足の場合は、その状況を報告して停止してください。トークンの購入やアカウント設定の変更は行わないでください。
3. requestId用に新しいUUIDを生成し、以下のJSONでhttps://jevai.info/api/jev/runにPOSTをちょうど1回送信してください(requestIdのみを生成したUUIDに置き換えてください):
{
"requestId": "123e4567-e89b-42d3-a456-426614174000",
"model": "typesafe/jev-1.13",
"state": "サブスクリプションの料金が二重に請求されました。重複分を返金してください。",
"questions": {
"decision": {
"type": "choice",
"instructions": "このサポートチケットは、どのチームが対応すべきですか?",
"criteria": {
"billing": "支払い、請求書、返金",
"technical": "エラー、不具合、設定の問題",
"other": "その他すべてのリクエスト"
}
}
}
}
4. HTTPステータスとJSONのcode/messageを確認してください。結果が完了している場合は、data.id、data.status、data.result.answers、inputTokens、outputTokensを報告してください。アカウントのエンドポイントを再度呼び出して、残高を確認してください。サンプルの数値を実際の応答の代わりに使ってはいけません。
5. モデルの呼び出しは購入済みの入力トークンを消費します。出力トークンは無料です。新しいUUIDを使ってサンプルを繰り返し実行しないでください。タイムアウトした場合は、まずアカウントの履歴を確認してください。再試行が必要な場合は、元とまったく同じUUIDと本文を再利用し、1秒以上待ち、Retry-Afterに従ってください。UUIDを再利用すると、保留中や解放済みの状態を含む保存済みのレコードが返ります。タスクが再開されることはありません。needs_reviewや未解決の操作の場合は、実行IDを報告して停止してください。
実行結果を簡潔にまとめてください。APIキーは非公開のままにしてください。- 01
APIキーを作成
「APIキー」でキーを作成してください。コピーボタンまたはキーのプレフィックスをクリックすると、キー全体をコピーできます。ハッシュのみが保存されている古いキーは復元できないため、必要に応じて新しいキーを作成してください。
APIキーを管理 - 02
トークン残高を確認
APIリクエストはPlaygroundと同じ購入済みトークン残高を使用します。キーは無料で作成できます。モデルへのリクエストを実行する前に、トークンパッケージを購入してください。
トークンを購入 - 03
最初のリクエストを送信
質問タイプを選び、バックエンド用のサンプルをコピーしてください。このページのサンプルは自動では実行されず、トークンも消費しません。
例を見る
接続と認証
すべてのリクエストにAuthorization: Bearer YOUR_API_KEYを付けて送信してください。これらのサンプルはサーバーから当サイトのJSON APIを呼び出すもので、OpenAI SDKやブラウザーのログインCookieは使用しません。
- ベースURL
- https://jevai.info
- モデル
- typesafe/jev-1.13
export JEV_API_KEY="YOUR_API_KEY"ローカルのターミナルでYOUR_API_KEYをキー全体に置き換えてください。キーはバックエンドの環境変数に保存し、フロントエンドのコードや公開リポジトリには含めないでください。このキーは当サイト専用であり、モデル提供者のサービスには直接使用できません。
リクエストを実行
POST /api/jev/runchoiceは2〜255個の選択肢からカテゴリーを選びます。この例では、サポートチケットを担当チームに振り分けます。
curl 7.76以降とuuidgenを備えたBash互換シェルを使用してください。先に同じターミナルでJEV_API_KEYを設定します。
REQUEST_ID="$(uuidgen)"
curl --fail-with-body 'https://jevai.info/api/jev/run' \
--request POST \
--header "Authorization: Bearer $JEV_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"requestId": "'"$REQUEST_ID"'",
"model": "typesafe/jev-1.13",
"state": "サブスクリプションの料金が二重に請求されました。重複分を返金してください。",
"questions": {
"decision": {
"type": "choice",
"instructions": "このサポートチケットは、どのチームが対応すべきですか?",
"criteria": {
"billing": "支払い、請求書、返金",
"technical": "エラー、不具合、設定の問題",
"other": "その他すべてのリクエスト"
}
}
}
}'新しい操作には、毎回新しいUUIDのrequestIdが必要です。再試行時は、元とまったく同じrequestIdとペイロードを再利用してください。モデルを実行し、トークンを消費する可能性があるのはPOST /api/jev/runのみです。
応答例を見る
これは説明用のデータであり、実際の実行結果ではありません。code: 0はリクエストの受理を示しますが、data.statusも確認してください。statusがcompletedでresultがnullでない場合に、data.result.answersから回答を読み取ります。再送したリクエストでは、処理中や解放済みのレコードが返ることがあります。
{
"code": 0,
"message": "ok",
"data": {
"id": "example-run-id",
"status": "completed",
"inputTokens": 180,
"outputTokens": 24,
"questionCount": 1,
"elapsedMs": 850,
"createdAt": "2026-09-28T12:00:00.000Z",
"result": {
"model": "typesafe/jev-1.13",
"answers": {
"decision": {
"type": "choice",
"choice": "billing"
}
},
"usage": {
"input_tokens": 180,
"output_tokens": 24
},
"elapsedMs": 850
}
}
}リクエストパラメーター
| フィールド | 型 / 値 | 説明 |
|---|---|---|
| requestId | UUID | 必須。1つの操作を識別するUUIDです。同じペイロードで再試行したときに、モデルの重複実行を防ぎます。 |
| model | typesafe/jev-1.13 | 任意。既定ではこのモデルを使用します。ほかのモデル名は指定できません。 |
| state | string | string[] | object | 必須。すべての質問で共有するコンテキストです。文字列は1〜16,000文字、配列はこの条件を満たす文字列を1〜100個含められます。JSONオブジェクトも指定できます。 |
| questions | object | 必須。名前付きの質問を1〜8個指定します。名前はASCIIの英字で始め、英数字とアンダースコアのみを使い、64文字以内にしてください。 |
| questions.*.type | choice | score | noul | 各質問で必須です。上でタイプを選択すると、対応する例を確認できます。 |
| questions.*.instructions | string | 必須。判断したい内容を1〜16,000文字で明確に記述してください。 |
| questions.*.criteria | object | string[] | choice:選択肢の説明を2〜255個含むオブジェクト(説明はnullでも可)。score:順序付きの説明を2〜10個。noul:このフィールドを省略します。 |
JSON本文全体の上限は32 KiBです。トップレベルや質問に余分なフィールドがあると拒否されます。APIパスには/zhの言語プレフィックスを付けません。
残高とリクエスト履歴を確認
curl --fail-with-body 'https://jevai.info/api/jev/account?page=1' \
--header "Authorization: Bearer $JEV_API_KEY"このエンドポイントはモデルを呼び出しません。利用可能なトークンはdata.balance.balance、確保中のトークンはdata.balance.reservedから読み取ります。data.history.itemsには1ページあたり最大20件のリクエストが含まれます。hasMoreがtrueの間はpageを増やして取得してください。
トークン使用状況を開くトークンの課金方法
実行前に質問ごとに32,000入力トークンを確保するため、それだけの利用可能残高が必要です。リクエストの完了後、実際の入力使用量で精算し、確保したトークンの未使用分を解放します。出力トークンは無料です。確認待ちの確保分は、解決するまで利用できません。
二重課金を防ぐ再試行
リクエストの間隔は1秒以上空け、アカウントごとに一度に1つの操作を実行してください。タイムアウト後は履歴を確認し、同じUUIDと変更していない本文でのみ再試行してください。UUIDを再利用すると保存済みのレコードが返り、解放済みのタスクが再開されることはありません。前のタスクが解放されたことを確認してから、新しいタスクを開始してください。needs_reviewや処理が進まない操作については、実行IDを添えてサポートにお問い合わせください。APIキーは絶対に送らないでください。
トラブルシューティング
エラー時は成功以外のHTTPステータスが返ります。JSON本文ではcodeが-1となり、messageにエラーコードが含まれます。HTTPステータスと本文の両方を確認してください。
| HTTP | エラーコード | 対処方法 |
|---|---|---|
| 400 | invalid_request | JSONの構造、質問の判断基準、UUIDの形式、本文の32 KiB上限を確認してください。 |
| 401 | unauthorized | Bearerヘッダーには、有効なAPIキーを省略せずに指定してください。プレフィックスだけのキー、削除済みのキー、モデル提供者のキーは使用できません。 |
| 402 | insufficient_tokens | トークンを購入するか、前のリクエストで確保されたトークンが解放されるまでお待ちください。利用可能残高と確保中の残高を確認してください。 |
| 403 | invalid_origin | ブラウザーセッションのオリジン確認によるエラーです。サーバーからの連携では、ブラウザーのCookieではなく有効なBearerキーを送信してください。 |
| 409 | idempotency_conflict | このrequestIdはすでに別の入力に使用されています。再試行には元の入力を使い、新しいタスクの場合は新しいUUIDを使ってください。 |
| 409 | request_pending / account_busy | 別の操作が保留中か、アカウントが処理中です。履歴を確認し、時間を置いて再試行してください。リクエストを並列に実行しないでください。 |
| 429 | rate_limited | Retry-Afterで指定された時間だけ待ってから、同じ操作を再試行してください。 |
| 502 / 503 | needs_review / upstream_rejected / service_unavailable / account_unavailable | 再試行の前に履歴を確認してください。needs_reviewの場合はサポートによる確認が必要です。代わりのリクエストを新たに開始しないでください。一時的なサービスエラーの場合は、時間を置いてお試しください。 |