> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.beatapi.io/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.beatapi.io/_mcp/server.

# 계정과 결제

> 잔액, 크레딧, 환불, 사용량 보고, 그리고 요청 속도 한도가 늘어나는 방식을 설명합니다.

# 계정과 결제

## 과금은 어떻게 이루어지나요?

계정마다 USD 잔액이 하나 있으며, 작업이 완료될 때마다 차감됩니다. 구독이나 월 약정은 없습니다. 크레딧을 먼저 충전하고 사용하는 방식입니다.

* **텍스트**는 토큰 단위로 과금되며 입력, 캐시된 입력, 출력의 가격이 각각 다릅니다.
* **작업**(이미지, 영상, 이펙트, 워크플로)은 제출할 때 크레딧을 보류하고 완료될 때 정산합니다.

## 사용한 금액은 어디서 확인하나요?

두 곳에서 같은 수치를 확인할 수 있습니다.

* 호출, 토큰, 비용, 키별 내역은 [대시보드](https://beatapi.io/dashboard)에서 확인합니다.
* 같은 데이터를 프로그램으로 조회하려면 `GET /v1/usage`를 사용합니다. `by_model`, `by_capability`, `by_api_key`도 포함됩니다.

## 작업이 실패하면 어떻게 되나요?

보류된 금액이 환불됩니다. `GET /v1/tasks/{task_id}`는 작업 자체에 환불 내역을 표시하고, `GET /v1/usage`는 `credits_settled`와 함께 `credits_refunded`를 보고합니다.

자체 회계에서 중요한 부분입니다. 장부에 보류 금액만 기록하고 환불을 읽지 않으면 숫자가 청구서와 어긋납니다. 두 가지를 모두 대조하세요.

## 잔액이 왜 마이너스인가요?

`credit_balance`는 0 아래로 내려갈 수 있습니다. 오래 걸리는 작업은 완료 시점에 정산되므로, 실행 중에 잔액이 0이 되더라도 이미 접수된 작업은 끝까지 처리되고 과금됩니다. 크레딧을 충전하면 잔액이 다시 플러스가 됩니다.

## 잔액이 0이 되면 어떻게 되나요?

계정의 모든 유료 작업이 `402 insufficient_credits`를 반환하기 시작합니다. 키별이 아니라 계정 전체에 적용됩니다. 잔액이 0보다 많더라도 요청 가격보다 적으면 같은 `402`를 받습니다. 이미 접수된 작업은 끝까지 처리됩니다. 삭제되는 데이터나 폐기되는 키는 없으며, 크레딧을 충전하면 즉시 서비스가 재개됩니다.

자체 지출 한도가 있는 키가 한도를 다 쓴 경우는 다릅니다. 이 키는 키가 소진되었다는 메시지와 함께 `401 invalid_api_key`를 반환하지만, 계정의 다른 키는 계속 동작합니다. 대시보드에서 만든 키에는 별도 한도가 없으니 그런 키로 바꾸세요.

사용자에게 노출되는 서비스를 운영한다면 사용자보다 먼저 알 수 있도록 `402` 알림을 설정하세요.

## 요청 속도 한도는 어떻게 정해지나요?

요금제가 아니라 누적 유료 충전액으로 정해집니다. 크레딧을 충전하면 계정 단계가 영구적으로 올라갑니다. 기준 수치가 늘어나기만 하므로 단계가 내려가는 일은 없습니다.

현재 한도와 다음 단계는 대시보드와 `GET /api/user/self`의 `rate_limit` 항목에서 확인할 수 있습니다.

```jsonc
"rate_limit": {
  "enabled": true,
  "window_minutes": 1,
  "success_count": 20,
  "next_tier": { "min_topup_quota": 50000000, "success_count": 30 }
}
```

의도적으로 알려 주지 않는 정보가 두 가지 있습니다. 프로모션 크레딧과 추천 보너스는 단계 산정에 포함되지 않으며, 표시되는 수치에는 개별 키에 설정된 더 엄격한 한도가 반영되지 않습니다.

무료 모델(`deepseek-v4.1-flash-free` 같은 Free 카테고리)은 이 단계와 별개입니다. 무료 모델에는 계정별 고정 한도가 따로 있습니다. 첫 충전 전에는 분당 성공 요청 1건, 충전 후에는 충전 금액과 관계없이 분당 최대 10건입니다. 위 단계와 따로 계산되므로 무료 호출이 유료 한도를 소모하지 않으며, 한도를 넘는 요청은 `Retry-After`와 함께 `429`를 받습니다.

## 크레딧에 유효 기간이 있나요?

없습니다. 잔액은 사용할 때까지 유지됩니다.

## 같은 프롬프트인데 비용이 다른 이유는 무엇인가요?

네 가지 이유가 있으며, 자주 놀라게 되는 순서대로 정리하면 다음과 같습니다.

1. **출력 길이가 다릅니다.** 텍스트 호출에서 비용이 큰 쪽은 출력이며, 상한을 두지 않으면 길이는 모델이 정합니다.
2. **캐시된 입력은 새 입력보다 저렴합니다.** 긴 시스템 프롬프트를 반복하면 캐시가 적용되어 첫 호출의 일부 비용만 들 수 있습니다.
3. **시간대별로 과금하는 모델이 있습니다.** DeepSeek HC(high-cache) 모델 두 개는 평일 베이징 시간 09:00–12:00와 14:00–18:00에 요금이 두 배가 되며, 일반 유료 DeepSeek 모델은 시간과 관계없이 같은 요금입니다. Hunyuan `hy3`에는 별도의 일일 피크 시간대가 있습니다. 정확한 시간은 [가격 페이지](https://beatapi.io/pricing) 각주에 있습니다.
4. **컨텍스트 길이에 따라 과금하는 모델이 있습니다.** GPT-5.6 계열과 Grok 계열은 컨텍스트가 일정 기준을 넘으면 더 높은 요금이 적용됩니다. 긴 에이전트 세션은 모르는 사이에 이 기준을 넘습니다.

각 응답의 사용량 기록에서 어떤 요금이 적용되었는지 확인할 수 있습니다.

## 애플리케이션별 비용을 볼 수 있나요?

애플리케이션마다 별도의 API 키를 발급하세요. 그러면 추가 작업 없이 `GET /v1/usage`의 `by_api_key`에서 키별로 작업과 크레딧이 구분됩니다.

## 크레딧은 어떻게 충전하나요?

[대시보드](https://beatapi.io/dashboard)에서 충전합니다. 결제가 확인되는 즉시 잔액이 반영되며, 이후 따로 활성화할 것은 없습니다.

## 청구 금액에 대해 도움을 받으려면 어떻게 하나요?

[대시보드](https://beatapi.io/dashboard)에서 지원 티켓을 열고, 문제의 호출에 대한 `request_id` 또는 작업 ID를 함께 보내 주세요. 둘 다 하나의 기록으로 연결됩니다.