Models
Browse and query 2000+ AI models from multiple providers
Overview
Access 2000+ models from multiple providers through one unified API:
- Vercel AI Gateway - Chat models and the default provider (Claude, GPT, Gemini, Qwen, etc.)
- OpenRouter - Chat models (GPT, Claude, Gemini, Llama, etc.)
- Replicate - Image/video generation models
- More coming soon
Authentication: Optional (public browsing allowed)
Required Scopes (OAuth): ai:models (recommended)
The Models API uses OpenAI-compatible format, so it works with the OpenAI SDK.
List All Models
Get all available models.
Endpoint: GET /api/v1/models
import OpenAI from 'openai'
const client = new OpenAI({
apiKey: process.env.GATEWAY_API_KEY,
baseURL: 'https://hypery.ai/api/v1'
})
const models = await client.models.list()
console.log(models.data) // Array of modelsconst response = await fetch('https://hypery.ai/api/v1/models', {
headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
})
const data = await response.json()
console.log(data.data) // Array of modelsfrom openai import OpenAI
client = OpenAI(
api_key='your-api-key',
base_url='https://hypery.ai/api/v1'
)
models = client.models.list()
for model in models.data:
print(model.id)import requests
response = requests.get(
'https://hypery.ai/api/v1/models',
headers={'Authorization': 'Bearer YOUR_API_KEY'}
)
data = response.json()
for model in data['data']:
print(model['id'])curl https://hypery.ai/api/v1/models \
-H "Authorization: Bearer YOUR_API_KEY"Response:
{
"object": "list",
"data": [
{
"id": "anthropic/claude-3.5-sonnet",
"object": "model",
"owned_by": "anthropic",
"name": "Claude Sonnet 4.5",
"description": "Anthropic's most advanced Sonnet model…",
"provider": "openrouter",
"capabilities": {
"function_calling": true,
"vision": true
},
"context_length": 200000,
"max_tokens": 4096
}
],
"has_more": true,
"meta": { "total": 214, "offset": 0, "limit": 20, "hasMore": true, "returned": 20 }
}Both response formats include pagination: the default (OpenAI) format adds has_more (OpenAI-style) plus a meta block, and format=custom returns the same meta. Use meta.total / has_more to decide whether to fetch the next offset — you don't need to switch formats to paginate.
Model Fields
name and description are gateway extensions. The base OpenAI /v1/models object is minimal (id, object, created, owned_by) — clients that want a display label should read name (falling back to id).
The unfiltered list is sorted by popularity, which is dominated by image/video models. If you want a specific kind of model — most commonly chat — filter with category (below) instead of scanning the full catalog.
Filter by Category (chat / image / video …)
The fastest way to get the models you actually want. category=chat returns the LLM chat models (from Vercel AI Gateway and OpenRouter) with no image/video noise.
// All chat models (the usual case) — bump the limit to get the whole set
const response = await fetch(
'https://hypery.ai/api/v1/models?category=chat&limit=1000'
)
const { data } = await response.json()response = requests.get(
'https://hypery.ai/api/v1/models',
params={'category': 'chat', 'limit': 1000},
)
models = response.json()['data']curl "https://hypery.ai/api/v1/models?category=chat&limit=1000"Categories: chat · image · video · audio · embedding
Filter by Capabilities
Find models with specific features.
// Get models with function calling
const response = await fetch(
'https://hypery.ai/api/v1/models?capabilities=function_calling',
{ headers: { 'Authorization': 'Bearer YOUR_API_KEY' } }
)
const models = await response.json()# Get models with vision
response = requests.get(
'https://hypery.ai/api/v1/models',
params={'capabilities': 'vision'},
headers={'Authorization': 'Bearer YOUR_API_KEY'}
)
models = response.json()# Get models with multiple capabilities
curl "https://hypery.ai/api/v1/models?capabilities=function_calling,vision" \
-H "Authorization: Bearer YOUR_API_KEY"Available capabilities:
function_calling- Can use toolsvision- Can analyze imagesreasoning- Extended reasoning (o1 models)
Search Models
Find models by name or description.
const response = await fetch(
'https://hypery.ai/api/v1/models?search=claude',
{ headers: { 'Authorization': 'Bearer YOUR_API_KEY' } }
)
const models = await response.json()response = requests.get(
'https://hypery.ai/api/v1/models',
params={'search': 'claude'},
headers={'Authorization': 'Bearer YOUR_API_KEY'}
)
models = response.json()curl "https://hypery.ai/api/v1/models?search=claude" \
-H "Authorization: Bearer YOUR_API_KEY"Searches in: model ID, name, and description.
Filter by Provider
Get models from a specific provider.
// Vercel AI Gateway — the DEFAULT chat provider (Claude, GPT, Gemini, Qwen, …)
const response = await fetch(
'https://hypery.ai/api/v1/models?provider=vercel&limit=1000'
)
// OpenRouter chat models
const response = await fetch(
'https://hypery.ai/api/v1/models?provider=openrouter&limit=1000'
)
// Replicate models (images/video)
const response = await fetch(
'https://hypery.ai/api/v1/models?provider=replicate'
)# Vercel AI Gateway (default chat provider)
curl "https://hypery.ai/api/v1/models?provider=vercel&limit=1000"
# OpenRouter chat models
curl "https://hypery.ai/api/v1/models?provider=openrouter&limit=1000"
# Replicate models
curl "https://hypery.ai/api/v1/models?provider=replicate"Filter by Context Length
Find models with large context windows.
// Models with at least 100K tokens
const response = await fetch(
'https://hypery.ai/api/v1/models?minContextLength=100000'
)curl "https://hypery.ai/api/v1/models?minContextLength=100000"Filter by pricing tier
By default, the public catalog exposes pricing tiers (free, budget, standard, premium) — not per-token unit costs. Use pricingTier to filter:
// Budget-tier models
const response = await fetch(
'https://hypery.ai/api/v1/models?format=custom&pricingTier=budget'
)curl "https://hypery.ai/api/v1/models?format=custom&pricingTier=budget"Numeric minCost / maxCost filters (per 1M tokens) are only available when your OAuth app is configured for transparent pricing presentation. The default is tiered.
Pagination
Handle large result sets. Read has_more (or meta.total) from the response to decide whether to fetch the next offset. A single page can return up to limit=1000, so most filtered slices (e.g. ?category=chat) fit in one request.
// First page (50 results)
const page1 = await fetch(
'https://hypery.ai/api/v1/models?limit=50&offset=0'
)
// Second page
const page2 = await fetch(
'https://hypery.ai/api/v1/models?limit=50&offset=50'
)# First page
curl "https://hypery.ai/api/v1/models?limit=50&offset=0"
# Second page
curl "https://hypery.ai/api/v1/models?limit=50&offset=50"Query Parameters
limit is capped at 1000 per request, and the unfiltered catalog is sorted by popularity — so the first page is dominated by high-traffic image/video models. Always filter (e.g. ?category=chat) rather than paging the whole catalog to find a model kind. To enumerate a large slice, paginate with offset.
Model ID Format
Models use the format: organization/model-name
Examples:
anthropic/claude-3.5-sonnetopenai/gpt-4ogoogle/gemini-prometa-llama/llama-3-70bblack-forest-labs/flux-schnell
The first part is the creator/organization, NOT the provider. Provider is a separate field.
Popular Models
Chat Models
Image Models
View all models in dashboard →
Capabilities Reference
Filter example:
# Get models that can see images AND call functions
GET /api/v1/models?capabilities=vision,function_calling