curl https://api.pipellm.ai/v1/models \
-H "Authorization: Bearer $PIPELLM_API_KEY"
import os
import requests
response = requests.get(
"https://api.pipellm.ai/v1/models",
headers={"Authorization": f"Bearer {os.getenv('PIPELLM_API_KEY')}"},
)
payload = response.json()
for model in payload["data"]:
print(model["id"], model["type_target"])
const response = await fetch("https://api.pipellm.ai/v1/models", {
headers: { Authorization: `Bearer ${process.env.PIPELLM_API_KEY}` },
});
const payload = await response.json();
for (const model of payload.data) {
console.log(model.id, model.type_target);
}
List models
Retrieve the PipeLLM unified model catalog. Does not include pricing.
GET
/
v1
/
models
curl https://api.pipellm.ai/v1/models \
-H "Authorization: Bearer $PIPELLM_API_KEY"
import os
import requests
response = requests.get(
"https://api.pipellm.ai/v1/models",
headers={"Authorization": f"Bearer {os.getenv('PIPELLM_API_KEY')}"},
)
payload = response.json()
for model in payload["data"]:
print(model["id"], model["type_target"])
const response = await fetch("https://api.pipellm.ai/v1/models", {
headers: { Authorization: `Bearer ${process.env.PIPELLM_API_KEY}` },
});
const payload = await response.json();
for (const model of payload.data) {
console.log(model.id, model.type_target);
}
Use this route to retrieve the model IDs currently visible to your account.
/v1/models is now a catalog-only endpoint. It returns model identity and
protocol metadata, not pricing.
For pricing, use /v1/models/pricing.
Endpoint
GET https://api.pipellm.ai/v1/models
Authentication
Use a standard PipeLLM API key header:| Header | Example |
|---|---|
Authorization | Bearer $PIPELLM_API_KEY |
x-api-key | $PIPELLM_API_KEY |
Notes
- This route only supports
GET. - The response is PipeLLM’s unified catalog schema.
- Hidden and unlisted models are filtered out before the response is returned.
- Results are sorted by model ID.
- Pricing is intentionally excluded so the catalog does not imply a single authoritative price when the same model can route across multiple mappings.
curl https://api.pipellm.ai/v1/models \
-H "Authorization: Bearer $PIPELLM_API_KEY"
import os
import requests
response = requests.get(
"https://api.pipellm.ai/v1/models",
headers={"Authorization": f"Bearer {os.getenv('PIPELLM_API_KEY')}"},
)
payload = response.json()
for model in payload["data"]:
print(model["id"], model["type_target"])
const response = await fetch("https://api.pipellm.ai/v1/models", {
headers: { Authorization: `Bearer ${process.env.PIPELLM_API_KEY}` },
});
const payload = await response.json();
for (const model of payload.data) {
console.log(model.id, model.type_target);
}
Response Format
{
"object": "list",
"data": [
{
"id": "gpt-5",
"display_name": "Gpt 5",
"type_target": "openai",
"created_at": "2025-05-14T00:00:00Z"
},
{
"id": "claude-sonnet-4-6",
"display_name": "Claude Sonnet 4.6",
"type_target": "anthropic",
"created_at": "2025-03-01T00:00:00Z"
}
],
"total": 2
}
Response Fields
| Field | Type | Description |
|---|---|---|
object | string | Always "list" |
data | array | Array of model catalog entries |
data[].id | string | Model ID used in API requests |
data[].display_name | string | Human-readable label generated from the model ID |
data[].type_target | string | Target protocol family for routing, such as openai, anthropic, or gemini |
data[].created_at | string | RFC3339 timestamp chosen from the model metadata |
total | integer | Total number of returned models |
Why This Route Matters
Use/v1/models when you need to:
- populate a model picker in your UI
- validate whether a model is visible to the current account
- decide which protocol family a model is exposed under
/v1/models/pricing when you need
authoritative billing data.
Related Docs
Model Pricing
Retrieve authoritative pricing for a specific model, provider, or platform mapping
Routing & Protocols
Understand how model protocol families affect requests
Developer Tools
Use these model IDs in Claude Code, OpenCode, OpenClaw, and LangChain
Was this page helpful?