ドキュメント
Layer AI は OpenAI の Chat Completions API と同じ形で使えます。
はじめかた
- Layer アカウントでログインし、「API キー」でキーを発行します(初回はお試しクレジットが付きます)。
- OpenAI SDK の
base_urlをhttps://ai.layer.fan/api/v1に、api_keyを発行したキーにします。 - 使えるモデルは
GET /api/v1/modelsで確認します。
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://ai.layer.fan/api/v1", apiKey: process.env.LAYER_AI_API_KEY });
const stream = await client.chat.completions.create({
model: "openai/gpt-4o-mini",
messages: [{ role: "user", content: "俳句をひとつ" }],
stream: true,
});
for await (const chunk of stream) process.stdout.write(chunk.choices[0]?.delta?.content ?? "");認証
Authorization: Bearer sk-layer-… を付けます(x-api-key ヘッダーでも可)。 キーは発行時に一度だけ表示されます。漏れたら「API キー」から失効させ、新しく発行してください。
エンドポイント
| メソッド | パス | 説明 |
|---|---|---|
| GET | /api/v1/models | 使えるモデルと単価(USD / 100 万トークン) |
| GET | /api/v1/models/{model} | 1 つのモデル |
| POST | /api/v1/chat/completions | チャット補完。stream: true で SSE |
| GET | /api/v1/dashboard/billing/subscription・/usage | 残高と使用額(OpenAI の旧 billing API と同じ形。既存ツールの残高表示用) |
ストリーミングで使用量も受け取りたいときは "stream_options": {"include_usage": true} を付けます。
料金と上限
送る前に、入力の長さと max_tokens から見積額を出して残高から押さえ、終わったら実際の利用額で精算します (差額は戻ります)。見積額に残高が足りないときは 402 を返します。max_tokens を指定しないと見積額が大きくなるので、 残高が少ないうちは指定してください。失敗したリクエストは請求しません。
キーには使用額の上限・使えるモデル・有効期限を付けられます。応答の x-request-id は「使用量」の記録と対応します。
キーごとに 1 日(UTC)のリクエスト数とトークン数の上限があります。現在の値と今日の使用量は「API キー」で確認できます。
エラー
OpenAI と同じ {"error": {"message", "type", "code"}} の形で返します。
| status | code / type | 意味 |
|---|---|---|
| 400 | invalid_request_error | 本文が JSON でない、model / messages が無いなど |
| 401 | invalid_api_key | キーが無い・正しくない・失効している |
| 401 | expired_api_key | キーの有効期限が切れている |
| 402 | insufficient_balance | 残高がこのリクエストの見積額に足りない(max_tokens を小さくすると下がる) |
| 402 | key_spend_limit | キーの使用額の上限に達する |
| 403 | model_not_allowed | このキーではそのモデルを使えない |
| 404 | model_not_found | そのモデルは使えない |
| 429 | daily_request_limit / daily_token_limit | キーの 1 日の上限に達した(UTC 0 時に戻る) |
| 502 | upstream_error | 推論先に接続できなかった |
| 501 | not_implemented | まだ対応していないエンドポイント(embeddings など) |
| 503 | upstream_unavailable | 一時的に推論を受け付けられない。時間をおいて再試行 |