はじめにガイド
HTTPie で CheapTokens への最初のリクエスト: 環境変数のキー、= と :=
環境変数のキーでチャット補完を送信し、回答とトークン使用量がどこにあるかを示す、読みやすい 1 つの http コマンド。

キーが機能し、モデル ID が正しいことを、1 行で確認したいはずです。HTTPie の http コマンドなら、curl よりはるかに少ないクォートでそれができます。フィールドを入力すれば、JSON を組み立ててくれます。以下がリクエスト全体で、残りの記事では各部分を説明します。
export CHEAPTOKENS_API_KEY="paste-your-key-here"
http --body -A bearer -a "$CHEAPTOKENS_API_KEY" \
POST https://api.cheaptokens.dev/v1/chat/completions \
model=deepseek-ai/DeepSeek-V4-Flash-0731 \
max_tokens:=200 \
'messages:=[{"role":"user","content":"In one sentence, what is a token?"}]'API は OpenAI 互換なので、ベース URL は https:/ で、チャットリクエストはその下の / に送ります。モデル ID は完全なもの、deepseek- です(価格表にある短い名前は受け付けられません)。まだキーを保存していない場合は、まず API キーを安全に保存 してください。export の行を入力するとキーがシェル履歴に残るので、プロファイルファイルやシークレットマネージャーのほうが適しています。

= と := が実際に何をするか#
HTTPie で覚える必要があるのはこれだけです。HTTPie の JSON ドキュメント(バージョン 3.2.4、2024 年 11 月 1 日付、2026 年 11 月 9 日閲覧)によると、= は文字列フィールドを設定し、:= は生の JSON 値(数値、真偽値、配列、オブジェクト)を設定します。この方法で指定したフィールドはデフォルトで JSON ボディとして送信されるので、Content-Type ヘッダーを自分で追加する必要はありません。
今回のリクエストでは、これが 3 つの異なる形になります:
model=deepseek-は文字列なので、ai/ DeepSeek- V4- Flash- 0731 =。max_tokens:=200は数値なので、:=。=を使うと文字列"200"を送ることになります。messages:=[…]はオブジェクトの配列なので、ここでも:=を使い、値はシェルが内側の二重引用符をそのまま残すようシングルクォートで囲みます。
ドキュメントには、stdin からのボディはコマンドラインフィールドと組み合わせられないとも書かれているので、どちらか一方のスタイルを選んでください。最初のテストなら、フィールドのほうが短くて編集しやすいです。
クイックチェック
max_tokens=200(プレーンな = 付き)は何を送りますか?
答えを表示
答え: 文字列 "200"
= は常に文字列を作ります。数値にするには := が必要なので、max_tokens:=200 と書きます。
答えはどこにあるか#
返信は OpenAI の chat-completions 形式に従います。探すべきものは 3 つあり、それぞれ別の場所にあります:
{
"choices": [
{
"message": { "role": "assistant", "content": "…the answer text…" },
"finish_reason": "stop"
}
],
"usage": { "prompt_tokens": …, "completion_tokens": …, "total_tokens": … }
}回答テキストは choices[0]. です。finish_reason は同じ choice の中に隣接しており、usage はトップレベルにあります。usage は送信したトークン数(prompt_tokens)とモデルが書いたトークン数(completion_)を示し、リクエストのコストを見積もるのに便利です。

