メインコンテンツへ移動
LocoPal AiLocoPal Ai
API 連携モデルと生成エンドポイント

ガイド

モデルとテキストのエンドポイント

利用可能なモデルの照会とテキスト対話(ストリーミングを含む)のリクエスト・レスポンス仕様

Markdown を表示

モデルとテキストのエンドポイント

モデルカタログとテキスト対話はいずれも同じプラットフォーム API Key を使用します。共通の取り決め(ベースアドレス、認証、レート制限、リトライ)は認証と基本仕様を参照してください。

モデル一覧の照会

GET/v1/models

認証方式

Authorization: Bearer <API_KEY>。

リクエストパラメータ

リクエストボディはありません。リクエストヘッダーに API Key を付与するだけで構いません。

リクエスト例

このステップではリクエストボディは不要で、リクエストヘッダーに API Key を付けるだけで構いません。 返される data[].id が、以降のすべての呼び出しで使用するモデル ID です。

リクエスト

curl "https://locopalai.com/v1/models" \
  -H "Authorization: Bearer $LOCOPAL_API_KEY"

レスポンスパラメータ

パラメータ型説明
objectstring固定で list
successboolean照会成功時に true
dataarray現在の Key で呼び出し可能なモデル一覧
data[].idstringモデル ID。リクエスト送信時にそのまま記入する
data[].objectstring固定で model
data[].createdintegerカタログの登録時刻(Unix 秒)
data[].owned_bystringモデル提供元の識別子。参考情報
data[].supported_endpoint_typesstring[]このモデルで利用可能なエンドポイント種別

object と success はトップレベルのフィールドで、data[] の内部にはありません。object は固定で list、 success は成功時に true です。リクエストの成功判定は HTTP ステータスコードを基準とし、success は補助的にのみ使用してください。

レスポンスボディ

{
  "data": [
    {
      "id": "doubao-seedance-2.0",
      "object": "model",
      "created": 1626777600,
      "owned_by": "doubaovideo",
      "supported_endpoint_types": ["openai"]
    },
    {
      "id": "claude-sonnet-4-5-20250929",
      "object": "model",
      "created": 1626777600,
      "owned_by": "claude",
      "supported_endpoint_types": ["anthropic", "openai"]
    }
  ],
  "object": "list",
  "success": true
}

"data": [] が返された場合は、現在の Key が属する呼び出しグループに利用可能なモデルがないことを示します。まずグループ設定を確認するか、プラットフォームサポートに連絡してください。ページに表示される名称に変えてリトライしないでください。モデルカタログは権限やプラットフォームの可用性によって変化するため、サービス起動時、ユーザーがモデルを選択した時、または「モデル利用不可」を受け取った時に 1 回更新することを推奨します。

エラーレスポンス

HTTPレスポンス説明
401{"error":{"code":"","message":"Invalid token (request id: ...)","type":"new_api_error"}}API Key の欠落、誤り、失効
500{"error":{"message":"...","type":"new_api_error"}}カタログ照会の失敗。リクエスト識別子を保持してリトライする

テキスト対話

POST/v1/chat/completions

認証方式

Authorization: Bearer <API_KEY>。

リクエストボディ · application/json

パラメータ型必須説明
modelstring必須/v1/models が返すテキストモデル ID
messagesarray必須時系列順に並んだメッセージ
messages[].rolestring必須system、user、assistant のいずれか
messages[].contentstring必須現在のメッセージ内容
streamboolean任意true の場合は SSE によるストリーミングで返し、[DONE] を読むと終了する
temperaturenumber任意サポートの有無は現在のモデルの実際の能力に準じる
max_tokensinteger任意サポートの有無は現在のモデルの実際の能力に準じる

リクエスト例

model には /v1/models が返す id を必ず記述し、ページ上の表示名は使用しないでください。 stream を true にすると SSE で逐次返され、[DONE] を読むと終了します。

右側には 3 言語の等価な書き方を示しています。タブを切り替えて見比べてください。

