Warp

Integrations

도구 연동

Warp은 OpenAI Chat Completions·Anthropic Messages·OpenAI Responses 세 형식을 모두 받습니다. 기존 클라이언트는 주소와 키만 교체하면 그대로 동작합니다. 세 형식 모두 같은 게이트웨이를 지나므로 라우팅·절감·가드레일·감사 기록이 동일하게 적용됩니다.

엔드포인트 선택

대부분의 도구는 OpenAI 형식을 사용합니다. Claude Code는 Anthropic Messages만, Codex는 OpenAI Responses만 지원하므로 각각 전용 엔드포인트를 제공합니다 — 변환기를 따로 깔 필요가 없습니다.

형식주소인증 헤더도구
OpenAIhttps://api.warp.inc/v1Authorization: BearerCursor, OpenClaw, Hermes, AI SDK, OpenAI SDK
Anthropic Messageshttps://api.warp.incx-api-keyClaude Code, Anthropic SDK
OpenAI Responseshttps://api.warp.inc/v1Authorization: BearerCodex CLI

설정

쓰는 도구를 고르면 그 도구에 맞는 설정이 나옵니다. 형식·엔드포인트·설정 파일 위치는 저희가 채워두었으니 고르기만 하면 됩니다.

이 도구는 Anthropic Messages 형식만 씁니다 → https://api.warp.inc/v1/messages

에이전트에게 시키기

이 프롬프트를 그 도구에 그대로 붙여넣으면 알아서 설정하고 실제 요청까지 보내 확인합니다.

Claude Code · agent prompt
Claude Code의 모델 제공자를 Warp으로 바꿔줘.

- 베이스 URL(전체 요청 경로 아님): https://api.warp.inc
  ← Claude Code이 뒤에 /v1/messages를 알아서 붙이니 그건 넣지 마
- API 키: sk-warp-...  ← 내 키로 바꿔서 넣어줘
- 모델: warp/code
- 설정 위치: ~/.claude/settings.json

셸 export 말고 위 설정 파일에 넣어줘 — export는 그 탭에서만 살아서 조용히 적용
안 되는 경우가 많아. 끝나면 `claude -p "/status"`로 실제 요청을 보내서 확인해줘.

직접 설정하기

설치

terminal
npm install -g @anthropic-ai/claude-code

설정

~/.claude/settings.json
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://api.warp.inc",
    "ANTHROPIC_API_KEY": "sk-warp-...",
    "ANTHROPIC_MODEL": "warp/code",
    "ANTHROPIC_SMALL_FAST_MODEL": "warp/auto"
  }
}
API 키 만들기

확인

terminal
claude
# then, inside Claude Code:
/status

이렇게 보이면 된 겁니다 — Anthropic base URL: https://api.warp.inc · Model: warp/code

여기 없는 도구라면 형식이 같은 도구를 고른 뒤, 프롬프트에서 도구 이름과 설정 파일 위치만 바꿔서 쓰세요.

라우팅 지정하기

warp/auto·warp/code는 모델 선택을 통째로 맡기는 쪽입니다. 대신 지금 쓰는 모델을 품질 상한(앵커)으로 두고 쉬운 요청만 내려보낼 수도 있습니다 — 쓰던 모델 이름 뒤에 :auto만 붙이면 됩니다. 다이얼도 같은 자리에 씁니다.

모델 이름
anthropic/claude-sonnet-5        # always this model, no routing
anthropic/claude-sonnet-5:auto   # route; never above claude-sonnet-5
anthropic/claude-sonnet-5:balanced
anthropic/claude-sonnet-5:max-savings
warp/auto:balanced               # a router; a dial needs an anchor, so this one is ignored

이러면 어려운 요청은 반드시 claude-sonnet-5가 답하고, 쉬운 요청만 아래 티어로 갑니다. 앵커는 천장이지 선택이 아닙니다 — 위로는 절대 올라가지 않습니다. 하위 티어가 못 쓸 답을 내면 한 단계 위 티어에서 자동으로 한 번 다시 서빙합니다(기본 동작).

본문을 직접 못 만드는 도구에서

모델 이름은 어느 도구에서나 적을 수 있으므로, 요청 본문을 직접 만들 수 없는 Claude Code·Cursor 같은 도구도 이 방법을 그대로 씁니다 — 지정 라우팅 참고.

Anthropic Messages 직접 호출

Messages 형식으로 직접 구현하는 경우입니다. 라우팅 옵션은 OpenAI 엔드포인트와 동일합니다 — Warp 라우터참고.

터미널
curl https://api.warp.inc/v1/messages \
  -H "x-api-key: $WARP_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{
    "model": "warp/auto",
    "max_tokens": 1024,
    "messages": [{ "role": "user", "content": "Hello" }]
  }'

지원하지 않는 필드

다음 두 필드는 요청에 포함되어도 무시됩니다. 적용되지 않는 값을 받아들이면 동작을 오해하게 되므로, 무시한다는 사실을 명시합니다.

필드이유
thinking게이트웨이의 내부 응답 형식에 추론 내용을 담는 필드가 없어, 업스트림이 추론을 반환하더라도 전달하지 못합니다. 대화 기록에 포함된 thinking 블록은 받아들인 뒤 무시합니다.
cache_control프롬프트 캐시 표시를 업스트림까지 전달하는 경로가 없습니다. 요청은 Anthropic 외의 모델로 라우팅될 수 있습니다.

top_k전달됩니다. 한동안 이 표에 “대응 파라미터가 없다”고 적혀 있었지만 사실이 아니었고, 값을 받는 모델에 보내지 못한 채 버리고 있던 쪽은 게이트웨이였습니다.

POST /v1/messages/count_tokens가 반환하는 값은 추정치입니다. 요청이 어떤 모델로 라우팅될지 확정되기 전에 계산하므로, 기준이 되는 단일 토크나이저가 존재하지 않습니다.