작동 방식
Markdown프로그램과 모델 사이에서 요청이 처리되는 과정입니다.
전체 가이드
OpenAI, Anthropic 또는 Google로 직접 보내는 방식과 동일하게 Ailoot API로 요청하세요. Ailoot는 키와 잔액을 확인하고 모델에 전달한 뒤 같은 형식으로 응답하며 실제 사용량에 따라 요금을 차감합니다.
키 하나 — 세 형식
형식은 모델이 아니라 요청 경로에 따라 결정됩니다. 같은 Claude 모델을 OpenAI Chat, OpenAI Responses 또는 Anthropic Messages로 호출하면 호출한 경로의 형식으로 응답합니다.
| 형식 | 경로 | 사용 클라이언트 |
|---|---|---|
| OpenAI Chat Completions | /v1/chat/completions | OpenAI SDK, 대부분의 채팅·편집기, n8n, LangChain |
| OpenAI Responses | /v1/responses | Codex CLI, OpenAI Agents SDK, SDK의 새 버전 |
| Anthropic Messages | /v1/messages | Claude Code, Anthropic SDK, Zed, Cline |
| Gemini | /v1beta/models/{model}:generateContent | Gemini CLI, Google GenAI SDK |
비용: 금액 예약 및 단일 차감
- 새 텍스트 요청을 보내기 전에 Ailoot는 입력과 일반적인 응답의 예상 비용을 예약하며, 지정한 한도(
max_tokens)와 해당 모델의 조건을 반영합니다. 예약액이 가용 잔액이나 키 한도를 초과하면, 전달할 한도는 실제로 그 한도를 지키는 모델과 메서드에서만 줄일 수 있습니다. 256토큰과 정해진 최소 응답량 중 어느 것도 밑돌 수 없습니다. 출력이 이미지, 영상, 오디오인 경우에는 결과 전체 비용의 예약을 유지합니다. - 응답 후 실제 사용량에 따라 한 번만 차감합니다. 사용하지 않은 예약액은 잔액으로 즉시 반환됩니다.
- 응답 비용이 예약액보다 크면 가용 잔액에서 차액을 차감합니다. 잔액은 음수가 되지 않습니다.
- 최소 예약액도 충당하지 못하면 요청을 보내지 않습니다. 이해하기 쉬운 402 오류를 받고 아무 금액도 차감되지 않습니다.
- 결과 없는 오류에는 과금하지 않습니다.
설명과 계산 예제 페이지: 금액 예약 및 차감.
Request ID가 포함된 오류
모든 응답에는 요청 식별자가 있습니다. 헤더 X-Request-ID 및 오류 메시지에 표시됩니다. 호출한 형식의 JSON 오류이므로 SDK가 올바르게 인식합니다. 문제가 발생하면 Request ID를 다음으로 보내주세요: 지원팀 — 요청을 찾는 데 일 분이면 됩니다.
{
"code": "API_KEY_REQUIRED",
"error": {
"code": "invalid_api_key",
"message": "No API key was sent with the request. Nothing was charged. Please check that the full key is sent in the Authorization header as \"Bearer <key>\". Request ID: 3b28d3de-5b02-4d07-9f3c-4b9a7d0e68d6.",
"param": null,
"reason": "invalid_api_key",
"request_id": "3b28d3de-5b02-4d07-9f3c-4b9a7d0e68d6",
"type": "invalid_request_error"
},
"message": "No API key was sent with the request. Nothing was charged. …"
}스트리밍 및 타임아웃
스트리밍 응답(stream: true)은 Server-Sent Events로 전달됩니다. Ailoot는 유료 텍스트 응답을 비용 계산 후 전달합니다. 따라서 설정 stream: true 사용 시 SSE 형식은 유지되지만 텍스트는 모델이 완료한 뒤 한 번에 전달되며 단어별로 전달되지 않습니다. 약 15초 이상 걸리면 Chat Completions, Responses, Messages 스트림에서 먼저 서비스용 줄 : ping 이 약 10초 간격으로 오고, 다음 줄 : ailoot-charged-usd … 에는 차감 금액이 담기며, 그 뒤에 실제 응답 데이터가 전달됩니다. SDK는 이러한 서비스용 줄을 건너뜁니다.
Gemini 형식에는 서비스용 줄이 없습니다. 응답 :streamGenerateContent 은 계산 후 한 번에 전달됩니다. 추론 모델의 클라이언트 타임아웃에 여유를 두세요. 몇 분 걸리는 것은 정상입니다.
응답 헤더
X-Request-ID 는 모든 응답에 포함됩니다. 나머지 Ailoot 헤더는 유료 텍스트 응답에 추가합니다:
| 헤더 | 내용 |
|---|---|
X-Request-ID | 요청 식별자. 지원팀이 확인을 위해 요청합니다 |
X-Ailoot-Charged-USD | 이 요청의 차감 금액(달러) |
X-Ailoot-Output-Tokens | 결제된 응답 토큰 수 |
X-Ailoot-Max-Tokens-Capped | 전체 예약액을 충당하지 못해 축소한 응답 한도 |
X-Ailoot-Notice-Code, X-Ailoot-Notice | 응답이 길이 한도에서 종료된 경우의 설명 |
서비스용 줄로 스트림이 이미 시작됐다면 헤더 대신 데이터 전에 주석 줄로 해당 정보를 전달합니다.
프롬프트 캐시
캐시 지원 모델에서 긴 접두사(시스템 지침, 문서)를 다시 전송하면 비용이 줄 수 있습니다. 모델 카드의 캐시 읽기·쓰기 가격 확인 위치: 카탈로그. 캐시 적중 여부는 모델 개발자가 결정하며 Ailoot는 보장하지 않습니다.