API 개요
엔드포인트 목록과 호환 범위
MyIP OpenRouter 의 /api/v1 은 OpenAI Chat Completions 와 같은 요청·응답 형상을 씁니다. 이미 OpenAI SDK 나 openrouter 용으로 짜 둔 코드가 있다면 base URL 과 API 키만 바꾸면 그대로 동작합니다.
바뀌는 것은 단 하나, 금액의 단위가 KRW 라는 점입니다. 필드 이름도, 중첩 구조도, 소수를 문자열로 인코딩하는 규칙도 openrouter 와 같습니다. 값이 USD 가 아니라 원(₩)이라는 사실은 모든 응답의 X-MyIP-Currency: KRW 헤더와 pricing.currency 필드가 못박습니다.
Base URL
https://openrouter.myip.co.kr/api/v1엔드포인트
| Method | 경로 | 인증 |
|---|---|---|
POST | /chat/completions | 추론 키 |
POST | /completions | 추론 키 |
GET | /models | 없음 |
GET | /models/count | 없음 |
GET | /models/user | 추론 키 |
GET | /models/{author}/{slug}/endpoints | 없음 |
GET | /generation?id= | 추론 키 또는 관리 키 |
GET | /key | 추론 키 또는 관리 키 |
GET | /auth/key | 추론 키 또는 관리 키 |
GET | /credits | 추론 키 또는 관리 키 |
GET POST | /keys | 관리 키만 |
GET PATCH DELETE | /keys/{hash} | 관리 키만 |
GET | /providers | 없음 |
GET | /datasets/rankings-daily | 없음 |
GET | /datasets/app-rankings | 없음 |
GET | /benchmarks | 없음 |
이 표에 없는 /api/v1 경로는 전부 404 not_supported 입니다. 조용한 404 가 아니라 본문에 어떤 경로가 없는지 적어서 돌려줍니다. 자세한 목록은 지원하지 않는 엔드포인트를 보세요.
두 종류의 키
| 접두사 | 종류 | 쓰는 곳 |
|---|---|---|
sk-mo-v1- | 추론 키 | /chat/completions, /completions, /generation, /key, /credits |
sk-mo-mgmt-v1- | 관리 키 | /keys, /keys/{hash} |
키를 반대로 쓰면 401 invalid_api_key 입니다. /api/v1 은 SDK 표면이라 쿠키 인증을 받지 않습니다 — 브라우저 세션으로 키를 관리하는 화면은 대시보드가 따로 씁니다. 인증에 자세히 적어 두었습니다.
첫 요청
curl https://openrouter.myip.co.kr/api/v1/chat/completions \
-H "Authorization: Bearer $MYIP_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "google/gemma-4-26b-a4b",
"messages": [{"role": "user", "content": "한 문장으로 자기소개 해줘"}]
}'응답 헤더
| 헤더 | 값 |
|---|---|
X-MyIP-Currency | 항상 KRW. 모든 /api/v1 응답에 붙습니다 |
X-MyIP-Generation-Id | gen-…. /generation 조회 키입니다 |
X-MyIP-Request-Id | req-…. 한 요청의 모든 후보 시도를 묶는 id |
X-MyIP-Model | 실제로 응답한 모델 id |
X-MyIP-Provider | 실제로 응답한 provider 표시명 |
X-MyIP-Cost-KRW | 이번 요청의 청구액(원). 비스트리밍만 |
X-MyIP-Credit-Balance | 정산 후 잔액(원). 비스트리밍만 |
요청 헤더
| 헤더 | 처리 |
|---|---|
Authorization: Bearer … | 필수(인증이 필요한 경로에서) |
HTTP-Referer | 앱 표기. 없으면 Referer 를 씁니다 |
X-Title | 앱 이름. X-OpenRouter-Title, X-MyIP-Title 도 받습니다 |
HTTP-Referer 와 X-Title 은 openrouter 의 이름을 일부러 그대로 유지합니다. 기존 코드가 헤더 이름을 바꾸지 않아도 되게 하려는 것입니다. 자세한 내용은 앱 표기에 있습니다.
오류
오류 본문은 어떤 경로에서든 같은 형상입니다. HTTP 상태 코드와 error.code 는 항상 같습니다.
{
"error": {
"code": 402,
"message": "크레딧이 부족합니다.",
"metadata": { "error_type": "insufficient_credits", "balance_krw": "-5200.000000" }
}
}상태 코드와 error_type 의 전체 짝은 오류와 디버깅에 있습니다.
호환 범위
- 있는 것: 텍스트 대화, 스트리밍, 툴 콜링, 구조화 출력, 모델 폴백(
models[]), provider 라우팅(provider{}), 사용량·비용 조회. - 없는 것: 임베딩, 이미지·영상·음성, Responses API, Batch, Presets, Workspaces, Guardrails, BYOK, OAuth, SCIM, Auto Router,
:free·:nitro같은 모델 변종. 전부 404not_supported입니다.
우리만 있는 것도 있습니다. 모델이 우리 GPU 팜에 올라와 있으면 외부 provider 보다 먼저 시도합니다(로컬 우선 라우팅).
마지막 수정 2026. 9. 5.