Integrations
도구 연동
Warp은 OpenAI Chat Completions·Anthropic Messages·OpenAI Responses 세 형식을 모두 받습니다. 기존 클라이언트는 주소와 키만 교체하면 그대로 동작합니다. 세 형식 모두 같은 게이트웨이를 지나므로 라우팅·절감·가드레일·감사 기록이 동일하게 적용됩니다.
엔드포인트 선택
대부분의 도구는 OpenAI 형식을 사용합니다. Claude Code는 Anthropic Messages만, Codex는 OpenAI Responses만 지원하므로 각각 전용 엔드포인트를 제공합니다 — 변환기를 따로 깔 필요가 없습니다.
| 형식 | 주소 | 인증 헤더 | 도구 |
|---|---|---|---|
| OpenAI | https://api.warp.inc/v1 | Authorization: Bearer | Cursor, OpenClaw, Hermes, AI SDK, OpenAI SDK |
| Anthropic Messages | https://api.warp.inc | x-api-key | Claude Code, Anthropic SDK |
| OpenAI Responses | https://api.warp.inc/v1 | Authorization: Bearer | Codex CLI |
설정
쓰는 도구를 고르면 그 도구에 맞는 설정이 나옵니다. 형식·엔드포인트·설정 파일 위치는 저희가 채워두었으니 고르기만 하면 됩니다.
이 도구는 Anthropic Messages 형식만 씁니다 → https://api.warp.inc/v1/messages
에이전트에게 시키기
이 프롬프트를 그 도구에 그대로 붙여넣으면 알아서 설정하고 실제 요청까지 보내 확인합니다.
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"`로 실제 요청을 보내서 확인해줘.직접 설정하기
설치
npm install -g @anthropic-ai/claude-code설정
{
"env": {
"ANTHROPIC_BASE_URL": "https://api.warp.inc",
"ANTHROPIC_API_KEY": "sk-warp-...",
"ANTHROPIC_MODEL": "warp/code",
"ANTHROPIC_SMALL_FAST_MODEL": "warp/auto"
}
}확인
claude
# then, inside Claude Code:
/status이렇게 보이면 된 겁니다 — Anthropic base URL: https://api.warp.inc · Model: warp/code
이 도구는 OpenAI Responses 형식만 씁니다 → https://api.warp.inc/v1/responses (Codex는 이 형식 외에 선택지가 없습니다)
에이전트에게 시키기
이 프롬프트를 그 도구에 그대로 붙여넣으면 알아서 설정하고 실제 요청까지 보내 확인합니다.
Codex CLI의 모델 제공자를 Warp으로 바꿔줘.
- 베이스 URL(전체 요청 경로 아님): https://api.warp.inc/v1
← Codex CLI이 뒤에 /responses를 알아서 붙이니 그건 넣지 마
- API 키: sk-warp-... ← 내 키로 바꿔서 넣어줘
- 모델: warp/code
- 설정 위치: ~/.codex/config.toml
셸 export 말고 위 설정 파일에 넣어줘 — export는 그 탭에서만 살아서 조용히 적용
안 되는 경우가 많아. 끝나면 `codex exec "reply with OK"`로 실제 요청을 보내서 확인해줘.직접 설정하기
설치
npm install -g @openai/codex설정
model_provider = "warp"
model = "warp/code"
[model_providers.warp]
name = "Warp"
base_url = "https://api.warp.inc/v1"
env_key = "WARP_API_KEY"
wire_api = "responses"확인
export WARP_API_KEY="sk-warp-..."
codex이렇게 보이면 된 겁니다 — warp/code in the status line
이 도구는 OpenAI 형식으로 말합니다 → https://api.warp.inc/v1/chat/completions
에이전트에게 시키기
이 프롬프트를 그 도구에 그대로 붙여넣으면 알아서 설정하고 실제 요청까지 보내 확인합니다.
Cursor의 모델 제공자를 Warp으로 바꿔줘.
- 베이스 URL(전체 요청 경로 아님): https://api.warp.inc/v1
← Cursor이 뒤에 /chat/completions를 알아서 붙이니 그건 넣지 마
- API 키: sk-warp-... ← 내 키로 바꿔서 넣어줘
- 모델: warp/code
- 설정 위치: Settings → Models → OpenAI API Key → Override base URL
셸 export 말고 위 설정 파일에 넣어줘 — export는 그 탭에서만 살아서 조용히 적용
안 되는 경우가 많아. 끝나면 UI에서 뭘 확인하면 되는지 알려줘.직접 설정하기
설정
Base URL: https://api.warp.inc/v1
API Key: sk-warp-...
Model: warp/code확인
Settings → Models → Verify이렇게 보이면 된 겁니다 — the key verifies and warp/code appears in the model list
이 도구는 OpenAI 형식으로 말합니다 → https://api.warp.inc/v1/chat/completions
에이전트에게 시키기
이 프롬프트를 그 도구에 그대로 붙여넣으면 알아서 설정하고 실제 요청까지 보내 확인합니다.
OpenCode의 모델 제공자를 Warp으로 바꿔줘.
- 베이스 URL(전체 요청 경로 아님): https://api.warp.inc/v1
← OpenCode이 뒤에 /chat/completions를 알아서 붙이니 그건 넣지 마
- API 키: sk-warp-... ← 내 키로 바꿔서 넣어줘
- 모델: warp/code
- 설정 위치: opencode.json
셸 export 말고 위 설정 파일에 넣어줘 — export는 그 탭에서만 살아서 조용히 적용
안 되는 경우가 많아. 끝나면 `opencode run "reply with OK"`로 실제 요청을 보내서 확인해줘.직접 설정하기
설치
npm install -g opencode-ai설정
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"warp": {
"npm": "@ai-sdk/openai-compatible",
"name": "Warp",
"options": {
"baseURL": "https://api.warp.inc/v1",
"apiKey": "{env:WARP_API_KEY}"
},
"models": {
"warp/code": { "name": "Warp Code" },
"warp/auto": { "name": "Warp Auto" }
}
}
}
}확인
opencode
# then, inside OpenCode:
/models이렇게 보이면 된 겁니다 — Warp listed as a provider, with warp/code selectable
이 도구는 OpenAI 형식으로 말합니다 → https://api.warp.inc/v1/chat/completions
에이전트에게 시키기
이 프롬프트를 그 도구에 그대로 붙여넣으면 알아서 설정하고 실제 요청까지 보내 확인합니다.
OpenClaw의 모델 제공자를 Warp으로 바꿔줘.
- 베이스 URL(전체 요청 경로 아님): https://api.warp.inc/v1
← OpenClaw이 뒤에 /chat/completions를 알아서 붙이니 그건 넣지 마
- API 키: sk-warp-... ← 내 키로 바꿔서 넣어줘
- 모델: warp/code
- 설정 위치: ~/.openclaw/openclaw.json
셸 export 말고 위 설정 파일에 넣어줘 — export는 그 탭에서만 살아서 조용히 적용
안 되는 경우가 많아. 끝나면 UI에서 뭘 확인하면 되는지 알려줘.직접 설정하기
설정
{
"models": {
"providers": {
"warp": {
"baseUrl": "https://api.warp.inc/v1",
"apiKey": "sk-warp-...",
"api": "openai-completions",
"models": [
{ "id": "warp/code", "name": "Warp Code", "contextWindow": 1000000, "maxTokens": 8192 }
]
}
}
},
"agents": { "defaults": { "models": ["warp/warp/code"] } }
}확인
openclaw gateway restart이렇게 보이면 된 겁니다 — warp/code · warp at the bottom of the Control UI
이 도구는 OpenAI 형식으로 말합니다 → https://api.warp.inc/v1/chat/completions
에이전트에게 시키기
이 프롬프트를 그 도구에 그대로 붙여넣으면 알아서 설정하고 실제 요청까지 보내 확인합니다.
Hermes의 모델 제공자를 Warp으로 바꿔줘.
- 베이스 URL(전체 요청 경로 아님): https://api.warp.inc/v1
← Hermes이 뒤에 /chat/completions를 알아서 붙이니 그건 넣지 마
- API 키: sk-warp-... ← 내 키로 바꿔서 넣어줘
- 모델: warp/code
- 설정 위치: terminal
셸 export 말고 위 설정 파일에 넣어줘 — export는 그 탭에서만 살아서 조용히 적용
안 되는 경우가 많아. 끝나면 UI에서 뭘 확인하면 되는지 알려줘.직접 설정하기
설정
export OPENAI_BASE_URL="https://api.warp.inc/v1"
export OPENAI_API_KEY="sk-warp-..."
hermes model # pick warp/code확인
hermes이렇게 보이면 된 겁니다 — warp/code in the status bar
이 도구는 OpenAI 형식으로 말합니다 → https://api.warp.inc/v1/chat/completions
에이전트에게 시키기
이 프롬프트를 그 도구에 그대로 붙여넣으면 알아서 설정하고 실제 요청까지 보내 확인합니다.
Vercel AI SDK의 모델 제공자를 Warp으로 바꿔줘.
- 베이스 URL(전체 요청 경로 아님): https://api.warp.inc/v1
← Vercel AI SDK이 뒤에 /chat/completions를 알아서 붙이니 그건 넣지 마
- API 키: sk-warp-... ← 내 키로 바꿔서 넣어줘
- 모델: warp/auto
- 설정 위치: app/api/chat/route.ts
셸 export 말고 위 설정 파일에 넣어줘 — export는 그 탭에서만 살아서 조용히 적용
안 되는 경우가 많아. 끝나면 UI에서 뭘 확인하면 되는지 알려줘.직접 설정하기
설정
import { createOpenAI } from "@ai-sdk/openai";
import { generateText } from "ai";
const warp = createOpenAI({
baseURL: "https://api.warp.inc/v1",
apiKey: process.env.WARP_API_KEY,
});
export async function POST() {
const { text } = await generateText({
model: warp("warp/auto"),
prompt: "Summarize this quarter's metrics",
});
return Response.json({ text });
}확인
node --run dev이렇게 보이면 된 겁니다 — a completion, and the request on your Warp dashboard
이 도구는 OpenAI 형식으로 말합니다 → https://api.warp.inc/v1/chat/completions
에이전트에게 시키기
이 프롬프트를 그 도구에 그대로 붙여넣으면 알아서 설정하고 실제 요청까지 보내 확인합니다.
OpenAI SDK의 모델 제공자를 Warp으로 바꿔줘.
- 베이스 URL(전체 요청 경로 아님): https://api.warp.inc/v1
← OpenAI SDK이 뒤에 /chat/completions를 알아서 붙이니 그건 넣지 마
- API 키: sk-warp-... ← 내 키로 바꿔서 넣어줘
- 모델: warp/auto
- 설정 위치: client.mjs
셸 export 말고 위 설정 파일에 넣어줘 — export는 그 탭에서만 살아서 조용히 적용
안 되는 경우가 많아. 끝나면 `node client.mjs`로 실제 요청을 보내서 확인해줘.직접 설정하기
설정
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.warp.inc/v1",
apiKey: process.env.WARP_API_KEY,
});
const res = await client.chat.completions.create({
model: "warp/auto",
messages: [{ role: "user", content: "Hello" }],
});
console.log(res.choices[0].message.content);확인
node client.mjs이렇게 보이면 된 겁니다 — a completion, and the request on your Warp dashboard
여기 없는 도구라면 형식이 같은 도구를 고른 뒤, 프롬프트에서 도구 이름과 설정 파일 위치만 바꿔서 쓰세요.
라우팅 지정하기
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가 반환하는 값은 추정치입니다. 요청이 어떤 모델로 라우팅될지 확정되기 전에 계산하므로, 기준이 되는 단일 토크나이저가 존재하지 않습니다.