Claude API 연동 가이드: Anthropic 네이티브 인터페이스 및 키 설정

  • 发布时间
  • 语言ko

极智API 게이트웨이를 통해 Anthropic Claude 모델을 호출하는 방법: 인터페이스 주소, 인증 방식, curl 예제, 요청/응답 필드, SSE 스트리밍 출력 및 일반적인 오류 코드 가이드.

1. 개요

极智API(AzzTimes)는 개발자분들께 Anthropic Messages API(/v1/messages)와 호환되는 중계 접속 서비스를 제공합니다. 요청을 본 사이트 게이트웨이로 보내고, 인증 키를 「사용자 센터 - API 키」에서 생성한 sk- 키로 교체하기만 하면 기존 코드를 수정할 필요 없이 Claude 시리즈 모델을 바로 사용할 수 있습니다.

현재 제공되는 모델은 모델 광장을 기준으로 합니다(예: claude-sonnet-5, claude-opus-5, claude-sonnet-4-6, claude-opus-4-8 등). 전체 목록과 단가는 언제든지 GET /v1/models를 통해 조회할 수 있습니다.

2. 인터페이스 주소

메서드경로설명
POST/v1/messages중계 전달 진입점, 요청 본문은 Anthropic /v1/messages 페이로드와 동일
GET/v1/models모델 및 단가 목록 (인증 불필요)

게이트웨이 주소: https://www.relay-api.com. 요청 경로는 위 표에 따라 작성하십시오.

3. 인증 방식

「사용자 센터 → API 키」에서 sk-xxxxxxxx 형식의 키를 생성하십시오. 호출 시 다음 방식 중 하나를 사용하여 전달합니다:

  • Authorization 헤더: Authorization: Bearer sk-내키 (권장, 대부분의 SDK와 호환)
  • x-api-key 헤더: x-api-key: sk-내키

키가 유효하지 않거나, 정지되었거나, 잔액이 부족하면 401 / 403 오류가 반환됩니다. 먼저 키 상태와 계정 잔액을 확인해 주십시오.

4. 빠른 시작 (curl)

4.1 비스트리밍 대화

curl -X POST https://www.relay-api.com/v1/messages \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-내키" \
  -d '{
    "model": "claude-sonnet-5",
    "max_tokens": 1024,
    "messages": [
      {"role": "user", "content": "너 자신을 한 문장으로 소개해줘"}
    ]
  }'

4.2 시스템 프롬프트 및 멀티턴 대화

curl -X POST https://www.relay-api.com/v1/messages \
  -H "Content-Type: application/json" \
  -H "x-api-key: sk-내키" \
  -d '{
    "model": "claude-opus-5",
    "max_tokens": 2048,
    "system": "당신은 엄격한 기술 문서 엔지니어입니다.",
    "messages": [
      {"role": "user", "content": "Claude Messages API의 인증 헤더는 무엇인가요?"},
      {"role": "assistant", "content": "x-api-key 또는 Authorization: Bearer를 사용하여 키를 전달합니다."},
      {"role": "user", "content": "스트리밍 요청 예시를 하나 더 들어줘."}
    ],
    "metadata": {"request_id": "demo-001"}
  }'

metadata.request_id는 사용량 로그에 기록되어 「사용자 센터 → 사용량 명세」에서 정산 내역을 확인할 때 유용합니다.

5. 요청 매개변수

필드타입필수설명
modelstring모델 slug, 예: claude-sonnet-5
max_tokensint최대 출력 토큰 수, 1~64000 권장
messagesarray대화 메시지, 요소는 {role, content}, role은 user / assistant 사용
systemstring아니오시스템 프롬프트
temperaturenumber아니오샘플링 온도, 기본값 1.0, 범위 0~1
top_pnumber아니오핵 샘플링(Nucleus sampling), 기본값 0.999
streambool아니오스트리밍 반환 여부, 기본값 false
stop_sequencesarray아니오중단 시퀀스
metadata.request_idstring아니오정산을 위한 사용자 정의 요청 ID

6. 응답 구조

비스트리밍 요청은 표준 Anthropic Messages 구조를 반환합니다:

{
  "id": "msg_01ABCDEFG",
  "type": "message",
  "role": "assistant",
  "model": "claude-sonnet-5",
  "content": [
    {"type": "text", "text": "안녕하세요! 저는 Claude입니다."}
  ],
  "stop_reason": "end_turn",
  "usage": {
    "input_tokens": 12,
    "output_tokens": 18,
    "cache_read_input_tokens": 0,
    "cache_creation_input_tokens": 0
  }
}
필드설명
id메시지 고유 ID
content[].type콘텐츠 블록 타입, text / thinking 등
content[].text텍스트 내용
stop_reason중단 사유: end_turn / max_tokens / stop_sequence
usage.input_tokens입력 토큰 수 (과금 기준)
usage.output_tokens출력 토큰 수 (과금 기준)
usage.cache_read_input_tokens캐시 적중 입력 토큰 수 (캐시 읽기 요금 적용)
usage.cache_creation_input_tokens캐시 생성 토큰 수 (캐시 쓰기 요금 적용)

7. 스트리밍 출력

요청 본문에 "stream": true를 추가하면, 서버가 SSE(Server-Sent Events)를 통해 데이터를 조각별로 반환하며 이벤트 타입은 Anthropic과 동일합니다:

event: message_start
data: {"type": "message_start", "message": {"id": "msg_...", "model": "claude-sonnet-5"}}

event: content_block_delta
data: {"type": "content_block_delta", "delta": {"type": "text_delta", "text": "안녕하세요"}}

event: message_delta
data: {"type": "message_delta", "delta": {"stop_reason": "end_turn"}, "usage": {"output_tokens": 18}}

event: message_stop
data: {"type": "message_stop"}

클라이언트는 data: 행에 따라 JSON을 파싱해야 하며 event: 행과 빈 줄은 무시하십시오. message_stop을 수신하면 스트림이 종료된 것입니다. 요금은 서버 측에서 전체 요청의 usage를 기준으로 정산되며 스트리밍 여부와는 무관합니다.

8. 일반적인 오류 코드

HTTP 상태 코드의미처리 제안
400요청 매개변수 오류 (model/max_tokens 누락, 모델 미활성화 등)응답 message를 확인하여 요청 본문 수정
401API 키 누락 또는 유효하지 않음Authorization / x-api-key 헤더 확인
403키 정지, 잔액 부족 또는 모델/경로 권한 없음충전, 키 상태 확인 또는 키 권한 조정
404요청한 모델이 존재하지 않음GET /v1/models로 사용 가능한 모델 확인
429요청이 너무 빈번함 (레이트 리밋)지수 백오프(Exponential Backoff)를 통한 재시도
500서비스 내부 오류잠시 후 재시도; 지속 시 고객센터 문의

오류 응답 본문은 일관되게 {"code": 상태코드, "message": "오류설명", "data": null} 구조를 가집니다.

9. 사용량 및 잔액

  • 모든 호출은 토큰 사용량 × 모델 단가 × 경로 배율에 따라 실시간 차감되며, 단가와 경로는 GET /v1/models에서 확인할 수 있습니다.
  • 로그인 후 「사용자 센터 → API 사용량」에서 호출 기록(모델, 토큰, 비용, 상태)을 확인할 수 있습니다.
  • 잔액 부족 시 호출 시 403 오류가 반환되며, 충전 후 즉시 정상화됩니다.