JEVエコシステムを紹介する独立したガイドです。 JEV公式サイト
開発者ガイド

API

アプリケーションをJEV AIに接続しましょう。キーを作成し、構造化された質問を送信して、ご自身のコードで結果を読み取れます。

APIキーを管理

最初の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キーは非公開のままにしてください。
  1. 01

    APIキーを作成

    「APIキー」でキーを作成してください。コピーボタンまたはキーのプレフィックスをクリックすると、キー全体をコピーできます。ハッシュのみが保存されている古いキーは復元できないため、必要に応じて新しいキーを作成してください。

    APIキーを管理
  2. 02

    トークン残高を確認

    APIリクエストはPlaygroundと同じ購入済みトークン残高を使用します。キーは無料で作成できます。モデルへのリクエストを実行する前に、トークンパッケージを購入してください。

    トークンを購入
  3. 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/run

choiceは2〜255個の選択肢からカテゴリーを選びます。この例では、サポートチケットを担当チームに振り分けます。

curl 7.76以降とuuidgenを備えたBash互換シェルを使用してください。先に同じターミナルでJEV_API_KEYを設定します。

Shell
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から回答を読み取ります。再送したリクエストでは、処理中や解放済みのレコードが返ることがあります。

JSON
{
  "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
    }
  }
}

リクエストパラメーター

フィールド型 / 値説明
requestIdUUID必須。1つの操作を識別するUUIDです。同じペイロードで再試行したときに、モデルの重複実行を防ぎます。
modeltypesafe/jev-1.13任意。既定ではこのモデルを使用します。ほかのモデル名は指定できません。
statestring | string[] | object必須。すべての質問で共有するコンテキストです。文字列は1〜16,000文字、配列はこの条件を満たす文字列を1〜100個含められます。JSONオブジェクトも指定できます。
questionsobject必須。名前付きの質問を1〜8個指定します。名前はASCIIの英字で始め、英数字とアンダースコアのみを使い、64文字以内にしてください。
questions.*.typechoice | score | noul各質問で必須です。上でタイプを選択すると、対応する例を確認できます。
questions.*.instructionsstring必須。判断したい内容を1〜16,000文字で明確に記述してください。
questions.*.criteriaobject | string[]choice:選択肢の説明を2〜255個含むオブジェクト(説明はnullでも可)。score:順序付きの説明を2〜10個。noul:このフィールドを省略します。

JSON本文全体の上限は32 KiBです。トップレベルや質問に余分なフィールドがあると拒否されます。APIパスには/zhの言語プレフィックスを付けません。

残高とリクエスト履歴を確認

GET /api/jev/account
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エラーコード対処方法
400invalid_requestJSONの構造、質問の判断基準、UUIDの形式、本文の32 KiB上限を確認してください。
401unauthorizedBearerヘッダーには、有効なAPIキーを省略せずに指定してください。プレフィックスだけのキー、削除済みのキー、モデル提供者のキーは使用できません。
402insufficient_tokensトークンを購入するか、前のリクエストで確保されたトークンが解放されるまでお待ちください。利用可能残高と確保中の残高を確認してください。
403invalid_originブラウザーセッションのオリジン確認によるエラーです。サーバーからの連携では、ブラウザーのCookieではなく有効なBearerキーを送信してください。
409idempotency_conflictこのrequestIdはすでに別の入力に使用されています。再試行には元の入力を使い、新しいタスクの場合は新しいUUIDを使ってください。
409request_pending / account_busy別の操作が保留中か、アカウントが処理中です。履歴を確認し、時間を置いて再試行してください。リクエストを並列に実行しないでください。
429rate_limitedRetry-Afterで指定された時間だけ待ってから、同じ操作を再試行してください。
502 / 503needs_review / upstream_rejected / service_unavailable / account_unavailable再試行の前に履歴を確認してください。needs_reviewの場合はサポートによる確認が必要です。代わりのリクエストを新たに開始しないでください。一時的なサービスエラーの場合は、時間を置いてお試しください。
サポートに問い合わせる