APIリファレンス
LuxenoはOpenAI互換エンドポイントを2つ、Anthropic互換エンドポイントを1つ提供しています。すべてのエンドポイントは標準的なJSONリクエストボディを受け付け、標準的なJSONレスポンスを返します。
認証
すべてのリクエストにLuxenoのAPIキーを含める必要があります。2種類のヘッダー形式に対応していますので、お使いのクライアントライブラリに合わせてご利用ください。
Bearerトークン(推奨)
curl https://api.luxeno.ai/v1/chat/completions \
-H "Authorization: Bearer sk-silk-xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"model":"luxeno/glm-4-flash","messages":[{"role":"user","content":"Hello"}]}'x-api-keyヘッダー
curl https://api.luxeno.ai/v1/chat/completions \
-H "x-api-key: sk-silk-xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"model":"luxeno/glm-4-flash","messages":[{"role":"user","content":"Hello"}]}'APIキーの取得
sk-silk-サプライヤーの選択 (マーケットプレイス)
Luxenoは同じモデルに対して複数のサプライヤーをサポートしています。デフォルトでは既存の 'luxeno/X' 呼び出しはそのまま動作します。特定のサプライヤーを固定するには、モデルに 'lux-X/' プレフィックスを付けてください (例: 'lux-alpha/luxeno/glm-4-flash')。
luxeno/glm-4-flash — 後方互換性 — 既存の 'luxeno/X' 呼び出しは標準のアップストリームルーティングパスを介してそのまま動作します。コードの変更は不要です。lux-alpha/luxeno/glm-4-flash — 指定したサプライヤーのみにルーティング。サプライヤーがオフライン、このモデルを提供していない、または存在しない場合はエラーを返します。固定する前に /status でライブの可用性を確認してください。サプライヤーを固定すると価格が変わる可能性があります — 各サプライヤーが独自のマークアップを設定します。現在のサプライヤー別レートは /pricing をご覧ください。
マーケットプレイスサプライヤーの価格 + 健康状態:
モデルと料金
料金はすべてUSDで100万トークンあたりの価格です。入力トークンと出力トークンの料金が異なる場合は、それぞれ別途請求されます。
Tier alias(推奨)
特定モデルを指定せず、tier 単位でルーティングできます。Luxeno がその tier のデフォルトモデルへ自動振り分けします:
luxeno/shun= 瞬 Shunluxeno/hyou= 標 Hyō (★人気)luxeno/chi= 智 Chiluxeno/kyoku= 極 Kyoku
旧 alias (luxeno/lite, luxeno/core, luxeno/reason, luxeno/premium) は引き続きサポートされます。新規プロジェクトでは luxeno/shun, luxeno/hyou, luxeno/chi, luxeno/kyoku のご利用を推奨します。
OpenAI互換エンドポイント
標準モデル
| モデル | 入力 | 出力 | エンドポイント |
|---|---|---|---|
| luxeno/glm-4-flash | $0.30/1M | $0.30/1M | /v1/chat/completions |
| luxeno/glm-4 | $0.50/1M | $0.50/1M | /v1/chat/completions |
標準モデルはキャッシュを含むすべての入力トークンに同一料金が適用されます。
キャッシュ対応モデル
| モデル | 入力 | 出力 | キャッシュ読取 | キャッシュ書込 | キャッシュストレージ | エンドポイント |
|---|---|---|---|---|---|---|
| luxeno/claude-sonnet | $3.00/1M | $15.00/1M | $0.30/1M | $3.75/1M | — | /v1/chat/completions |
Anthropic互換エンドポイント
標準モデル
| モデル | 入力 | 出力 | エンドポイント |
|---|---|---|---|
| claude-sonnet-4-20250514 | $0.30/1M | $0.30/1M | /v1/messages |
| glm-4-flash | $0.30/1M | $0.30/1M | /v1/messages |
| glm-4.7 | $0.50/1M | $0.50/1M | /v1/messages |
| glm-5 | $0.50/1M | $0.50/1M | /v1/messages |
標準モデルはキャッシュを含むすべての入力トークンに同一料金が適用されます。
claude-sonnet-4-20250514, glm-4-flashclaude-sonnet-4-20250514、glm-4-flashなどのAnthropicフォーマットのモデルは、ZhipuのAnthropic互換エンドポイントを経由して同じ$0.30/1Mレートで提供されています — ネイティブのAnthropicより大幅に安価です。POST /v1/chat/completions
OpenAI互換のチャットエンドポイントです。openai.chat.completions.create() と同じリクエストスキーマを受け付けます — ベースURLとモデル名を変更するだけで置き換えられます。
リクエスト
POST /v1/chat/completions
Content-Type: application/json
Authorization: Bearer sk-silk-xxxxxxxxxxxx
{
"model": "luxeno/glm-4-flash",
"messages": [
{ "role": "system", "content": "You are a helpful assistant." },
{ "role": "user", "content": "Explain quantum entanglement in one sentence." }
],
"temperature": 0.7,
"max_tokens": 256
}レスポンス
{
"id": "chatcmpl-abc123",
"object": "chat.completion",
"created": 1748000000,
"model": "luxeno/glm-4-flash",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Quantum entanglement is a phenomenon where two particles become correlated such that measuring one instantly determines the state of the other, regardless of distance."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 31,
"completion_tokens": 38,
"total_tokens": 69
}
}ストリーミング (SSE)
"stream": true を設定するとサーバー送信イベントを受信できます。[DONE] の直前の最後のチャンクには、請求の透明性のために usage オブジェクトが含まれます。
POST /v1/chat/completions
Content-Type: application/json
Authorization: Bearer sk-silk-xxxxxxxxxxxx
{
"model": "luxeno/glm-4-flash",
"messages": [{ "role": "user", "content": "Count to five." }],
"stream": true
}
--- SSE response ---
data: {"id":"chatcmpl-xyz","object":"chat.completion.chunk","choices":[{"delta":{"role":"assistant","content":"1"},"index":0}]}
data: {"id":"chatcmpl-xyz","object":"chat.completion.chunk","choices":[{"delta":{"content":", 2"},"index":0}]}
data: {"id":"chatcmpl-xyz","object":"chat.completion.chunk","choices":[{"delta":{},"finish_reason":"stop","index":0}],"usage":{"prompt_tokens":12,"completion_tokens":10}}
data: [DONE]POST /v1/messages
Anthropic Messages API互換のエンドポイントです。公式のAnthropic SDKと同じリクエストスキーマを受け付けます。Anthropic APIを直接呼び出すツール(Claude Code、AnthropicモードのCursorなど)でご利用いただけます。
anthropic-versionヘッダー
リクエスト
POST /v1/messages
Content-Type: application/json
Authorization: Bearer sk-silk-xxxxxxxxxxxx
anthropic-version: 2023-06-01
{
"model": "claude-sonnet-4-20250514",
"max_tokens": 1024,
"system": "You are a concise technical writer.",
"messages": [
{ "role": "user", "content": "What is a B-tree index?" }
]
}レスポンス
{
"id": "msg_01AbCdEf",
"type": "message",
"role": "assistant",
"content": [
{
"type": "text",
"text": "A B-tree index is a balanced tree data structure that maintains sorted data and allows searches, insertions, deletions, and range queries in O(log n) time."
}
],
"model": "claude-sonnet-4-20250514",
"stop_reason": "end_turn",
"usage": {
"input_tokens": 24,
"output_tokens": 42
}
}ストリーミングSSEイベントの種類
AnthropicのSSEは単一の data: ストリームではなく、名前付きイベントタイプを使用します。主なイベント:
message_start— message.usage.input_tokens に入力トークン数が含まれますcontent_block_delta— delta.text にテキストチャンクが含まれますmessage_delta— usage.output_tokens に出力トークン数が含まれますmessage_stop— ストリームの終了を示します
data: {"type":"message_start","message":{"id":"msg_01AbCd","type":"message","role":"assistant","usage":{"input_tokens":24,"output_tokens":0}}}
data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}}
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"A B-tree index"}}
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" is a balanced tree..."}}
data: {"type":"message_delta","delta":{"stop_reason":"end_turn"},"usage":{"output_tokens":42}}
data: {"type":"message_stop"}SDK 互換性
Luxeno は Anthropic および OpenAI 公式 SDK(Python・TypeScript)の User-Agent をすべて受け入れます。api_key と base_url を上書きするだけで、フォークやプロキシなしに各 SDK から Luxeno を直接呼び出せます。
base_url の指定がよくある落とし穴
Python — Anthropic SDK
from anthropic import Anthropic
# Anthropic SDK appends /v1/messages internally — set base_url WITHOUT /v1
client = Anthropic(
api_key="sk-silk-...",
base_url="https://api.luxeno.ai",
)
msg = client.messages.create(
model="claude-haiku-4-5-20251001",
max_tokens=1024,
messages=[{"role": "user", "content": "Hello"}],
)
print(msg.content[0].text)Python — OpenAI SDK
from openai import OpenAI
# OpenAI SDK requires base_url to INCLUDE /v1
client = OpenAI(
api_key="sk-silk-...",
base_url="https://api.luxeno.ai/v1",
)
resp = client.chat.completions.create(
model="luxeno/glm-4-flash",
messages=[{"role": "user", "content": "Hello"}],
)
print(resp.choices[0].message.content)TypeScript — Anthropic SDK
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
apiKey: "sk-silk-...",
baseURL: "https://api.luxeno.ai",
});
const msg = await client.messages.create({
model: "claude-haiku-4-5-20251001",
max_tokens: 1024,
messages: [{ role: "user", content: "Hello" }],
});
console.log(msg.content[0].text);TypeScript — OpenAI SDK
import OpenAI from "openai";
const client = new OpenAI({
apiKey: "sk-silk-...",
baseURL: "https://api.luxeno.ai/v1",
});
const resp = await client.chat.completions.create({
model: "luxeno/glm-4-flash",
messages: [{ role: "user", content: "Hello" }],
});
console.log(resp.choices[0].message.content);レート制限
各ユーザーアカウントは、/v1/chat/completions と /v1/messages の両エンドポイントを合わせて1分間に60リクエストまでに制限されています(スライディングウィンドウ方式)。
HTTP/1.1 429 Too Many Requests
Retry-After: 12
Content-Type: application/json
{
"error": {
"message": "Rate limit exceeded",
"type": "rate_limit_error",
"code": 429
}
}Retry-After
エラーコード
すべてのエラーはOpenAI形式のエンベロープに従います:{ error: { message, type, code } }。/v1/messages エンドポイントのAnthropic形式のエラーは { type: 'error', error: { type, message } } を使用します。
| ステータス | 種別 | 原因 | 対処法 |
|---|---|---|---|
| 400 | invalid_request_error | モデル名が不正またはリクエストボディが不正 | モデル名とリクエストスキーマを確認してください |
| 401 | authentication_error | APIキーがないか無効 | ダッシュボードでキーを確認してください |
| 402 | payment_required | アカウント残高がゼロ | /billing で残高をチャージしてください |
| 429 | rate_limit_error | 1分60リクエストの制限を超過 | Retry-Afterヘッダーに従ってください |
| 500 | api_error | 予期しないサーバーエラー | 指数バックオフで再試行してください |
| 503 | api_error | 上流ゲートウェイが利用不可 | 再試行してください。ステータスページを確認してください |
プレイグラウンド
ブラウザから直接APIを試すことができます。プレイグラウンドは最初に有効なAPIキーを使用して /api/v1/chat/completions を呼び出します。リクエストは通常の料金でアカウントに請求されます。