# Gemini 4 Argon — /chat/completions

Gemini 4 Argon Beta はテキスト対話、ストリーミング、Low / Medium / High の3段階の思考に対応し、既定は Low です。OpenAI SDK で利用でき、思考トークンは出力として課金されます。

**エンドポイント:** `POST https://nezhagate.com/v1/chat/completions`

## クイックスタート

2 ステップで動きます：まずリクエストを送信し、次にストリーミングで回答を受け取ります。YOUR_API_KEY をご自身のキーに置き換えれば、下のコマンドはそのまま実行できます。エンドポイントは OpenAI の Chat Completions と同じなので、既存の OpenAI のコードは `base_url` と `model` を変えるだけで使えます。

**ステップ 1 · リクエストを送信**

```
curl https://nezhagate.com/v1/chat/completions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "gemini-4-argon", "messages": [{"role": "user", "content": "光合成を一文で説明してください"}]}'
```

レスポンス（HTTP 200）

```
{
  "id": "chatcmpl-7f3c9a1e2b4d6f8a",
  "object": "chat.completion",
  "created": 1791281400,
  "model": "gemini-4-argon",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "光合成とは、植物が日光を使って二酸化炭素と水から糖をつくり、酸素を放出するしくみです。",
        "reasoning_content": "..."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 18,
    "completion_tokens": 186,
    "total_tokens": 204,
    "prompt_tokens_details": {"cached_tokens": 0},
    "completion_tokens_details": {"reasoning_tokens": 144}
  }
}
```

`message.content` が回答、`message.reasoning_content` が思考の内容です。`usage` はこのリクエストで課金されるトークン数で、思考トークンは `completion_tokens` に含まれ、出力料金で課金されます。

**ステップ 2 · ストリーミングで受け取る（推奨）**

```
curl -N https://nezhagate.com/v1/chat/completions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "gemini-4-argon", "stream": true, "messages": [{"role": "user", "content": "光合成を一文で説明してください"}]}'
```

ストリームは標準的な SSE です。各チャンクの本文は `choices[0].delta.content` に入り、最後のチャンクに `usage` が付き、`data: [DONE]` で終わります。回答が長い場合や思考モデルでは、ストリーミングを使ってください。ストリーミングしないリクエストは約 10 分で切断されます。

**Python（OpenAI SDK）**

```
from openai import OpenAI

client = OpenAI(base_url="https://nezhagate.com/v1", api_key="YOUR_API_KEY")

# 1. 一問一答
resp = client.chat.completions.create(
    model="gemini-4-argon",
    messages=[{"role": "user", "content": "光合成を一文で説明してください"}],
)
print(resp.choices[0].message.content)

# 2. ストリーミング
stream = client.chat.completions.create(
    model="gemini-4-argon",
    messages=[{"role": "user", "content": "光合成を一文で説明してください"}],
    stream=True,
)
for chunk in stream:
    if chunk.choices and chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)
```

## 認証
```
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
```

## 仕様早見表

| 入力と出力で共有するコンテキスト | 約100万 トークン |
| --- | --- |
| 入力 | テキスト |
| 思考 | `low / medium / high` を選択でき、既定は `low` です。各段階のトークン単価は同じです。 |
| ツール呼び出し | 保証なし：`tools` が無視され、モデルがそのまま回答することがあります |
| ウェブ検索 | 対応（`web_search: true`。検索自体は無料） |
| エンドポイント | /v1/chat/completions |
| ストリーミング | 対応（`stream: true`、SSE） |
| 課金方法 | トークン単位：入力、出力（思考を含む）、キャッシュヒットをそれぞれの料金で課金し、失敗は課金されません |

## リクエストパラメータ

`POST /v1/chat/completions` のリクエスト本文（JSON）で、OpenAI の Chat Completions と同じです。よく使うパラメータと、このモデルでの実際の動作は次のとおりです：

