관리 API 키

키를 코드로 발급·폐기하기

키는 두 종류이고 서로 역할이 겹치지 않습니다.

종류접두사할 수 있는 것할 수 없는 것
추론 키sk-mo-v1-/chat/completions, /completions, /generation, /key, /credits 호출키 발급·폐기
관리 키sk-mo-mgmt-v1-추론 키 발급·조회·수정·폐기추론 호출

추론 키를 /api/v1/keys 에 보내거나 관리 키를 /chat/completions 에 보내면 401 invalid_api_key 입니다. 분리는 의도적입니다 — 돈을 쓸 수 있으면서 새 키까지 찍어낼 수 있는 키는 유출됐을 때 피해가 훨씬 큽니다.

관리 키 발급받기

대시보드 설정 → API 키(/settings/keys) 에서 만듭니다. 평문은 발급 시 한 번만 보여주고 다시는 볼 수 없습니다 — 서버에는 SHA-256 해시만 남습니다.

bash
export MYIP_MGMT_KEY="sk-mo-mgmt-v1-..."

키를 지목하는 값: hash

키는 hash 로 지목합니다. 평문 키 전체의 SHA-256 을 16진수 64자로 쓴 값입니다. 평문을 저장하지 않으므로 이 해시가 존재하는 유일한 손잡이입니다. 발급·목록 응답에서 얻을 수 있습니다.

엔드포인트

전부 Authorization: Bearer $MYIP_MGMT_KEY 가 필요합니다.

메서드경로용도
GET/api/v1/keys추론 키 목록
POST/api/v1/keys추론 키 발급
GET/api/v1/keys/{hash}키 1건 조회
PATCH/api/v1/keys/{hash}이름·비활성·한도 변경
DELETE/api/v1/keys/{hash}영구 폐기

목록에는 추론 키만 나오고 폐기된 키는 빠집니다. 관리 키 자신은 목록에 나오지 않습니다.

키 발급

namestring필수

사람이 읽는 이름. 필수이며 비어 있으면 안 됩니다.

limitnumber

이 키의 사용 한도(원). null 이거나 생략하면 무제한입니다.

limit_resetstring

never, daily, weekly, monthly 중 하나. 한도가 적용되는 기간을 정합니다. 일·주·월 경계는 Asia/Seoul 기준입니다.

curl -X POST https://openrouter.myip.co.kr/api/v1/keys \
  -H "Authorization: Bearer $MYIP_MGMT_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "name": "batch-worker", "limit": 50000, "limit_reset": "monthly" }'

응답:

json
{
  "data": {
    "created_at": "2026-09-04T02:11:43.201Z",
    "updated_at": null,
    "hash": "9f2c…c41a",
    "label": "sk-mo-v1-au7…890",
    "name": "batch-worker",
    "disabled": false,
    "limit": 50000,
    "usage": 0
  },
  "key": "sk-mo-v1-au7c2f…c890"
}
keystring

평문 키. 여기서 한 번만 돌려줍니다. 연결을 닫기 전에 저장하세요.

data.hashstring

평문의 SHA-256 16진수. GET·PATCH·DELETE 에서 쓰는 손잡이입니다.

data.labelstring

마스킹된 키. 화면에 띄우거나 로그에 남겨도 안전합니다.

data.usagenumber

현재 limit_reset 기간 동안 이 키가 쓴 금액(원). limit_reset 이 없으면 전체 기간 누적입니다.

키 목록

bash
curl https://openrouter.myip.co.kr/api/v1/keys \
  -H "Authorization: Bearer $MYIP_MGMT_KEY"
json
{ "data": [ { "hash": "9f2c…c41a", "name": "batch-worker", "disabled": false, "limit": 50000, "usage": 1234.5 } ] }

키 수정

PATCHname, disabled, limit 을 받습니다. 생략한 필드는 그대로 두고, "limit": null 은 한도를 없앱니다.

bash
# 키를 없애지 않고 잠시 멈춘다
curl -X PATCH https://openrouter.myip.co.kr/api/v1/keys/9f2c…c41a \
  -H "Authorization: Bearer $MYIP_MGMT_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "disabled": true }'

limit_reset 은 발급 시점에 고정됩니다. 기간을 바꾸려면 새 키를 만드세요.

키 폐기

bash
curl -X DELETE https://openrouter.myip.co.kr/api/v1/keys/9f2c…c41a \
  -H "Authorization: Bearer $MYIP_MGMT_KEY"
json
{ "data": { "success": true } }

지금 쓰는 키 자체를 확인하기

추론 키는 자기 자신을 조회할 수 있습니다. 관리 키가 필요 없습니다.

bash
curl https://openrouter.myip.co.kr/api/v1/key \
  -H "Authorization: Bearer $MYIP_API_KEY"

GET /api/v1/auth/key 는 같은 응답의 별칭입니다. limit, usage, limit_remaining, limit_reset, 기간별 사용액, 그리고 관리 키 여부를 돌려줍니다. 금액은 전부 원화입니다.

형상 호환을 위해서만 존재하는 필드는 값이 고정입니다. is_free_tier 는 언제나 false, byok_* 카운터는 BYOK 를 지원하지 않으므로 언제나 0, rate_limit 은 무시해도 되는 deprecated 필드입니다.

오류

상태error_type원인
400invalid_requestname 누락, JSON 형식 오류, 잘못된 limit_reset
401invalid_api_key관리 키가 아니거나, 없는·폐기된 키
403key_suspended관리자가 정지한 키
404not_supported본인 소유 키 중에 그 해시가 없음. 남의 해시도 똑같이 404 라 키 존재 여부를 탐색할 수 없습니다

대시보드가 다른 API 를 쓰는 이유

/api/v1/* 는 Bearer 토큰만 받습니다. 브라우저 대시보드는 세션 쿠키로 인증하며, 내부적으로 같은 키 로직을 쓰는 별도 엔드포인트를 호출합니다. SDK 표면에 쿠키 인증을 섞으면 편해지는 것 없이 CSRF 표면만 열리므로 그렇게 하지 않습니다.

마지막 수정 2026. 9. 5.