# curl: gọi LLM API từ terminal

> Công thức terminal cho LLM API tương thích OpenAI: chat completion với curl và jq, đọc từ file, streaming, danh sách model và số credit còn lại.

- URL: https://llmwithcrypto.com/vi/docs/curl/
- Cập nhật lần cuối: 2026-10-23
- Đơn vị phát hành: LLMwithCrypto (https://llmwithcrypto.com)

Mỗi lần gọi đều là HTTPS thuần với body JSON, nên chỉ curl là đủ để kiểm tra một khóa API, so sánh hai model hoặc viết script cho một tác vụ nhanh. `jq` giúp JSON dễ đọc; cả hai đều có sẵn trên hầu hết hệ thống hoặc cài trong một lệnh.

**Trả lời nhanh — Làm sao gọi LLMwithCrypto bằng curl?**

Gửi một POST tới `https://llmwithcrypto.com/api/v1/chat/completions` với `-H "Authorization: Bearer $LLMWITHCRYPTO_API_KEY"`, content type JSON và một body chứa `model` và `messages`. **LLMwithCrypto** trả về đối tượng phản hồi của OpenAI; pipe nó sang `jq` để in câu trả lời và số token. Thêm `-N` và `"stream": true` để thấy văn bản xuất hiện trực tiếp, như tài liệu ngày 23 tháng 10 năm 2026.

## Làm sao đặt khóa API một lần?

Export nó trong phiên shell của bạn để mọi lệnh đều dùng được, và giữ nó ngoài lịch sử shell và các script dùng chung:

- **Linux và macOS:** `export LLMWITHCRYPTO_API_KEY=…` trong terminal, hoặc trong một file `.env` mà script của bạn nạp vào và không bao giờ commit.
- **Windows PowerShell:** `$env:LLMWITHCRYPTO_API_KEY = "…"`, rồi chạy các lệnh trong Git Bash hoặc WSL, hoặc chỉnh lại dấu nháy.

Tạo một khóa API cho mỗi ứng dụng, agent hoặc thành viên nhóm và thu hồi bất kỳ khóa nào trong dashboard mà không ảnh hưởng đến các khóa khác.

*Một câu trả lời ngắn và số token của nó*

```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"'

```

## Làm sao tránh lỗi đặt dấu nháy?

Đặt body vào một file. Dấu nháy của shell và dấu nháy của JSON xung đột ngay khi prompt chứa dấu nháy đơn hoặc dấu đô la; dùng file tránh được cả hai. `--data @request.json` gửi file nguyên như nó đang có.

*Một request đọc từ file*

```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'

```

## Làm thế nào để xem một câu trả lời được truyền trực tuyến (streamed answer)?

`-N` tắt bộ đệm đầu ra của curl, nên mỗi server-sent event sẽ được in ngay khi đến. Bạn sẽ thấy các dòng `data:` thô; [trang streaming](https://llmwithcrypto.com/vi/docs/streaming/) giải thích chúng.

*Câu trả lời truyền trực tuyến, sự kiện thô*

```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
  }'

```

## Làm thế nào để liệt kê các model và kiểm tra credit?

Cả hai lệnh gọi đều miễn phí. Lệnh đầu tiên in ra mỗi dòng một model id, sẵn sàng cho trường `model`; lệnh thứ hai in ra credit còn lại tính bằng đô la Mỹ.

*Model id*

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

```

*Credit còn lại*

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

```

## Làm thế nào để thấy lỗi trong terminal?

Thêm `-w "\nHTTP %{http_code}\n"` để in status sau body. Body lỗi là một JSON object nhỏ có trường `code`, ví dụ `invalid_api_key`, `insufficient_balance` hoặc `model_not_found`; [trang lỗi](https://llmwithcrypto.com/vi/docs/errors/) giải thích từng loại. Với `jq`, `.error.code // empty` in ra mã khi có và không in gì khi không có, giúp việc rẽ nhánh trong script dễ dàng.

Lỗi không tốn phí. Bạn trả tiền theo token từ số dư của mình: token đầu vào và đầu ra được đếm bằng tokenizer của chính model và tính theo giá của model đó trên 1M token. Một lần gọi kết thúc bằng lỗi thì không mất phí.

## Tôi có thể viết script cho một lô yêu cầu bằng curl không?

Với một vài yêu cầu, một vòng lặp shell trên các tệp là ổn: mỗi tệp một JSON body, mỗi tệp một curl, kết quả ghi bên cạnh. Hãy chạy tuần tự, hoặc chạy vài cái cùng lúc với `xargs -P 4`, để bạn nằm trong rate limit của mình. Mỗi tài khoản có giới hạn request và token mỗi phút, hiển thị trong dashboard; liên hệ support để được nâng lên.

Với khối lượng lớn hơn, retry và đồng thời dễ hơn khi viết bằng code: các trang [Python](https://llmwithcrypto.com/vi/docs/python/) và [Node.js](https://llmwithcrypto.com/vi/docs/node/) có sẵn ví dụ xử lý lô với giới hạn đồng thời.

## curl: các câu hỏi thường gặp

### Tại sao tôi nhận lỗi 401?

Khóa bị thiếu, gõ sai hoặc đã bị thu hồi, hoặc biến chưa được đặt trong shell này. Chạy `echo ${#LLMWITHCRYPTO_API_KEY}` để kiểm tra rằng nó không rỗng.

### Làm thế nào để so sánh nhanh hai model?

Chạy cùng một tệp hai lần và chỉ đổi `model`, ví dụ `deepseek-v4-pro` và `gpt-oss-120b`; các dòng `usage` cho thấy mỗi câu trả lời tốn bao nhiêu token.

### Prompt của tôi có được lưu không?

Không. Chúng tôi không lưu prompt của bạn hay câu trả lời của model: khi một phản hồi được gửi đi, văn bản của nó biến mất. Mỗi lần gọi để lại một dòng log với thời gian, tài khoản, model và số token, bị xóa sau 30 ngày.

---

LLMwithCrypto: LLMwithCrypto là API LLM tương thích OpenAI cho các mô hình open-weight — 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 — thanh toán theo token từ số dư crypto trả trước, thấp hơn 5% so với giá trung vị của các nhà cung cấp công khai. Không cần KYC: không ID, không selfie, không giấy tờ. Prompt và output không được lưu trữ.