| パラメータ | 種別 | 必須 | 説明 |
| --- | --- | --- | --- |
| model | string | はい | モデル ID：`gemini-4-argon`。 |
| messages | array | はい | 会話のメッセージの配列です。各メッセージは `role`（`system` / `user` / `assistant` / `tool`）と `content` を持ちます。複数ターンの対話では、これまでの履歴をすべて順番どおりに送ってください。 |
| stream | boolean | いいえ | `true` にすると SSE でストリーミングし、最後のチャンクに `usage` が付きます。既定は `false` です。 |
| max_tokens | integer | いいえ | 思考を含む希望出力長です。この Beta では厳密な出力上限を保証しません。費用を管理するにはプロンプトで長さを指定し、処理を分割してください。 |
| temperature / top_p | number | いいえ | サンプリングパラメータは送信できますが、この Beta では制御効果を個別に検証していません。 |
| reasoning_effort | string | いいえ | `low / medium / high` を選択でき、既定は `low` です。各段階のトークン単価は同じです。 |
| web_search | boolean | いいえ | `true` にすると、まずウェブ検索を行い、その結果を参考資料としてモデルに渡します。詳しくは下記をご覧ください。 |

まず本ページのパラメータを使用してください。ツール呼び出し、マルチモーダル入力、JSON モードは現時点では保証しません。

## 料金

トークン単位で課金します。下の表は 100 万トークンあたりの最新の料金です。課金されるのは成功したリクエストの実際の使用量だけで、失敗、タイムアウト、拒否の場合は課金されません。1 クレジット = $0.005 です。

| 種類 | USD / 100 万トークン | クレジット / 100 万トークン |
| --- | --- | --- |
| 入力 | $0.50 | 100 |
| 出力（思考を含む） | $3.00 | 600 |
| キャッシュヒット | $0.05 | 10 |

たとえば、入力 2,000 トークン、出力 1,000 トークン（思考を含む）のリクエストは約 $0.004 です。

## 思考

`reasoning_effort` を `low`、`medium`、`high` に設定します。省略時は `low` です。

表示可能な思考は `reasoning_content` に返ります。`usage.completion_tokens` は思考と回答を含むため、思考トークンを二重加算しないでください。

3段階の単価は同じです。思考強度を上げると出力トークンが増える場合があります。

思考トークンは `usage.completion_tokens` に含まれ、出力料金で課金されます（一部のモデルは `completion_tokens_details.reasoning_tokens` で内訳も返します）。

```
{
  "model": "gemini-4-argon",
  "messages": [{"role": "user", "content": "光合成を一文で説明してください"}],
  "reasoning_effort": "medium"
}
```

## プロンプトキャッシュ

自動の暗黙的キャッシュに対応します。長い入力の再送でヒットする場合があり、実際のヒット分は通常入力単価の1/10で計算します。毎回のヒットは保証せず、明示的キャッシュの作成機能は提供しません。

`usage.prompt_tokens` は入力総量です。`usage.prompt_tokens_details.cached_tokens` はそのうちのヒット分です。実際のヒット分だけをキャッシュ単価で計算します。

## ウェブ検索

任意のゲートウェイ機能 `web_search` は検索テキストをモデルに渡します。モデル固有の検索やツール対応を検証したという意味ではありません。

```
curl https://nezhagate.com/v1/chat/completions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "gemini-4-argon", "web_search": true, "messages": [{"role": "user", "content": "今日の主なテクノロジーニュースは何ですか"}]}'
```

## Beta の提供範囲

- テキスト対話、ストリーミング、3段階の思考を検証しました。ツール、マルチモーダル入力、JSON モードは未検証です。

- 公式コンテキストは約100万トークンで、入力と出力で共有します。長い入力の検索は検証済みですが、全ウィンドウや100万トークンの出力は未検証です。

- 長い処理は分割してください。`max_tokens` は検証済みの厳密な予算上限ではありません。失敗リクエストは課金せず、出力後の中断は実使用量で精算します。

## エラーと返金

