Esta página aún no está traducida al Español. Se muestra el original en inglés.
GET /models/{author}/{slug}/endpoints
The endpoints that can serve one model
Returns the endpoints — the candidates — that can actually serve one model. No authentication required.
GET https://openrouter.myip.co.kr/api/v1/models/{author}/{slug}/endpoints{author}/{slug} is the model id split at the /. For google/gemma-4-26b-a4b the path is /api/v1/models/google/gemma-4-26b-a4b/endpoints. The links.details field of GET /models gives you exactly this path.
Path parameters
authorstringobligatorioThe part of the model id before the /, e.g. google.
slugstringobligatorioThe part after the /, e.g. gemma-4-26b-a4b.
There are no query parameters.
Request example
curl https://openrouter.myip.co.kr/api/v1/models/google/gemma-4-26b-a4b/endpointsResponse
data.idstringThe model id.
data.namestringModel display name.
data.createdintegerUnix seconds.
data.descriptionstringModel description, or an empty string.
data.architectureobjectmodality, input_modalities, output_modalities, tokenizer, instruct_type.
data.endpointsobject[]The candidate list, with the fields below.
data.endpoints[].namestringA display name of the form "<model name> | <provider name>".
data.endpoints[].provider_namestringProvider display name — the same value that appears in the X-MyIP-Provider response header.
data.endpoints[].context_lengthinteger | nullContext this candidate accepts; falls back to the model's value.
data.endpoints[].max_prompt_tokensinteger | nullMaximum prompt tokens; equal to context_length.
data.endpoints[].max_completion_tokensinteger | nullMaximum tokens this candidate can generate.
data.endpoints[].pricingobjectSell rates in KRW per token — the same object as pricing on /models, with currency set to "KRW".
Rates are set per model, so every candidate for a model carries the same pricing: whichever candidate answers, you are charged the same.
data.endpoints[].tagstring | nullA candidate tag. For local GPU candidates this is the inference engine (vllm, llamacpp).
data.endpoints[].quantizationstring | nullQuantization scheme, or null when unknown.
data.endpoints[].supported_parametersstring[]Parameters this candidate accepts; falls back to the model's list.
data.endpoints[].statusinteger | nullCandidate status. For a local GPU candidate it is 0 when the slot is running and null when it is not. null does not mean unusable — an incoming request wakes the slot (see Local GPU models).
data.endpoints[].uptime_last_30mnumber | nullUptime over the last 30 minutes, or null when unknown.
data.endpoints[].latency_last_30mnumber | nullLatency over the last 30 minutes; the value provider.sort: "latency" reads. This field is our addition and is not in openrouter's response.
data.endpoints[].throughput_last_30mnumber | nullThroughput over the last 30 minutes; the value provider.sort: "throughput" reads. Also our addition.
Response example
{
"data": {
"id": "google/gemma-4-26b-a4b",
"name": "Google: Gemma 4 26B A4B",
"created": 1786924800,
"description": "Gemma 4 26B (MoE, 4B active, QAT AWQ-INT4). Default MyIP local GPU slot. Supports tool calling.",
"architecture": {
"modality": "text+image->text",
"input_modalities": ["text", "image"],
"output_modalities": ["text"],
"tokenizer": "Other",
"instruct_type": null
},
"endpoints": [
{
"name": "Google: Gemma 4 26B A4B | MyIP Local GPU",
"context_length": 32768,
"pricing": {
"prompt": "0.000030",
"completion": "0.000150",
"request": "0",
"image": "0",
"web_search": "0",
"internal_reasoning": "0",
"input_cache_read": "0.000003",
"input_cache_write": null,
"currency": "KRW"
},
"provider_name": "MyIP Local GPU",
"tag": "vllm",
"quantization": null,
"max_completion_tokens": 32768,
"max_prompt_tokens": 32768,
"supported_parameters": [
"max_tokens", "temperature", "top_p", "top_k", "stop", "seed",
"frequency_penalty", "presence_penalty", "repetition_penalty",
"logit_bias", "response_format", "tools", "tool_choice"
],
"status": 0,
"uptime_last_30m": null,
"latency_last_30m": null,
"throughput_last_30m": null
}
]
}
}How local GPU candidates get here
The endpoints array is assembled from two sources:
- Endpoints synchronised from external providers.
- Slots on our own GPU farm. These do not exist in any external catalog, so we synthesise one endpoint entry from the slot configuration.
Without that synthesis, a local-only model would return an empty endpoints array, which reads as "nowhere to run this" — for a model we serve ourselves.
The order of candidates in this response is not the routing order. To see how a real request walks its candidates, read Local-first routing and Provider routing.
Errors
| Status | error_type | Raised when |
|---|---|---|
| 404 | not_supported | The model id does not exist or is disabled |
| 429 | rate_limit_exceeded | Request rate limit exceeded |
| 500 | server | Server error |
{
"error": {
"code": 404,
"message": "지원하지 않는 경로입니다: /api/v1/models/nope/nope/endpoints",
"metadata": { "error_type": "not_supported" }
}
}A disabled model and a nonexistent one return the same 404.
Última actualización: 5 sept 2026