curl -X POST "https://locopalai.com/v1/chat/completions" \
  -H "Authorization: Bearer $LOCOPAL_API_KEY" \
  -H "Content-Type: application/json" \
  --data-binary @- <<'JSON'
{
  "model": "从 /v1/models 选择的文本模型 ID",
  "messages": [{ "role": "user", "content": "只回复两个字:你好" }],
  "stream": false
}
JSON

レスポンスパラメータ

パラメータ型説明
idstring今回のレスポンス識別子。調査と突合に使用する
objectstring非ストリーミング時は chat.completion
createdintegerレスポンス時刻(Unix 秒)
modelstring今回のリクエストで使用したモデル ID
choicesarray結果一覧
choices[].indexinteger結果の番号
choices[].message.rolestring固定で assistant
choices[].message.contentstring生成されたテキスト
choices[].finish_reasonstring終了理由。length は長さで打ち切られたことを示す
usage.prompt_tokensinteger入力使用量
usage.completion_tokensinteger出力使用量
usage.total_tokensinteger合計使用量
choices[].message.refusalstring / nullモデルが内容を拒否した場合の説明。通常の回答ではたいてい null
choices[].message.annotationsarrayモデルによる付加的な注釈。空の場合がある

usage には今回の課金の詳細な使用量フィールド(キャッシュヒット、入力/出力の内訳など)が含まれる場合があります。実際の返却に準じてください。一部のチャネルは latency_checkpoint、routing、system_fingerprint などの拡張フィールドも返します。クライアントは認識しないフィールドを無視し、固定のフィールド全集として解析しないでください。

レスポンスボディ

{
  "id": "msg_011CevNtsfivFKb6YP3WcL7A",
  "model": "claude-haiku-4-5-20251001",
  "object": "chat.completion",
  "created": 1789071575,
  "choices": [
    {
      "index": 0,
      "message": { "role": "assistant", "content": "你好" },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 20587,
    "completion_tokens": 6,
    "total_tokens": 20593
  }
}

ストリーミングレスポンス(リクエストボディに "stream": true を追加し、レスポンスは text/event-stream):

data: {"choices":[{"delta":{"content":"这是"}}]}
data: {"choices":[{"delta":{"content":"模型输出"}}]}
data: [DONE]

クライアントは [DONE] まで読み取り続ける必要があります。ストリーミングレスポンスが中間層でキャッシュされたり、重複した内容に結合されたりしないようにしてください。最後のデータブロックは usage のみを含む場合があり、その際 choices は空になることがあります。

推論モデルは空のコンテンツを返す場合がある

一部の推論モデルは出力クォータを優先的に非公開の推論に使用します。実測では、gpt-5-nano を max_tokens を非常に小さくしてリクエストすると、HTTP は 200 を返しますが、message.content は空で finish_reason は length、usage.completion_tokens_details.reasoning_tokens は出力上限と等しくなります。このような場合はクォータを増やすか、推論を行わないテキストモデルに切り替えてください。空文字列をモデルの故障やエンドポイントの失敗とみなしてはいけません。

サーバー側の例

const response = await fetch('https://locopalai.com/v1/chat/completions', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.LOCOPAL_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    model: '从 /v1/models 选择的模型 ID',
    messages: [{ role: 'user', content: '写一条产品简介。' }],
  }),
})

if (!response.ok) throw new Error(await response.text())
const data = await response.json()

API Key をブラウザのコードに含めないでください。フロントエンドのリクエストはまず自社の業務バックエンドに送り、バックエンドから転送してください。

エラーレスポンス

{
  "error": {
    "code": "model_not_found",
    "message": "No available channel for model xxx under group xxx (distributor) (request id: ...)",
    "type": "new_api_error"
  }
}
HTTPレスポンス / 原因対応
400{"error":{"code":"","message":"Model name not specified, model name cannot be empty (request id: ...)","type":"new_api_error"}}リクエストボディに model がない
401Invalid tokenAPI Key の欠落、誤り、失効
503{"error":{"code":"model_not_found","message":"No available channel for model ..."}}現在のグループにこのモデルの利用可能なチャネルがない。同種のモデルに変更するか、プラットフォームサポートに連絡する
429リクエスト頻度の制限バックオフしてリトライする

完全な説明はエラーコードとトラブルシューティングを参照してください。

このページは役に立ちましたか?

このページの目次