본문
modelstring필수- 모델 ID
messagesarray필수role은user/assistant. content 는 문자열 또는 블록 배열(text·image·tool_use·tool_result·thinking·document)systemstring | array선택- 문자열 또는 text 블록 배열
temperaturenumber선택- 0–1
top_pnumber선택- 0–1
top_kinteger선택- 양의 정수
stop_sequencesstring[]선택- 최대 8개
streamboolean선택- 기본
false toolsarray선택{name, description, input_schema}tool_choiceobject선택{"type":"auto"|"any"|"none"}또는{"type":"tool","name":"..."}metadataobject선택{"user_id": "..."}thinkingobject선택{"type":"enabled","budget_tokens":N}(N ≥ 1024) ·{"type":"adaptive"}·{"type":"disabled"}output_configobject선택effort(low–max, adaptive 또는 thinking 생략과 함께) ·format({"type":"json_schema","schema":{...}}, 구조화 출력 지원 모델만)everyaisobject선택- 게이트웨이 캐싱 옵션
블록에 cache_control 을 직접 붙이면 그대로 전달됩니다(프롬프트 캐싱 참고). document·이미지 tool_result는 400입니다. metadata.user_id는 Anthropic metadata로 전달됩니다. 이미지 블록은 source.type: "base64"로 보내세요(url 소스는 Chat 의 https URL 과 같은 제한). 강제 도구 호출(any·tool)을 거부하는 모델은 Chat 과 같습니다.
도구를 이어 쓸 때는 응답 content 블록 전체(thinking 포함)를 그대로 되돌려 보내세요 — Gemini 의 도구 서명은 thinking 블록 signature에 실려 왕복합니다. stop_reason: "stop_sequence"와 stop_sequence는 공급자가 일치한 문자열을 알려 주는 경로(Claude·vLLM 기반)에서만 채워지고, Gemini·GPT 는 stop_sequences로 멈춰도 end_turn입니다.
모델 옵션
선택한 모델에서 되는 값은 위 표에서 확인하세요(API에서는 GET /v1/models의 capabilities·limits·parameter_constraints). 지원하지 않는 값을 보냈을 때 값을 조정하는지 400으로 거부하는지는 모델 선택과 접근 정책의 파라미터 정책을 보세요.
수동 thinking을 지원하는 모델의 예산은 budget_tokens ≥ 1024입니다. 웹 검색은 Chat 전용입니다.
POST /v1/messages/count_tokens
요청 전 입력 토큰 수를 추정합니다. Claude Code 가 자동으로 호출하는 엔드포인트입니다.
- 무과금 — 크레딧이 차감되지 않습니다.
- 토큰 추정치이며 실제 사용량과 다를 수 있습니다.
- 요청 본문은
/v1/messages와 동일한 형태를 받습니다.
{
"input_tokens": 1234
}