Cette page n'est pas encore traduite en Français. La version anglaise d'origine est affichée.

Models

Which models we serve and where they run

A model id is always vendor/namegoogle/gemma-4-26b-a4b, lgai/exaone-4.0-32b. There are no variant suffixes: no :free, no :nitro, no :floor. One id means one model, and how it is served is a routing decision described in Provider routing.

Where models come from

Every model in the catalog is served by one or both of these:

SourceWhat it isPriority
Local GPU slotsModels we run ourselves on our own hardware with vLLM or llama.cppTried first
External providersUpstream APIs we forward to, configured by our operatorsTried after local

When a model exists in both places, the local slot wins by default. That is the point of the service; see Local-first routing.

The models you can use today

These are public and available to any account:

ModelContextModalitiesTool callingInputOutput
google/gemma-4-26b-a4b32,768text + image → textYes₩30 / 1M tokens₩150 / 1M tokens
lgai/exaone-4.0-32b32,768text → textNo₩30 / 1M tokens₩150 / 1M tokens

google/gemma-4-26b-a4b is the default model — it is what you get if you omit model and models entirely.

Listing models

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

No authentication required. The response is {"data":[…]}, one object per model:

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 local GPU slot.",
  "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" }
}

Reading pricing

Prices are KRW per token, encoded as strings — the same encoding the OpenAI-compatible ecosystem uses, with a different unit. "0.000030000000" means ₩30 per 1M prompt tokens.

currency is a field we added, and X-MyIP-Currency: KRW is on the response. Both exist so that a client written against a USD-denominated API cannot quietly misread the number. request, image and web_search are always "0": we do not have per-request, image, or search billing.

Reading supported_parameters

This is the list of request parameters the model advertises. It is advisory — we forward every parameter we do not consume, and the upstream decides what to do with the rest. If you need a hard guarantee, use provider: { "require_parameters": true } so that candidates missing the parameters you sent are dropped from the chain.

Note what is present and absent: response_format is there on our local models (Structured outputs), and tools/tool_choice only on models that actually support them (Tool calling).

Filtering the catalog

GET /api/v1/models accepts these query parameters:

ParameterTypeEffect
qstringFull-text search over id, name and description
categorystringMatches a modality family
input_modalitiescsvModel must have all of them, e.g. text,image
output_modalitiescsvSame, for outputs
supported_parameterscsvModel must advertise all of them
contextintMinimum context length
min_price, max_pricenumberKRW per prompt token
model_authorscsvMatches the vendor part of the id
providerscsvProvider slugs that serve the model
sortstringprice, pricing-high-to-low, context, newest, top-weekly
offset, limitintPagination

Examples:

# Models that accept images
curl "https://openrouter.myip.co.kr/api/v1/models?input_modalities=text,image"

# Models with tool calling, cheapest first
curl "https://openrouter.myip.co.kr/api/v1/models?supported_parameters=tools,tool_choice&sort=price"

# Models served from our own GPUs
curl "https://openrouter.myip.co.kr/api/v1/models?providers=local-gpu"
  • GET /api/v1/models/count{"data":{"total":N}}, the number of public, enabled models.
  • GET /api/v1/models/user (Bearer, inference key) → models this key can actually call. It includes models that are not in the public list but excludes models with no working provider mapping.
  • GET /api/v1/models/{author}/{slug}/endpoints → every endpoint serving that model, external and local, with context, quantization, and a status field. Local slots appear here with tag set to the engine (vllm or llamacpp), and status: 0 while the slot is running.
  • GET /api/v1/providers → the provider list, including the slugs you use in provider.order / only / ignore.
bash
curl https://openrouter.myip.co.kr/api/v1/models/google/gemma-4-26b-a4b/endpoints

When a model disappears

Models can be disabled by our operators, and provider mappings can be turned off. The catalog is the truth at any moment; a request for a disabled or unknown id returns 400 model_not_found. A known id with no usable candidate left — every provider disabled, filtered out by your provider{} preferences, or in cooldown — returns 404 no_endpoints_found instead. The two are different codes because the fixes are different.

Dernière mise à jour : 5 sept. 2026