Models
GET /v1/models and GET /v1/models/{id}: query the models you can call, and how model IDs are used
The catalog is onboarding new vendors and models continuously at this stage — don't hardcode a model list from this page. GET /v1/models (or the public model catalog, no auth required) is the only source of truth for what's live right now.
List models
from openai import OpenAI
client = OpenAI(base_url="https://api.modelsite.ai/v1", api_key="sk-ms-xxxxxxxx")
for m in client.models.list().data:
print(m.id)GET /v1/models returns {"object":"list","data":[...]}. Each model object contains id, object (always model), created, owned_by (always modelsite), and three fields that tell model types apart: category (an array: chat, image_generation or video_generation), input_modalities (an array: text, image) and capabilities (an array of the same tags the public catalog uses, see below). GET /v1/models/{id} returns the same shape. created is a fixed value (2024-01-01 UTC), not the model's release date, so don't use it to sort or judge recency; owned_by does not identify the original vendor either.
The list contains only models that are enabled, published and publicly listed (chat, image, video, …). Unlisted models do not appear, but those that are callable can still be called by name (see the next section). The list is not paginated and takes no filter parameters. It is not filtered by your key: if your organization or team has a model allowlist, a listed model may still be off limits to you and the call returns 403 model_access_error.
The API card below is rendered from the OpenAPI spec (the model object's Response schema).
Authorization
BearerAuth Authorization: Bearer $MODELSITE_API_KEY
In: header
Response Body
application/json
curl -X GET "https://example.com/models"{ "object": "string", "data": [ { "id": "string", "object": "string", "created": 0, "owned_by": "string", "category": [ "chat" ], "input_modalities": [ "text" ], "capabilities": [ "string" ] } ]}Retrieve model
curl https://api.modelsite.ai/v1/models/glm-5.3-flash \
-H "Authorization: Bearer $MODELSITE_API_KEY"Returns the same object as one entry of the list (id, object, created, owned_by, category, input_modalities, capabilities) — no context window or pricing (see the public model catalog for those). The check is "can it be called", not "is it in the list": it returns 200 when the model is enabled and published, and 404 when it does not exist, is disabled or is unpublished, with the body {"error":{"message":"The model '...' does not exist","type":"invalid_request_error","code":"model_not_found"}}. So a few enabled, published models that are not in the public list (not visible) can still be called by name, and retrieving them also returns 200.
Model IDs
ModelSite keeps each vendor's native model ID where possible, for easy migration from direct connections — no separate "ModelSite name" to learn. A model's id is exactly what you pass as model in /v1/chat/completions or /v1/messages (image and video models use their own endpoints — see their pages).
- Use model IDs exactly as written in the list or the public catalog.
- One ID maps to one specific model; switching endpoints does not change which model it refers to.
Where to find capabilities, context and pricing
GET /v1/models returns each model's category, input_modalities and capabilities, but no context-window or pricing fields. Those live in the public model catalog, which needs no auth. Capability tags (in capabilities and in the catalog) are drawn from: chat, streaming, vision, tools, thinking (reasoning), embedding, image_gen, video_gen, tts, stt, cache. The tags are curated by hand.
The model id you call is stable — use it the same way whether you got it from GET /v1/models or the public catalog.