Claude Messages
BeatAPI 키 하나로 Anthropic Messages 엔드포인트에서 Claude Fable 5.2, Fable 5.1, Opus 5.5, Sonnet 5.5, Haiku 5.5를 호출합니다.
- 현재 모든 Claude 모델이 엔드포인트
POST /v1/messages하나를 사용합니다.model만 바꿔 전환하세요. - 텍스트·이미지 입력, 텍스트 출력, 스트리밍, 도구 사용, 확장 사고, 프롬프트 캐싱.
- Anthropic SDK와 호환됩니다. 기본 URL을
https://direct.beatapi.io(/v1제외)로 설정하고 BeatAPI 키를 사용하세요. - Claude 모델은 Anthropic Messages에서만 응답합니다.
/v1/responses를 호출하면400이 반환됩니다.
텍스트 요청의 기본 URL로는 https://direct.beatapi.io를 사용하세요. Cloudflare의 100초 제한을 받지 않으므로 스트리밍하지 않는 긴 요청도 끊기지 않습니다. https://api.beatapi.io도 동작하며, 네트워크에서 direct.beatapi.io에 접근할 수 없을 때의 대안입니다. 키, 모델, 가격은 양쪽이 같습니다. 이미지와 영상 API는 https://api.beatapi.io만 사용합니다.
API Explorer에서 이 엔드포인트를 엽니다. BeatAPI API 키를 입력하고 전송하세요. 실제 호출이며 본인 잔액에서 과금됩니다.
모델
model에 다음 ID 중 하나를 보내세요. 각각 별개의 모델이며, 서로의 별칭으로 취급하지 마세요.
- 가격은 할인이 적용된 기본 등급입니다. 롱 컨텍스트 등급, 캐시 입력 요금, 캐시 쓰기는 이 표에 없습니다. 가격표를 참고하세요.
—는 카탈로그에서 해당 수치를 공개하지 않는다는 뜻입니다.
이 계열의 이전 ID도 계속 동작하며 레거시 모델에 나와 있습니다.
빠른 시작
서버에 anthropic 패키지를 설치하고 키는 BEATAPI_API_KEY에 보관하세요. 브라우저 코드에는 절대 넣지 마세요. 아래는 요청 예시이며 실제로 기록된 모델 출력이 아닙니다.
content의 text 블록에서 답변을 읽은 다음 stop_reason과 usage를 확인하세요. HTTP 200만으로는 답변이 작업 요구를 충족한다고 볼 수 없으니 애플리케이션에서 검증하세요. 텍스트 요청은 바로 반환되므로 /v1/tasks를 폴링하지 마세요.
엔드포인트와 인증
POST https://direct.beatapi.io/v1/messages
x-api-key
string
필수
BeatAPI 키입니다. Authorization: Bearer <BEATAPI_API_KEY>도 받습니다.
anthropic-version 헤더를 보내세요(예: anthropic-version: 2023-06-01). 키는 x-api-key나 Authorization: Bearer <key>에 넣으며 둘 다 동작하므로, 기존 Anthropic 클라이언트는 기본 URL만 바꾸면 됩니다.
Claude 모델은 Anthropic Messages에서만 응답합니다. /v1/responses에서 호출하면 400이 반환됩니다.
요청 파라미터
표준 Anthropic Messages 필드를 받습니다. 요청 형식이 호환된다고 해서 모든 베타 기능이나 서버 도구가 지원되는 것은 아니므로, 사용하는 옵션은 직접 테스트하세요.
model
string
필수
정확한 모델 ID입니다.
허용 값: claude-fable-5-2, claude-fable-5-1, claude-opus-5-5, claude-sonnet-5-5, claude-haiku-5-5
- 계속 동작하는 이전 ID(
claude-opus-5,claude-sonnet-5,claude-haiku-4-5-20251001)는 레거시 모델에 있습니다. - 키로
GET /v1/models를 호출해 사용 가능한 모델을 확인하세요.
max_tokens
integer
필수
생성 토큰의 상한이며, 사고 토큰을 포함합니다.
- 항상 보내세요. 없거나
0이면 기본 한도가 적용되며, 이 기본값은 예상보다 낮을 수 있습니다. - 허용되는 최댓값은 1,073,741,823이며, 그보다 크면
400 bad_request입니다. 위 표에 있는 모델의 최대 출력 이하로 설정하세요. max_tokens는 요청에 필요한 잔액을 추정하는 데도 쓰입니다. 실제 출력이 작더라도 값이 너무 크면402 insufficient_credits로 거부될 수 있습니다. 필요한 만큼만 설정하세요.
messages
object[]
필수
대화 내용이며 오래된 메시지부터 나열합니다. 각 메시지에는 role(user 또는 assistant)와 content가 있습니다. content는 문자열이거나 콘텐츠 블록 배열입니다.
- 사용할 블록 유형:
text,image(base64 또는 URL 소스),tool_use(어시스턴트 메시지 안),tool_result(사용자 메시지 안). messages배열이 비어 있거나 없으면400 bad_request입니다.
예시
system
string | object[]
선택
시스템 프롬프트입니다. 문자열 또는 text 블록 배열입니다. 길고 변하지 않는 접두부를 캐시하려면 블록에 cache_control을 넣으세요.
예시
stream
boolean
선택기본값: false
답변을 서버 전송 이벤트로 반환합니다. 아래 스트리밍 섹션을 참고하세요.
기본값: false
stop_sequences
string[]
선택
생성을 멈추는 사용자 지정 문자열입니다. 이때 응답에는 stop_reason: "stop_sequence"가 있습니다.
tools
object[]
선택
모델이 호출할 수 있는 도구입니다. 각각 name, description, input_schema(JSON Schema)를 가집니다. 모델이 도구를 호출하면 답변에 stop_reason: "tool_use"가 있으니, 도구를 실행하고 그 결과를 이어지는 tool_result 블록으로 반환하세요.
예시
tool_choice
object
선택
모델이 tools를 사용해야 하는지, 어떻게 사용해야 하는지 정합니다.
허용 값: {"type":"auto"}, {"type":"any"}, {"type":"tool","name":"..."}, {"type":"none"}
auto는 모델이 판단하고,any는 도구 중 하나를 강제하며,tool은 지정한 도구를 강제하고,none은 도구 사용을 금지합니다.
예시
thinking
object
선택
확장 사고입니다. type으로 켜고 끕니다. 사고 토큰은 max_tokens에 포함되며 출력 토큰으로 과금됩니다.
허용 값: adaptive, enabled, disabled
thinking.type은 위 값 중 하나입니다.enabled는thinking.budget_tokens(1,024 이상이고max_tokens보다 작은 정수)를 받습니다.thinking.display는summarized또는omitted입니다. 최신 모델은summarized를 요청하지 않으면 사고 텍스트를 반환하지 않을 수 있습니다.- 적응형 사고의 깊이는
output_config.effort로 설정하세요.
모델별
claude-fable-5-2:{"type":"adaptive"}를 사용하고output_config.effort로 깊이를 설정하세요. 적응형 사고가 항상 켜져 있으며, 끄거나 수동budget_tokens를 설정할 수 없습니다.claude-fable-5-1:{"type":"adaptive"}를 사용하고output_config.effort로 깊이를 설정하세요.budget_tokens는 거부됩니다.claude-opus-5-5:{"type":"adaptive"}를 사용하고output_config.effort로 깊이를 설정하세요.budget_tokens는 거부됩니다.claude-sonnet-5-5:{"type":"adaptive"}를 사용하고output_config.effort로 깊이를 설정하세요.budget_tokens는 거부됩니다.
예시
output_config.effort
string
선택
모델이 추론하는 양입니다. high로 시작한 다음, 실제 워크로드에서 한 단계 낮은 값과 높은 값을 평가해 보세요.
허용 값: low, medium, high, xhigh, max
cache_control
object
선택
프롬프트 캐싱입니다. system, messages 또는 tools 블록에 넣으면 그 블록까지 모두 캐시하며, 요청 최상위에 넣을 수도 있습니다. ttl은 5m(기본값) 또는 1h입니다.
허용 값: {"type":"ephemeral"}
- 캐시 읽기, 5분 캐시 쓰기, 1시간 캐시 쓰기는 따로 계량됩니다. 캐시된 접두부는 새 입력이 아니라 캐시 읽기로 과금됩니다.
- 캐시 적중 수는
usage.cache_read_input_tokens와usage.cache_creation_input_tokens에 있습니다.
예시
도구 사용 루프
stop_reason이 tool_use이면 반환된 어시스턴트 메시지를 그대로 덧붙이고, 도구를 실행한 뒤 다음 user 메시지의 tool_result 블록으로 결과를 보내세요. 같은 tools를 다시 보내세요.
응답
스트리밍하지 않는 호출은 JSON 객체 하나를 반환합니다. 아래는 축약한 예시입니다.
응답 필드
스트리밍
"stream": true를 설정하세요. 응답은 Anthropic SDK와 호환되는 Anthropic 서버 전송 이벤트 스트림입니다.
- 이벤트는
message_start,ping,content_block_start,content_block_delta,content_block_stop,message_delta,message_stop입니다. - 텍스트는
text_delta로, 도구 입력은input_json_delta로(조각을 이어 붙인 뒤 파싱), 사고 텍스트는thinking_delta로 도착합니다. stop_reason과 최종 출력 토큰 수는message_delta로 도착합니다.- 응답은
text/event-stream이며, 스트리밍하지 않으면application/json입니다. 모델 호출 전에 발생한 실패는 스트림 이벤트가 아니라 HTTP 상태와 함께 일반 JSON 오류로 반환됩니다. - 명시적인 시간 제한을 설정하고, 스트리밍 응답은 안전하게 다시 연결하세요.
오류
HTTP 오류 요약
인증, 라우팅, 요청 속도 제한, 알 수 없는 모델 실패는 모델 호출 전에 BeatAPI 오류 형식(error.code, error.message, retryable, request_id)으로 응답합니다. 그 밖의 모든 실패는 Anthropic 형식 {"type": "error", "error": {"type", "message"}}를 유지하며, 코드는 error.type에 있고 요청 id는 message로 끝납니다. 오류를 참고하세요.
전체 코드 표와 재시도 정책: 오류.
참고
- Claude 모델은 OpenAI Responses가 아니라 Anthropic Messages에서만 응답합니다.
- 사고 토큰은 출력 토큰으로 과금되며
max_tokens에 포함됩니다. 사고와 답변을 모두 담을 수 있도록 출력 한도를 넉넉히 잡으세요. - API 키는 신뢰할 수 있는 서버에 두고, 응답의 요청 ID를 기록하며,
429,500,503만 재시도하세요.
인증
API 키를 Authorization: Bearer <BEATAPI_API_KEY>로 보내세요.
요청
정확한 모델 ID입니다.
계속 동작하는 이전 ID(claude-opus-5, claude-sonnet-5, claude-haiku-4-5-20251001)는 레거시 모델에 있습니다.
키로 GET /v1/models를 호출해 사용 가능한 모델을 확인하세요.
claude-fable-5-2, claude-fable-5-1, claude-opus-5-5, claude-sonnet-5-5, claude-haiku-5-5
생성 토큰의 상한이며, 사고 토큰을 포함합니다.
항상 보내세요. 없거나 0이면 기본 한도가 적용되며, 이 기본값은 예상보다 낮을 수 있습니다.
허용되는 최댓값은 1,073,741,823이며, 그보다 크면 400 bad_request입니다. 위 표에 있는 모델의 최대 출력 이하로 설정하세요.
max_tokens는 요청에 필요한 잔액을 추정하는 데도 쓰입니다. 실제 출력이 작더라도 값이 너무 크면 402 insufficient_credits로 거부될 수 있습니다. 필요한 만큼만 설정하세요.
대화 내용이며 오래된 메시지부터 나열합니다. 각 메시지에는 role(user 또는 assistant)와 content가 있습니다. content는 문자열이거나 콘텐츠 블록 배열입니다.
사용할 블록 유형: text, image(base64 또는 URL 소스), tool_use(어시스턴트 메시지 안), tool_result(사용자 메시지 안).
messages 배열이 비어 있거나 없으면 400 bad_request입니다.
시스템 프롬프트입니다. 문자열 또는 text 블록 배열입니다. 길고 변하지 않는 접두부를 캐시하려면 블록에 cache_control을 넣으세요.
답변을 서버 전송 이벤트로 반환합니다. 아래 스트리밍 섹션을 참고하세요.
생성을 멈추는 사용자 지정 문자열입니다. 이때 응답에는 stop_reason: "stop_sequence"가 있습니다.
모델이 호출할 수 있는 도구입니다. 각각 name, description, input_schema(JSON Schema)를 가집니다. 모델이 도구를 호출하면 답변에 stop_reason: "tool_use"가 있으니, 도구를 실행하고 그 결과를 이어지는 tool_result 블록으로 반환하세요.
모델이 tools를 사용해야 하는지, 어떻게 사용해야 하는지 정합니다.
auto는 모델이 판단하고, any는 도구 중 하나를 강제하며, tool은 지정한 도구를 강제하고, none은 도구 사용을 금지합니다.
{"type":"auto"}, {"type":"any"}, {"type":"tool","name":"..."}, {"type":"none"}
확장 사고입니다. type으로 켜고 끕니다. 사고 토큰은 max_tokens에 포함되며 출력 토큰으로 과금됩니다.
thinking.type은 위 값 중 하나입니다. enabled는 thinking.budget_tokens(1,024 이상이고 max_tokens보다 작은 정수)를 받습니다.
thinking.display는 summarized 또는 omitted입니다. 최신 모델은 summarized를 요청하지 않으면 사고 텍스트를 반환하지 않을 수 있습니다.
적응형 사고의 깊이는 output_config.effort로 설정하세요.
claude-fable-5-2: {"type":"adaptive"}를 사용하고 output_config.effort로 깊이를 설정하세요. 적응형 사고가 항상 켜져 있으며, 끄거나 수동 budget_tokens를 설정할 수 없습니다.
claude-fable-5-1: {"type":"adaptive"}를 사용하고 output_config.effort로 깊이를 설정하세요. budget_tokens는 거부됩니다.
claude-opus-5-5: {"type":"adaptive"}를 사용하고 output_config.effort로 깊이를 설정하세요. budget_tokens는 거부됩니다.
claude-sonnet-5-5: {"type":"adaptive"}를 사용하고 output_config.effort로 깊이를 설정하세요. budget_tokens는 거부됩니다.
adaptive, enabled, disabled
프롬프트 캐싱입니다. system, messages 또는 tools 블록에 넣으면 그 블록까지 모두 캐시하며, 요청 최상위에 넣을 수도 있습니다. ttl은 5m(기본값) 또는 1h입니다.
캐시 읽기, 5분 캐시 쓰기, 1시간 캐시 쓰기는 따로 계량됩니다. 캐시된 접두부는 새 입력이 아니라 캐시 읽기로 과금됩니다.
캐시 적중 수는 usage.cache_read_input_tokens와 usage.cache_creation_input_tokens에 있습니다.
{"type":"ephemeral"}
응답
스트리밍하지 않는 호출은 JSON 객체 하나를 반환합니다. 아래는 축약한 예시입니다.
메시지 ID입니다. 지원과 과금 감사를 위해 요청 ID와 함께 기록하세요.
응답한 모델입니다.
완전한 답변이면 end_turn, max_tokens에 도달하면 max_tokens, stop_sequence, 모델이 도구를 호출하면 tool_use입니다.

