# curl: ターミナルから LLM API を利用する

> OpenAI 互換 LLM API のターミナルレシピ: curl と jq による chat completion、ファイルからのリクエスト、ストリーミング、モデル一覧、残りのクレジット。

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

すべての呼び出しは JSON ボディを使ったプレーンな HTTPS なので、curl だけでAPIキーのテスト、2つのモデルの比較、ちょっとしたジョブのスクリプト化ができます。`jq`は JSON を読みやすくします。どちらもほとんどのシステムに付属しているか、1コマンドでインストールできます。

**クイック回答 — curl でLLMwithCryptoを呼び出すには？**

`-H "Authorization: Bearer $LLMWITHCRYPTO_API_KEY"`、JSON の content type、そして`model`と`messages`を含むボディを指定して、`https://llmwithcrypto.com/api/v1/chat/completions`に POST を送信します。**LLMwithCrypto**は OpenAI のレスポンスオブジェクトを返します。`jq`にパイプすると、回答とトークン数が出力されます。`-N`と`"stream": true`を追加すると、テキストがリアルタイムで届く様子を確認できます（2026年10月23日時点のドキュメントによる）。

## APIキーは一度だけ設定するには？

シェルセッションでexportして、すべてのコマンドから使えるようにし、シェル履歴や共有スクリプトには残さないようにしてください:

- **Linux と macOS:** ターミナルで`export LLMWITHCRYPTO_API_KEY=…`を実行するか、スクリプトが読み込む`.env`ファイルに記述し、絶対にコミットしないでください。
- **Windows PowerShell:** `$env:LLMWITHCRYPTO_API_KEY = "…"`を実行し、その後 Git Bash または WSL でコマンドを実行するか、クォートの書き方を調整してください。

アプリ、エージェント、チームメンバーごとにAPIキーを1つ作成し、他のキーに影響を与えずにダッシュボードからいつでも取り消せます。

*短い回答とそのトークン数*

```bash
curl -s "https://llmwithcrypto.com/api/v1/chat/completions" \
  -H "Authorization: Bearer $LLMWITHCRYPTO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "gpt-oss-20b", "messages": [{"role": "user", "content": "One word for fast?"}], "max_tokens": 20}' \
  | jq -r '.choices[0].message.content, "\(.usage.prompt_tokens) in, \(.usage.completion_tokens) out"'

```

## クォートの問題を避けるには？

ボディをファイルに入れてください。プロンプトにアポストロフィやドル記号が含まれると、シェルのクォートと JSON のクォートが衝突しますが、ファイルならどちらも避けられます。`--data @request.json`はファイルをそのまま送信します。

*ファイルから読み込んだリクエスト*

```bash
cat > request.json <<'EOF'
{
  "model": "deepseek-v4-pro",
  "messages": [
    {"role": "system", "content": "You review shell scripts."},
    {"role": "user", "content": "Is it safe to run rm -rf \"$DIR\"/ when DIR may be empty?"}
  ],
  "max_tokens": 300
}
EOF
curl -s "https://llmwithcrypto.com/api/v1/chat/completions" \
  -H "Authorization: Bearer $LLMWITHCRYPTO_API_KEY" \
  -H "Content-Type: application/json" \
  --data @request.json | jq -r '.choices[0].message.content'

```

## ストリーミングされた回答を表示するにはどうすればよいですか？

`-N`はcurlの出力バッファをオフにするため、各server-sent eventが届き次第すぐに出力されます。生の`data:`行が表示されます。各行の意味は[ストリーミングのページ](https://llmwithcrypto.com/ja/docs/streaming/)で説明しています。

*ストリーミングされた回答、生のイベント*

```bash
curl -sN "https://llmwithcrypto.com/api/v1/chat/completions" \
  -H "Authorization: Bearer $LLMWITHCRYPTO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-v4.1-flash",
    "messages": [{"role": "user", "content": "Write a haiku about latency."}],
    "stream": true,
    "stream_options": {"include_usage": true},
    "max_tokens": 120
  }'

```

## モデル一覧を取得し、クレジットを確認するにはどうすればよいですか？

どちらの呼び出しも無料です。1つ目は`model`フィールドにそのまま使えるモデルIDを1行に1つずつ出力します。2つ目は残りのクレジットを米ドルで出力します。

*モデルID*

```bash
curl -s "https://llmwithcrypto.com/api/v1/models" \
  -H "Authorization: Bearer $LLMWITHCRYPTO_API_KEY" | jq -r '.data[].id'

```

*残りのクレジット*

```bash
curl -s "https://llmwithcrypto.com/api/v1/credits" \
  -H "Authorization: Bearer $LLMWITHCRYPTO_API_KEY" | jq -r '.balance_usd'

```

## ターミナルでエラーを確認するにはどうすればよいですか？

`-w "\nHTTP %{http_code}\n"`を追加すると、本文の後にステータスが出力されます。エラーの本文は`code`フィールドを持つ小さなJSONオブジェクトで、例えば`invalid_api_key`、`insufficient_balance`、`model_not_found`などです。それぞれの意味は[エラーのページ](https://llmwithcrypto.com/ja/docs/errors/)で説明しています。`jq`を使う場合、`.error.code // empty`はコードがあればそれを出力し、なければ何も出力しないため、スクリプトで分岐しやすくなります。

エラーにはクレジットがかかりません。残高からトークン単位で支払います。入力トークンと出力トークンはモデル自身のトークナイザーでカウントされ、そのモデルの100万トークンあたりの価格で請求されます。エラーで終わった呼び出しは無料です。

## curlでバッチをスクリプト化できますか？

少数のリクエストなら、ファイルをループするシェルスクリプトで十分です。1ファイルにつき1つのJSON本文、1ファイルにつき1回のcurl、結果はその隣に書き出します。レート制限を超えないよう、順次実行するか、`xargs -P 4`で少数ずつ同時に実行してください。すべてのアカウントには1分あたりのリクエスト数とトークン数の上限があり、ダッシュボードに表示されます。サポートに依頼すれば引き上げられます。

それ以上の規模では、リトライと並行処理はコードで書くほうが簡単です。[Python](https://llmwithcrypto.com/ja/docs/python/)と[Node.js](https://llmwithcrypto.com/ja/docs/node/)のページには、同時実行数の上限付きのバッチ例が用意されています。

## curl：よくある質問

### 401エラーが返るのはなぜですか？

キーが欠けている、入力ミスがある、または失効しているか、このシェルで変数が設定されていません。`echo ${#LLMWITHCRYPTO_API_KEY}`を実行して、空でないことを確認してください。

### 2つのモデルをすばやく比較するにはどうすればよいですか？

同じファイルを2回実行し、`model`だけを変更します。例えば`deepseek-v4-pro`と`gpt-oss-120b`です。`usage`の行に、各回答がトークンでいくらかかったかが表示されます。

### プロンプトは保存されますか？

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

---

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不要:本人確認書類、自撮り写真、証明書類は一切不要です。プロンプトと出力は保存されません。
