모델 카탈로그

어떤 모델을 어디서 서빙하는가

모델 id 는 언제나 vendor/name 형식입니다 — google/gemma-4-26b-a4b, lgai/exaone-4.0-32b. 변종 접미사는 없습니다: :free 도, :nitro 도, :floor 도 없습니다. id 하나가 모델 하나를 뜻하고, 그 모델을 어디서 서빙할지는 Provider 라우팅 이 다루는 라우팅 문제입니다.

모델은 어디서 오는가

카탈로그의 모든 모델은 아래 둘 중 하나, 또는 양쪽에서 서빙됩니다.

출처설명우선순위
로컬 GPU 슬롯우리 하드웨어에서 vLLM 또는 llama.cpp 로 직접 돌리는 모델먼저 시도
외부 provider운영자가 등록한 업스트림 API 로 중계로컬 다음

같은 모델이 양쪽에 있으면 기본적으로 로컬 슬롯이 이깁니다. 그것이 이 서비스의 요점입니다 — 로컬 우선 라우팅 을 보세요.

지금 쓸 수 있는 모델

아래는 공개 모델이며 모든 계정에서 쓸 수 있습니다.

모델컨텍스트모달리티툴 콜링입력출력
google/gemma-4-26b-a4b32,768text + image → text지원₩30 / 1M 토큰₩150 / 1M 토큰
lgai/exaone-4.0-32b32,768text → text미지원₩30 / 1M 토큰₩150 / 1M 토큰

google/gemma-4-26b-a4b 가 기본 모델입니다 — modelmodels 도 주지 않으면 이 모델로 갑니다.

모델 목록 조회

bash
curl https://openrouter.myip.co.kr/api/v1/models

인증이 필요 없습니다. 응답은 {"data":[…]} 이고 모델 하나가 객체 하나입니다.

json
{
  "id": "lgai/exaone-4.0-32b",
  "canonical_slug": "lgai/exaone-4.0-32b",
  "name": "LG AI: EXAONE 4.0 32B",
  "created": 1786000000,
  "description": "EXAONE 4.0 32B (AWQ-INT4). MyIP 로컬 GPU 슬롯.",
  "context_length": 32768,
  "architecture": {
    "modality": "text->text",
    "input_modalities": ["text"],
    "output_modalities": ["text"],
    "tokenizer": "Other",
    "instruct_type": null
  },
  "pricing": {
    "prompt": "0.000030000000",
    "completion": "0.000150000000",
    "request": "0",
    "image": "0",
    "web_search": "0",
    "internal_reasoning": "0",
    "input_cache_read": "0.000003000000",
    "input_cache_write": null,
    "currency": "KRW"
  },
  "top_provider": { "context_length": 32768, "max_completion_tokens": 32768, "is_moderated": false },
  "supported_parameters": ["max_tokens", "temperature", "top_p", "top_k", "stop", "seed",
    "frequency_penalty", "presence_penalty", "repetition_penalty", "logit_bias", "response_format"],
  "per_request_limits": null,
  "links": { "details": "/api/v1/models/lgai/exaone-4.0-32b/endpoints" }
}

pricing 읽는 법

단가는 토큰당 원(KRW) 이고 문자열로 인코딩됩니다 — OpenAI 호환 생태계와 같은 인코딩 규칙에 단위만 다릅니다. "0.000030000000" 은 프롬프트 100만 토큰당 ₩30 이라는 뜻입니다.

currency 는 우리가 추가한 필드이고, 응답에는 X-MyIP-Currency: KRW 헤더가 붙습니다. 둘 다 USD 기준 API 에 맞춰 짠 클라이언트가 숫자를 조용히 오해하지 못하게 하려고 있습니다. request, image, web_search 는 언제나 "0" 입니다 — 요청당·이미지·웹검색 과금이 없기 때문입니다.

supported_parameters 읽는 법

모델이 광고하는 요청 파라미터 목록입니다. 참고값입니다 — 우리가 소비하지 않는 파라미터는 전부 업스트림으로 그대로 넘기고, 나머지 처리는 업스트림이 결정합니다. 확실한 보장이 필요하면 provider: { "require_parameters": true } 를 쓰세요. 보낸 파라미터를 광고하지 않는 후보가 체인에서 빠집니다.

무엇이 있고 없는지가 중요합니다. 우리 로컬 모델에는 response_format 이 있고(구조화 출력), tools/tool_choice 는 실제로 지원하는 모델에만 있습니다(툴 콜링).

카탈로그 필터링

GET /api/v1/models 가 받는 쿼리 파라미터입니다.

파라미터타입효과
qstringid·이름·설명 전문 검색
categorystring모달리티 계열로 좁힘
input_modalitiescsv나열한 것을 전부 가진 모델만. 예: text,image
output_modalitiescsv출력 쪽 동일
supported_parameterscsv나열한 파라미터를 전부 광고하는 모델만
contextint최소 컨텍스트 길이
min_price, max_pricenumber프롬프트 토큰당 KRW 단가
model_authorscsvid 의 vendor 부분
providerscsv그 모델을 서빙하는 provider slug
sortstringprice, pricing-high-to-low, context, newest, top-weekly
offset, limitint페이지네이션

예시:

# 이미지를 받는 모델
curl "https://openrouter.myip.co.kr/api/v1/models?input_modalities=text,image"

# 툴 콜링이 되는 모델을 싼 순서로
curl "https://openrouter.myip.co.kr/api/v1/models?supported_parameters=tools,tool_choice&sort=price"

# 우리 GPU 에서 서빙하는 모델
curl "https://openrouter.myip.co.kr/api/v1/models?providers=local-gpu"

관련 엔드포인트

  • GET /api/v1/models/count{"data":{"total":N}}. 공개·활성 모델 수입니다.
  • GET /api/v1/models/user (Bearer 추론 키) → 그 키로 실제로 부를 수 있는 모델. 공개 목록에 없는 모델도 포함하되, provider 매핑이 없어 실제로는 못 부르는 모델은 제외합니다.
  • GET /api/v1/models/{author}/{slug}/endpoints → 그 모델을 서빙하는 모든 엔드포인트(외부 + 로컬). 컨텍스트·양자화·status 가 들어 있습니다. 로컬 슬롯은 tag 에 엔진 이름(vllm 또는 llamacpp)이 들어가고, 슬롯이 떠 있으면 status: 0 입니다.
  • GET /api/v1/providers → provider 목록. provider.order / only / ignore 에 쓰는 slug 가 여기 있습니다.
bash
curl https://openrouter.myip.co.kr/api/v1/models/google/gemma-4-26b-a4b/endpoints

모델이 사라졌을 때

운영자가 모델을 비활성화하거나 provider 매핑을 끌 수 있습니다. 어느 시점이든 진실은 카탈로그입니다. 비활성화됐거나 모르는 id 로 요청하면 400 model_not_found 입니다. id 는 아는데 쓸 수 있는 후보가 하나도 남지 않았다면 — provider 가 전부 꺼졌거나, provider{} 조건에 다 걸러졌거나, 쿨다운 중이거나 — 404 no_endpoints_found 입니다. 고치는 방법이 다르기 때문에 코드도 다릅니다.

마지막 수정 2026. 9. 5.