エラーは `error` オブジェクト（`message`、`type`、`code`、`param`）で返ります。判定には HTTP ステータスコードと `code` を使い、`message` の文面では判定しないでください。失敗したリクエストは課金されません。完全な一覧は [エラーコード](https://nezhagate.com/ja/docs/guide/errors) をご覧ください。

| HTTP | code | 原因 | 対処 |
| --- | --- | --- | --- |
| 400 | invalid_messages / invalid_role / invalid_max_tokens | 対話リクエストの `messages` がない・空・形式が正しくない、`role` が許可された値ではない、または `max_tokens` が正の整数ではありません。`param` が該当するフィールドを示します。 | `param` が示すフィールドを直してください。 |
| 400 | model_not_found | モデル ID のつづりが違う・`model` がない・そのモデルをこのエンドポイントでは使えない（たとえば対話モデルで画像のエンドポイントを呼び出した）のいずれかです。 | `GET /v1/models` または [API リファレンス](https://nezhagate.com/ja/docs/api) にあるモデル ID を使ってください。 |
| 400 | max_tokens_too_small | 推論モデルが `max_tokens` をすべて思考に使い切り、回答を書けませんでした（ストリーミングしない対話）。 | `max_tokens` を増やしてから再試行してください。 |
| 4xx | invalid_request | モデル提供元がリクエストを拒否しました（コンテキストが長すぎる、対応していないパラメータがあるなど）。ステータスコードと `message` はモデル提供元が返したまま渡され、`code` はモデル提供元の値です。 | `message` の内容に沿ってリクエストを変更してください。 |
| 401 | invalid_api_key | キーが存在しない・削除された・無効化されているか、アカウントが停止されています。 | コンソールの「API Keys」ページでキーを確認してください。 |
| 402 | insufficient_quota | このリクエストの分を確保するだけの残高がありません。ゲートウェイはまずリクエストにかかりうる最大の費用を確保するため、同時に多くの呼び出しを送ったときにも起こることがあります。 | 一度に多くの呼び出しを送った直後なら、数秒待って再試行してください。そうでなければチャージしてください。 |
| 403 | permission_denied | そのモデルがキーのモデル許可リストに入っていません。 | 許可リストにあるモデルを使うか、コンソールで許可リストを変更してください。 |
| 429 | rate_limit_exceeded | このキーに設定した 1 分あたりのリクエスト数の上限を超えました（直近 60 秒で数えます）。`Retry-After` ヘッダーは付きません。 | 数秒待ってから再試行するか、コンソールでこのキーの上限を引き上げてください。 |
| 429 | rate_limit_exceeded | このモデルのすべての回線が混み合っていて、リクエストは送られませんでした。対話エンドポイントでのみ発生し、画像と動画のタスクは拒否されずに順番待ちになります。OpenAI 互換のエンドポイントでは `Retry-After` が付きます。 | `Retry-After` の秒数だけ待ってから再試行してください。 |
| 502 | upstream_timeout | 回線がタイムアウトしました（最初のトークンがなかなか返ってこない場合を含みます）。 | 再試行してください。長い回答には `stream: true` を使ってください。 |
| 502 | upstream_unavailable | 回線でエラーが起きたか、一時的に利用できません。 | しばらくしてから再試行してください。 |
| 502 | upstream_busy | モデル提供元がレート制限をかけています。モデル提供元の 429 をそのまま 429 として返すことはなく、代わりにこの 502 を返します。 | しばらくしてから再試行してください。 |
| 502 | empty_completion | モデル提供元が空の内容を返しました。リクエストの内容に対する判定ではありません。 | 再試行してください。 |
| 503 | model_maintenance | モデルのメンテナンス中で、リクエストを受け付けていません。その間、別のモデルが代わりに回答することもありません。 | メンテナンスが終わってから再試行してください。状況は [サービス状態](https://nezhagate.com/ja/status) で確認できます。 |

ストリーミングで出力が始まった後にエラーが起きても、ステータスコードは変わりません。エラーは `error` を含むデータ行としてストリーム内に届くか、ストリームが（`data: [DONE]` なしで）そのまま終わります。いずれの場合も、途中で切れたものとして扱ってください。
