# curl: 터미널에서 LLM API 사용하기

> OpenAI 호환 LLM API를 위한 터미널 레시피: curl과 jq로 채팅 완성, 파일에서 요청 보내기, 스트리밍, 모델 목록, 남은 크레딧 확인.

- URL: https://llmwithcrypto.com/ko/docs/curl/
- 마지막 업데이트: 2026-10-23
- 발행자: LLMwithCrypto (https://llmwithcrypto.com)

모든 호출은 JSON 본문을 담은 평범한 HTTPS이므로, curl만으로도 키를 테스트하고, 두 모델을 비교하고, 간단한 작업을 스크립트로 만들 수 있습니다. `jq`은 JSON을 읽기 쉽게 만듭니다. 둘 다 대부분의 시스템에 기본 포함되어 있거나 한 명령으로 설치됩니다.

**빠른 답변 — curl로 LLMwithCrypto을 어떻게 호출하나요?**

`-H "Authorization: Bearer $LLMWITHCRYPTO_API_KEY"`, JSON 콘텐츠 타입, `model`와 `messages`를 담은 본문으로 `https://llmwithcrypto.com/api/v1/chat/completions`에 POST를 보내세요. **LLMwithCrypto**은 OpenAI 응답 객체를 반환합니다. 이를 `jq`으로 파이프하면 답변과 토큰 수가 출력됩니다. 2026년 10월 23일 문서 기준으로, `-N`과 `"stream": true`을 추가하면 텍스트가 실시간으로 도착하는 것을 볼 수 있습니다.

## 키를 한 번만 설정하려면 어떻게 하나요?

셸 세션에서 내보내면 모든 명령에서 사용할 수 있습니다. 셸 기록과 공유 스크립트에는 남기지 마세요:

- **Linux 및 macOS:** 터미널에서 `export LLMWITHCRYPTO_API_KEY=…`을 실행하거나, 스크립트가 불러오고 절대 커밋하지 않는 `.env` 파일에 넣으세요.
- **Windows PowerShell:** `$env:LLMWITHCRYPTO_API_KEY = "…"`을 실행한 뒤 Git Bash 또는 WSL에서 명령을 실행하거나 따옴표 처리를 알맞게 바꾸세요.

앱, 에이전트, 팀원마다 API 키를 하나씩 만들고, 대시보드에서 다른 키는 건드리지 않고 원하는 키만 폐기할 수 있습니다.

*짧은 답변과 그 토큰 수*

```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의 출력 버퍼를 끄므로, 각 서버 전송 이벤트가 도착하는 즉시 출력됩니다. 원시 `data:` 줄이 표시되며, [스트리밍 페이지](https://llmwithcrypto.com/ko/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
  }'

```

## 모델 목록을 조회하고 크레딧을 확인하려면 어떻게 하나요?

두 호출 모두 무료입니다. 첫 번째는 `model` 필드에 바로 쓸 수 있도록 모델 id를 한 줄에 하나씩 출력하고, 두 번째는 남은 크레딧을 미국 달러로 출력합니다.

*모델 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/ko/docs/errors/)에서 각각을 설명합니다. `jq`과 함께 사용하면 `.error.code // empty`은 코드가 있을 때는 코드를 출력하고 없을 때는 아무것도 출력하지 않으므로 스크립트에서 분기 처리하기 쉽습니다.

오류에는 비용이 들지 않습니다. 잔액에서 토큰 단위로 결제합니다. 입력 및 출력 토큰은 모델 자체의 tokenizer로 계산되며, 해당 모델의 1M 토큰당 가격으로 청구됩니다. 오류로 끝난 호출은 비용이 들지 않습니다.

## curl로 배치를 스크립트로 만들 수 있나요?

요청이 몇 개라면 파일에 대한 셸 루프로 충분합니다. 파일마다 JSON 본문 하나, 파일마다 curl 하나, 결과는 옆에 기록합니다. 순차적으로 실행하거나 `xargs -P 4`로 몇 개씩 동시에 실행하여 rate limit을 넘지 않도록 하세요. 모든 계정에는 분당 요청 및 토큰 한도가 있으며 대시보드에 표시됩니다. 지원팀에 요청하면 한도를 올릴 수 있습니다.

규모가 커지면 재시도와 동시성 처리는 코드에서 더 쉽습니다. [Python](https://llmwithcrypto.com/ko/docs/python/) 및 [Node.js](https://llmwithcrypto.com/ko/docs/node/) 페이지에 동시성 상한이 있는 바로 쓸 수 있는 배치 예제가 있습니다.

## curl: 자주 묻는 질문

### 401 오류가 나는 이유는 무엇인가요?

키가 없거나, 잘못 입력되었거나, 폐기되었거나, 이 셸에 변수가 설정되지 않았습니다. 비어 있지 않은지 확인하려면 `echo ${#LLMWITHCRYPTO_API_KEY}`를 실행하세요.

### 두 모델을 빠르게 비교하려면 어떻게 하나요?

같은 파일을 두 번 실행하고 `model`만 바꾸세요. 예를 들어 `deepseek-v4-pro`과 `gpt-oss-120b`입니다. `usage` 줄은 각 응답에 토큰이 얼마나 들었는지 보여줍니다.

### 제 프롬프트는 저장되나요?

아니요. 프롬프트와 모델의 답변은 저장하지 않습니다. 응답이 전송되면 그 텍스트는 사라집니다. 각 호출은 시간, 계정, 모델, 토큰 수를 담은 로그 한 줄을 남기며, 이는 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 없이: 신분증도, 셀피도, 서류도 필요하지 않습니다. 프롬프트와 출력은 저장되지 않습니다.