テキストだけ欲しい場合は、ボディを jq にパイプします:
http --body -A bearer -a "$CHEAPTOKENS_API_KEY" \
POST https://api.cheaptokens.dev/v1/chat/completions \
model=deepseek-ai/DeepSeek-V4-Flash-0731 \
max_tokens:=200 \
'messages:=[{"role":"user","content":"In one sentence, what is a token?"}]' \
| jq -r '.choices[0].message.content'自分で試す試してみましょう: 制限を小さくしすぎて finish_reason を読む答えを表示
max_tokens:=200 を max_tokens:=5 に変えて、もう一度実行します。回答は途中で切れ、finish_reason は stop ではなく length を読み取ります。制限がモデルを止めたのであって、思考の終わりではありません。回答が途中で切れる理由 で修正方法を説明しています。
モデルを入れ替える: 1 つのフィールドを変更する#
モデルは 1 つの文字列なので、別のものを試すのは 1 語の編集です。以下の両方の ID は CheapTokens で 1 つの残高で利用できます。DeepSeek-V4-Flash は 380K のコンテキストと回答あたり最大 32,768 出力トークン、GLM-5.3-Flash は 390K のコンテキストと最大 8,192 です。
1 つのリクエスト、2 つのモデル
DeepSeek-V4-Flash
http --body -A bearer -a "$CHEAPTOKENS_API_KEY" \
POST https://api.cheaptokens.dev/v1/chat/completions \
model=deepseek-ai/DeepSeek-V4-Flash-0731 \
max_tokens:=200 \
'messages:=[{"role":"user","content":"Name three uses of a token limit."}]'GLM-5.3-Flash
http --body -A bearer -a "$CHEAPTOKENS_API_KEY" \
POST https://api.cheaptokens.dev/v1/chat/completions \
model=zai-org/GLM-5.3-Flash \
max_tokens:=200 \
'messages:=[{"role":"user","content":"Name three uses of a token limit."}]'どの ID を使うかわからない場合は、GET /v1/models でモデルを一覧表示 し、正確な文字列をコピーしてください。
テストリクエスト 1 回のコスト#
このような短い質問は安価です。質問が約 100 トークン、回答が約 150 トークンだとすると、そのリクエストのコストは $0.000017 です。それを 1,000 回行うと、入力と出力を合計して次のようになります:
| モデル | 入力 $/1M | 出力 $/1M | リクエストあたり | 1,000 リクエスト | OpenRouter、1,000 リクエスト |
|---|---|---|---|---|---|
| GLM-5.3-Flash | $0.02 | $0.04 | $0.000008 | $0.008 | $0.0158 |
| DeepSeek-V4-Flash | $0.015 | $0.10 | $0.000017 | $0.0165 | $0.028 |
| MiniMax-M2.7 | $0.05 | $0.15 | $0.000028 | $0.0275 | $0.33 |
リクエストあたり 100 入力トークンと 150 出力トークン。100万トークンあたりの価格は現行のもので、当社の料金体系に合わせて変動します。OpenRouter 列は同じワークロードの参考価格を示しています。
合計で、入力と出力を合わせて数えると、DeepSeek-V4-Flash は OpenRouter より安くなり、価格はピーク時間のない固定レートです。すべてのモデルの現在の料金は 料金ページ にあります。
うまくいかない場合#
- プレーンな
=でmessages=[…]と入力した。 配列がメッセージのリストではなく文字列として送信されます。:=を使い、値全体をシングルクォートで囲んでください。 :=内の JSON が無効。 すべてのキーと文字列には二重引用符が必要で、外側の引用符はシングルでなければなりません。メッセージテキストを編集する場合は、引用符のバランスを保ってください。- キーが空。
echo ${#CHEAPTOKENS_はキーを表示せずに長さを出力します。API_ KEY} 0はこのターミナルで変数が設定されていないことを意味します。 - モデル ID が短い名前。 完全な
deepseek-を使用してください。401 と 404 の回答については、間違ったキー、ベース URL、モデル ID を参照してください。ai/ DeepSeek- V4- Flash- 0731 --sessionに手を伸ばした。 HTTPie の認証ドキュメントによると、セッションファイルは認証情報を平文で保存するので、キーは環境に置き、このコマンドから--sessionを外してください。
フラグの動作が上記と異なる場合は、http --version でバージョンを確認してください。Python のほうがよければ、SDK なしの同じリクエストは requests を使った Python での最初のリクエスト にあります。完全な API リファレンスは CheapTokens ドキュメント を参照してください。



