# Chat completions endpoint: POST /api/v1/chat/completions

> Chat completions endpointのリファレンス: POST /api/v1/chat/completionsのすべてのbodyフィールド、レスポンス、finish理由、トークン使用量。OpenAI互換。

- URL: https://llmwithcrypto.com/ja/docs/chat-completions/
- 最終更新: 2026-10-23
- 発行者: LLMwithCrypto (https://llmwithcrypto.com)

1つのendpointがすべてのモデルに応答します。OpenAI chat completions APIと同じbodyを受け取り、同じオブジェクトを返すため、既存の連携ではベースURL、APIキー、当社リストのモデルIDを新しくするだけで済みます。

**クイック回答 — LLMwithCryptoのchat completions endpointはどのフィールドを受け付けますか？**

OpenAI chat completionsのbodyを受け付けます。`model`と`messages`は必須で、`max_tokens`、`temperature`、`top_p`、`stop`、`stream`、`stream_options`、`tools`、`tool_choice`、`response_format`は任意です。**LLMwithCrypto**は`usage`のカウントを含む`chat.completion`オブジェクトを返し、2026年10月23日に記載のとおり、クレジットからトークン単位で課金されます。ツール呼び出しとJSON出力はモデルによって異なります。

## endpointの概要

| 属性 | 値 |
| --- | --- |
| メソッドとURL | `POST https://llmwithcrypto.com/api/v1/chat/completions` |
| 認証 | OpenAI SDKと同様に、APIキーをAuthorizationヘッダーにBearerトークンとして渡してください |
| Body | JSON、`Content-Type: application/json` |
| レスポンス | `chat.completion`オブジェクト、または`stream: true`によるserver-sent events |
| 課金 | 残高からトークン単位で支払います。入力トークンと出力トークンはモデル自身のトークナイザーでカウントされ、そのモデルの100万トークンあたりの価格で請求されます。エラーで終わった呼び出しは無料です |
| 機能 | ストリーミングはすべてのモデルで利用できます。tool callingとJSON出力は、各モデル自体が対応している範囲に従います |

## チャット補完を作成する

`POST /api/v1/chat/completions`

会話を1つのモデルに送信し、トークン数とともにその回答を返します。この例ではDeepSeek V4 Proに200トークンの上限付きで短い質問をします。レスポンスのID、時刻、カウントは例示です。

認証: `Authorization: Bearer API_KEY` ヘッダーに APIキーを指定します。

**リクエストボディ**

| フィールド | 型 | 必須 | 説明 |
| --- | --- | --- | --- |
| `model` | string | はい | `deepseek-v4-pro`や`gpt-oss-120b`などのモデルID。`GET /api/v1/models`はAPIキーで呼び出せるすべてのIDを返します。 |
| `messages` | object[] | はい | 会話を古い順に並べたもの。各項目には`role`（`system`、`user`、`assistant`、`tool`のいずれか）と`content`文字列があり、`tool`メッセージには`tool_call_id`も含まれます。 |
| `max_tokens` | integer | いいえ | 回答が使用できる最大トークン数。指定しない場合、モデルはコンテキストウィンドウが満杯になるまで書き続けることがあり、書き込んだすべてのトークンに対して支払いが発生します。 |
| `temperature` | number | いいえ | 0〜2。低いほど予測しやすく、高いほど多様になります。デフォルトはモデルによって異なります。 |
| `top_p` | number | いいえ | 0〜1、nucleus sampling。`temperature`と`top_p`の両方ではなく、どちらか一方を変更してください。 |
| `stop` | string or string[] | いいえ | モデルが書き込むと回答を終了させる最大4つのシーケンス。回答には含まれません。 |
| `stream` | boolean | いいえ | `true`は回答をserver-sent eventsとして少しずつ送信します。[ストリーミング](https://llmwithcrypto.com/ja/docs/streaming/)を参照。 |
| `stream_options` | object | いいえ | `{"include_usage": true}`はストリーミング呼び出しの`usage`を含む最後のイベントを追加します。 |
| `tools` | object[] | いいえ | モデルが呼び出しを求める可能性がある関数をOpenAI形式で指定。ツール呼び出しをサポートするモデルで動作します。[ツール呼び出し](https://llmwithcrypto.com/ja/docs/tool-calling/)を参照。 |
| `tool_choice` | string or object | いいえ | `auto`（`tools`が設定されている場合のデフォルト）、`none`、`required`、または`{"type": "function", "function": {"name": "…"}}`。 |
| `response_format` | object | いいえ | `{"type": "json_object"}`は有効なJSONオブジェクトを要求します（対応モデルのみ）。JSONに何を含めるべきかをプロンプトで指定してください。 |

*例: a short answer from DeepSeek V4 Pro*

```json
{
  "model": "deepseek-v4-pro",
  "messages": [
    {
      "role": "system",
      "content": "Answer in two sentences."
    },
    {
      "role": "user",
      "content": "What is a context window?"
    }
  ],
  "max_tokens": 200
}
```

*例: a JSON object from gpt-oss-120b, low temperature*

```json
{
  "model": "gpt-oss-120b",
  "messages": [
    {
      "role": "user",
      "content": "Return {\"city\": string, \"country\": string} for the Eiffel Tower."
    }
  ],
  "response_format": {
    "type": "json_object"
  },
  "temperature": 0.2,
  "max_tokens": 100
}
```

**レスポンス** `200`

```json
{
  "id": "chatcmpl-8f2c41d0a7b94e1c",
  "object": "chat.completion",
  "created": 1792742400,
  "model": "deepseek-v4-pro",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "A context window is the maximum number of tokens a model can read and write in one request. Anything beyond it must be cut or summarized before the call."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 27,
    "completion_tokens": 34,
    "total_tokens": 61
  }
}
```

*curl*

```bash
curl -s "https://llmwithcrypto.com/api/v1/chat/completions" \
  -H "Authorization: Bearer $LLMWITHCRYPTO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-v4-pro",
    "messages": [
      {"role": "system", "content": "Answer in two sentences."},
      {"role": "user", "content": "What is a context window?"}
    ],
    "max_tokens": 200
  }'
```

*Python*

```python
import os

from openai import OpenAI

client = OpenAI(
    base_url="https://llmwithcrypto.com/api/v1",
    api_key=os.environ["LLMWITHCRYPTO_API_KEY"],
)

resp = client.chat.completions.create(
    model="deepseek-v4-pro",
    messages=[
        {"role": "system", "content": "Answer in two sentences."},
        {"role": "user", "content": "What is a context window?"},
    ],
    max_tokens=200,
)
print(resp.choices[0].message.content)
print(resp.usage.prompt_tokens, "in,", resp.usage.completion_tokens, "out")
```

*Node.js*

```javascript
import OpenAI from 'openai';

const client = new OpenAI({
  baseURL: 'https://llmwithcrypto.com/api/v1',
  apiKey: process.env.LLMWITHCRYPTO_API_KEY,
});

const resp = await client.chat.completions.create({
  model: 'deepseek-v4-pro',
  messages: [
    { role: 'system', content: 'Answer in two sentences.' },
    { role: 'user', content: 'What is a context window?' },
  ],
  max_tokens: 200,
});
console.log(resp.choices[0].message.content);
console.log(resp.usage.prompt_tokens, 'in,', resp.usage.completion_tokens, 'out');
```

## メッセージはどう書けばよいですか？

毎回、会話全体を古いメッセージから順に送信してください。APIは呼び出し間で記憶を保持せず、プロンプトの内容も保存されません。プロンプトやモデルの回答は保存しません。レスポンスを送信した時点で、そのテキストは残りません。各呼び出しにつき、時刻、アカウント、モデル、トークン数を記録したログが1行残り、30日後に削除されます。

- **`system`**: 口調、言語、出力形式など、すべての回答の枠組みとなる指示です。先頭に1つ置きます。
- **`user`**: ユーザーまたはあなたのプログラムからの質問です。
- **`assistant`**: モデルの以前の回答です。これにより会話を続けられます。
- **`tool`**: モデルが実行を依頼した関数の結果で、モデルが渡した`tool_call_id`を含みます。

すべてのメッセージが入力トークンとしてカウントされるため、履歴が長いほど各ターンのコストが増えます。会話が長くなったら、古いターンを削除するか要約してください。

## リクエストの長さはどれくらいまで可能ですか？

入力と出力を合わせて、モデルのコンテキストウィンドウに収まる必要があります。2026年10月23日時点では、DeepSeek V4 Proは最大1Mトークン、gpt-oss-120bは最大128K、Qwen3 235Bは最大256Kを読み取ります。詳細は[モデルページ](https://llmwithcrypto.com/ja/models/)に一覧があります。

収まらないリクエストはコード`context_length_exceeded`の`400`として返され、料金はかかりません。プロンプトと受け入れる最長の回答がウィンドウ内に収まるように`max_tokens`を設定してください。

## finish_reason から何がわかりますか？

| `finish_reason` | 意味 | 対処方法 |
| --- | --- | --- |
| `stop` | モデルが回答を終了した、または指定した`stop`シーケンスのいずれかを出力した | 何もする必要はありません。回答は完了しています |
| `length` | 回答が`max_tokens`またはコンテキストウィンドウに達した | `max_tokens`を増やすか、より短い回答を要求してください |
| `tool_calls` | モデルが1つ以上の関数の実行を求めている | 実行して結果を返送してください。[tool calling](https://llmwithcrypto.com/ja/docs/tool-calling/)を参照 |

## どの OpenAI パラメータがサポートされていませんか？

上の表のフィールドが契約のすべてです。OpenAI API のその他のフィールド、たとえば`n`（1回の呼び出しで複数の回答）、`logprobs`、`audio`、画像入力などはサポートされていません。ここに記載されているフィールドのみを送信してください。モデルはすべてテキストモデルであり、このendpointで画像を受け取るものはありません。

`model`フィールドは当社のリストにあるidのみを受け付けます。GPT、Claude、Gemini、Grokへのアクセスは販売していません。これらの提供元は自社の承認なしにAPIアクセスの再販を禁じており、当社はその承認を得ていません。

## Chat completions: よくある質問

### レガシーの completions endpoint はありますか？

いいえ。chat 形式のみ存在します。単一のプロンプトは`user`メッセージを1つ含む`messages`配列です。

### 呼び出しの料金はいくらですか？

残高からトークン単位で支払います。入力トークンと出力トークンはモデル自身のトークナイザーでカウントされ、そのモデルの100万トークンあたりの価格で請求されます。エラーで終わった呼び出しは無料です。モデルごとの価格は[料金ページ](https://llmwithcrypto.com/ja/pricing/)に記載されています。

### 過去のリクエストを確認できますか？

いいえ、設計上できません。プロンプトやモデルの回答は保存しません。レスポンスを送信した時点で、そのテキストは残りません。各呼び出しにつき、時刻、アカウント、モデル、トークン数を記録したログが1行残り、30日後に削除されます。

### 回答が途中で止まったのはなぜですか？

その場合`finish_reason`は`length`になります。回答が`max_tokens`に達したためです。モデルのコンテキストウィンドウ内で増やしてください。

---

LLMwithCrypto: LLMwithCryptoは、オープンウェイトモデル向けのOpenAI互換LLM APIです — DeepSeek V4 Pro、DeepSeek V4.1 Flash、DeepSeek R1、Qwen3.5 397B A17B、Qwen3 235B A22B Instruct、gpt-oss-120b、gpt-oss-20b、GLM-4.7、Llama 3.3 70B Instruct、Gemma 4 31B、Mistral Large 3、Mistral Small 4 — 前払いの暗号資産残高からトークン単位で支払い、公開ホストの中央値価格より5%安くご利用いただけます。KYC不要:本人確認書類、自撮り写真、証明書類は一切不要です。プロンプトと出力は保存されません。
