import httpx
from urllib.parse import quote
model_id = quote("paddleocr/pp-ocrv6", safe="")
response = httpx.get(
f"https://gateway.vlm.run/v1/models/{model_id}",
headers={"Authorization": "Bearer <VLMRUN_API_KEY>"},
)
print(response.json())
const modelId = encodeURIComponent("paddleocr/pp-ocrv6");
const response = await fetch(`https://gateway.vlm.run/v1/models/${modelId}`, {
headers: { Authorization: "Bearer <VLMRUN_API_KEY>" },
});
console.log(await response.json());
vlmrun gw models pp-ocrv6
curl "https://gateway.vlm.run/v1/models/paddleocr%2Fpp-ocrv6" \
-H "Authorization: Bearer $VLMRUN_API_KEY"
{
"id": "qwen/qwen3.5-0.8b",
"hf_model_id": "AxionML/Qwen3.5-0.8B-NVFP4",
"name": "Qwen3.5 0.8B",
"description": "Multimodal chat model with up to 64 images or one video per request.",
"task": "chat",
"context_length": 262144,
"architecture": {
"input_modalities": ["text", "image", "video"],
"output_modalities": ["text"],
"modality": "text+image+video->text"
},
"capabilities": {
"max_images": 64,
"max_videos": 1,
"supports_text_only": true,
"supports_document_url": false,
"supports_json_object": true,
"supports_json_schema": true,
"supported_input_types": ["text", "image_url", "video_url"]
},
"aliases": ["Qwen/Qwen3.5-0.8B"],
"methods": ["chat"],
"supported_parameters": ["temperature", "top_p", "top_k", "min_p", "seed", "max_tokens", "max_completion_tokens", "stop", "presence_penalty", "frequency_penalty", "repetition_penalty", "logprobs", "top_logprobs", "response_format", "stream", "stream_options"],
"pricing": {
"prompt": 0.08,
"completion": 0.15,
"input_cache_read": 0.02,
"input_cache_write": 0.0,
"image": 0.0,
"video": 0.0
}
}
{
"detail": {
"error": {
"message": "Model 'does-not/exist' not found.",
"type": "model_not_found",
"code": null,
"param": null
}
}
}
OpenAI Compatible API
Get Model
One gateway model and its capabilities
GET
/
v1
/
models
/
{model_id}
import httpx
from urllib.parse import quote
model_id = quote("paddleocr/pp-ocrv6", safe="")
response = httpx.get(
f"https://gateway.vlm.run/v1/models/{model_id}",
headers={"Authorization": "Bearer <VLMRUN_API_KEY>"},
)
print(response.json())
const modelId = encodeURIComponent("paddleocr/pp-ocrv6");
const response = await fetch(`https://gateway.vlm.run/v1/models/${modelId}`, {
headers: { Authorization: "Bearer <VLMRUN_API_KEY>" },
});
console.log(await response.json());
vlmrun gw models pp-ocrv6
curl "https://gateway.vlm.run/v1/models/paddleocr%2Fpp-ocrv6" \
-H "Authorization: Bearer $VLMRUN_API_KEY"
{
"id": "qwen/qwen3.5-0.8b",
"hf_model_id": "AxionML/Qwen3.5-0.8B-NVFP4",
"name": "Qwen3.5 0.8B",
"description": "Multimodal chat model with up to 64 images or one video per request.",
"task": "chat",
"context_length": 262144,
"architecture": {
"input_modalities": ["text", "image", "video"],
"output_modalities": ["text"],
"modality": "text+image+video->text"
},
"capabilities": {
"max_images": 64,
"max_videos": 1,
"supports_text_only": true,
"supports_document_url": false,
"supports_json_object": true,
"supports_json_schema": true,
"supported_input_types": ["text", "image_url", "video_url"]
},
"aliases": ["Qwen/Qwen3.5-0.8B"],
"methods": ["chat"],
"supported_parameters": ["temperature", "top_p", "top_k", "min_p", "seed", "max_tokens", "max_completion_tokens", "stop", "presence_penalty", "frequency_penalty", "repetition_penalty", "logprobs", "top_logprobs", "response_format", "stream", "stream_options"],
"pricing": {
"prompt": 0.08,
"completion": 0.15,
"input_cache_read": 0.02,
"input_cache_write": 0.0,
"image": 0.0,
"video": 0.0
}
}
{
"detail": {
"error": {
"message": "Model 'does-not/exist' not found.",
"type": "model_not_found",
"code": null,
"param": null
}
}
}
Omit the
Authorization header for anonymous access. Per-tier quotas are on Rate Limits. This route shares those quotas with the inference routes. For the full catalog, call List Models or see Models.
model_id is a path parameter. The value keeps its /. GET /v1/models/paddleocr/pp-ocrv6 resolves as written. Percent-encoding the slash as %2F also works.
import httpx
from urllib.parse import quote
model_id = quote("paddleocr/pp-ocrv6", safe="")
response = httpx.get(
f"https://gateway.vlm.run/v1/models/{model_id}",
headers={"Authorization": "Bearer <VLMRUN_API_KEY>"},
)
print(response.json())
const modelId = encodeURIComponent("paddleocr/pp-ocrv6");
const response = await fetch(`https://gateway.vlm.run/v1/models/${modelId}`, {
headers: { Authorization: "Bearer <VLMRUN_API_KEY>" },
});
console.log(await response.json());
vlmrun gw models pp-ocrv6
curl "https://gateway.vlm.run/v1/models/paddleocr%2Fpp-ocrv6" \
-H "Authorization: Bearer $VLMRUN_API_KEY"
{
"id": "qwen/qwen3.5-0.8b",
"hf_model_id": "AxionML/Qwen3.5-0.8B-NVFP4",
"name": "Qwen3.5 0.8B",
"description": "Multimodal chat model with up to 64 images or one video per request.",
"task": "chat",
"context_length": 262144,
"architecture": {
"input_modalities": ["text", "image", "video"],
"output_modalities": ["text"],
"modality": "text+image+video->text"
},
"capabilities": {
"max_images": 64,
"max_videos": 1,
"supports_text_only": true,
"supports_document_url": false,
"supports_json_object": true,
"supports_json_schema": true,
"supported_input_types": ["text", "image_url", "video_url"]
},
"aliases": ["Qwen/Qwen3.5-0.8B"],
"methods": ["chat"],
"supported_parameters": ["temperature", "top_p", "top_k", "min_p", "seed", "max_tokens", "max_completion_tokens", "stop", "presence_penalty", "frequency_penalty", "repetition_penalty", "logprobs", "top_logprobs", "response_format", "stream", "stream_options"],
"pricing": {
"prompt": 0.08,
"completion": 0.15,
"input_cache_read": 0.02,
"input_cache_write": 0.0,
"image": 0.0,
"video": 0.0
}
}
{
"detail": {
"error": {
"message": "Model 'does-not/exist' not found.",
"type": "model_not_found",
"code": null,
"param": null
}
}
}
Response fields
The response is one flat model object.| Field | Description |
|---|---|
id | Preferred public model id. |
name, description | Human-readable catalog metadata. |
hf_model_id | Upstream Hugging Face repo id, when the model is open-weight. |
task | chat, embed, or transcribe. |
context_length | Maximum context length, when defined. |
architecture | input_modalities, output_modalities, and a summary modality string. |
capabilities | Same shape as on List Models: max images/videos, accepted input types. |
aliases, methods | Accepted request ids and supported method values. |
supported_parameters | Request parameters this model accepts, each with its type and range. Sending one that is absent here is a 400 capability_violation whose param names it. |
pricing | USD per 1M units: prompt, completion, input_cache_read, and input_cache_write per 1M tokens, image per 1M image inputs, and video per 1M video inputs. See Pricing. |
GET /v1/openai/models carries the same pricing object on every entry. That route lists supported_parameters by name. This route adds the type and range of each parameter.Related
List Models
Full catalog in one call.
Pricing
How to read the
pricing object, and what each mode bills.Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Response
Successful Response
Flat JSON response for GET /v1/models/{model_id}.
Every field it shares with GET /v1/openai/models carries the same value.
Declared input capabilities exposed via GET /v1/openai/models.
Describes how many images / videos a model accepts, whether it supports
text-only prompts, and whether it can constrain generation to a JSON
schema, so clients can validate a request before sending it. None
means unlimited (no cap on that input type).
Hide child attributes
Hide child attributes
Available options:
chat, embed, transcribe Available options:
ocr, markdown, layout, detection, caption, segmentation, pose, chat, transcription, embedding