curl --request GET \
--url https://api.opper.ai/v3/modelsimport requests
url = "https://api.opper.ai/v3/models"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.opper.ai/v3/models', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"limit": 123,
"models": [
{
"capabilities": [
"<string>"
],
"context_window": 123,
"description": "<string>",
"id": "<string>",
"model_id": "<string>",
"name": "<string>",
"provider": {
"display_name": "<string>",
"slug": "<string>",
"owner_country": "<string>"
},
"provider_display_name": "<string>",
"quality": "<string>",
"service_route": {
"adapter": "<string>",
"id": "<string>"
},
"speed": "<string>",
"type": "<string>",
"access": "<string>",
"aliases": [
"<string>"
],
"api_type": "<string>",
"benchmarks": {
"as_of": "<string>",
"source": "<string>",
"aa_slug": "<string>",
"coding_index": 123,
"evaluations": {
"aime": 123,
"aime_25": 123,
"gpqa": 123,
"hle": 123,
"ifbench": 123,
"lcr": 123,
"livecodebench": 123,
"math_500": 123,
"mmlu_pro": 123,
"scicode": 123,
"tau2": 123,
"terminalbench_hard": 123
},
"intelligence_index": 123,
"math_index": 123
},
"compliance": {
"dpa_available": true,
"third_party_access": true,
"cache_scope": "<string>",
"cache_ttl_seconds": 123,
"caching": "<string>",
"content_storage": "<string>",
"country": "<string>",
"inference_location": "<string>",
"logging": "<string>",
"moderation": "<string>",
"residency": "<string>",
"retention_days": 123,
"route_id": "<string>",
"storage_location": "<string>",
"training": "<string>",
"transfer_mechanism": "<string>",
"zdr": {
"caching": true,
"logging": true,
"moderation": true,
"subprocessors": true,
"training": true
}
},
"cost": 123,
"country": "<string>",
"family": "<string>",
"featured": true,
"long_description": "<string>",
"maker": {
"slug": "<string>",
"country": "<string>",
"display_name": "<string>"
},
"maker_country": "<string>",
"max_output_tokens": 123,
"model": "<string>",
"params": {
"default_max_tokens": 123,
"embedding": {
"dimensions": 123,
"max_input_tokens": 123,
"supports_dimensions": true
},
"image": {
"aspect_ratios": [
"<string>"
],
"default": "<string>",
"parameters": [
{
"name": "<string>",
"description": "<string>",
"enum": [
"<string>"
],
"example": "<string>",
"type": "<string>"
}
],
"qualities": [
"<string>"
],
"resolutions": [
"<string>"
],
"size_constraints": {
"max_edge": 123,
"max_pixels": 123,
"max_ratio": 123,
"min_edge": 123,
"min_pixels": 123,
"multiple_of": 123
},
"sizes": [
"<string>"
],
"styles": [
"<string>"
]
},
"image_edit": {
"aspect_ratios": [
"<string>"
],
"default": "<string>"
},
"max_tokens": true,
"realtime": {
"default_voice": "<string>",
"input_audio_format": "<string>",
"input_sample_rate": 123,
"output_audio_format": "<string>",
"output_sample_rate": 123,
"reasoning": {
"default": "<string>",
"supported": [
"<string>"
],
"max_budget": 123,
"mode": "<string>",
"wire": "<string>"
},
"sample_rate": 123,
"supports_tools": true,
"supports_vad": true,
"voices": [
"<string>"
]
},
"reasoning": {
"default": "<string>",
"supported": [
"<string>"
],
"max_budget": 123,
"mode": "<string>",
"wire": "<string>"
},
"stt": {
"default_language": "<string>",
"diarize": true,
"formats": [
"<string>"
],
"languages": [
"<string>"
],
"parameters": [
{
"name": "<string>",
"description": "<string>",
"enum": [
"<string>"
],
"example": "<string>",
"type": "<string>"
}
],
"stream": true
},
"temperature": {
"default": 123,
"max": 123,
"min": 123
},
"tts": {
"default_voice": "<string>",
"formats": [
"<string>"
],
"max_length": 123,
"parameters": [
{
"name": "<string>",
"description": "<string>",
"enum": [
"<string>"
],
"example": "<string>",
"type": "<string>"
}
],
"voices": [
"<string>"
]
},
"video": {
"aspect_ratios": [
"<string>"
],
"max_duration": 123,
"max_fps": 123,
"max_frames": 123,
"parameters": [
{
"name": "<string>",
"description": "<string>",
"enum": [
"<string>"
],
"example": "<string>",
"type": "<string>"
}
],
"resolutions": [
"<string>"
],
"speed_modes": [
"<string>"
],
"supports_seed": true
}
},
"policy": {
"allowed": true,
"blocked_by": "<string>",
"reason": "<string>"
},
"pooled": true,
"pricing": {
"audio_cached_input": [
123
],
"audio_input": [
123
],
"audio_input_per_minute": 123,
"audio_output": [
123
],
"audio_output_per_minute": 123,
"billing_unit": "<string>",
"cache_creation": [
123
],
"cache_creation_1h": [
123
],
"cached_input": [
123
],
"free_reference_images": 123,
"google_search_price_per_prompt": 123,
"google_search_price_per_query": 123,
"image_cached_input": [
123
],
"image_input": [
123
],
"image_output": [
123
],
"image_prices": {},
"input": [
123
],
"input_surcharge_multiplier": 123,
"input_surcharge_threshold_tokens": 123,
"input_transcription_per_minute": {},
"openai_code_interpreter_price_per_session": 123,
"openai_file_search_price_per_call": 123,
"openai_web_search_price_per_call": 123,
"output": [
123
],
"output_surcharge_multiplier": 123,
"price_first_megapixel": 123,
"price_per_extra_reference_image": 123,
"price_per_generation": 123,
"price_per_m_chars": 123,
"price_per_megapixel": 123,
"price_per_minute": 123,
"price_per_page": 123,
"price_per_second": 123,
"price_per_second_audio": 123,
"price_per_second_by_resolution": {},
"price_per_second_voice": 123,
"price_vector_style": 123,
"rates": [
{
"amount": 123,
"unit": "<string>",
"dimensions": {}
}
],
"reasoning": [
123
],
"reported_cost_markup": 123,
"thresholds": [
123
],
"web_fetch_price_per_request": 123,
"web_search_price_per_request": 123,
"xai_x_search_price_per_call": 123
},
"region": "<string>",
"retired_at": "2023-11-07T05:31:56Z",
"route": {
"country": "<string>",
"data_handling": {
"caching": {
"default": "<string>",
"scope": "<string>",
"storage_location": "<string>",
"ttl_seconds": 123
},
"logging": {
"default": "<string>",
"retention_days": 123,
"human_review": "<string>",
"storage_location": "<string>"
},
"moderation": {
"default": "<string>",
"retention_days": 123,
"human_review": "<string>",
"storage_location": "<string>"
},
"training": {
"default": "<string>"
},
"residency_enforced": true,
"subprocessors_read_content": true
},
"gdpr": {
"residency": "<string>",
"transfer_mechanism": "<string>",
"dpa_available": true
},
"id": "<string>",
"native_region": "<string>",
"provider": "<string>",
"provider_display_name": "<string>",
"region": "<string>",
"access": "<string>",
"inference_location": "<string>",
"last_verified_at": "<string>",
"sources": [
"<string>"
],
"underlying_maker": "<string>",
"verification": {
"status": "<string>",
"attested_at": "<string>",
"opper_verified_at": "<string>",
"verified_by": "<string>"
},
"zdr": {
"caching": true,
"logging": true,
"moderation": true,
"subprocessors": true,
"training": true
}
},
"server_tools": {},
"short_description": "<string>",
"successor": "<string>",
"thinking": true
}
],
"offset": 123,
"total": 123
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
},
"meta": {}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
},
"meta": {}
}List models
Endpoint to retrieve model info. Optional include adds extra fields per item: maker (underlying-weights creator, e.g. meta for Llama), route (data-handling / legal block — requires an Opper API key), benchmarks (public scores from artificialanalysis.ai; absent for realtime, OCR, image-gen, and other specialty models), policy (requires an Opper API key — annotates each item with the caller’s effective comply allowlist verdict: {"allowed": bool, "blocked_by": "org"|"project"}; the list itself stays unfiltered). Comma-separated, e.g. ?include=maker,benchmarks. inference_location, storage_location, training, logging and moderation filter the list the way a model access rule on the Rules page does, so the result is what a rule with the same settings would allow. Values within one parameter are alternatives; the parameters combine. For models that run in the EU use ?inference_location=EU; for the Rules page’s Zero data retention preset use ?training=no&logging=none.
curl --request GET \
--url https://api.opper.ai/v3/modelsimport requests
url = "https://api.opper.ai/v3/models"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.opper.ai/v3/models', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"limit": 123,
"models": [
{
"capabilities": [
"<string>"
],
"context_window": 123,
"description": "<string>",
"id": "<string>",
"model_id": "<string>",
"name": "<string>",
"provider": {
"display_name": "<string>",
"slug": "<string>",
"owner_country": "<string>"
},
"provider_display_name": "<string>",
"quality": "<string>",
"service_route": {
"adapter": "<string>",
"id": "<string>"
},
"speed": "<string>",
"type": "<string>",
"access": "<string>",
"aliases": [
"<string>"
],
"api_type": "<string>",
"benchmarks": {
"as_of": "<string>",
"source": "<string>",
"aa_slug": "<string>",
"coding_index": 123,
"evaluations": {
"aime": 123,
"aime_25": 123,
"gpqa": 123,
"hle": 123,
"ifbench": 123,
"lcr": 123,
"livecodebench": 123,
"math_500": 123,
"mmlu_pro": 123,
"scicode": 123,
"tau2": 123,
"terminalbench_hard": 123
},
"intelligence_index": 123,
"math_index": 123
},
"compliance": {
"dpa_available": true,
"third_party_access": true,
"cache_scope": "<string>",
"cache_ttl_seconds": 123,
"caching": "<string>",
"content_storage": "<string>",
"country": "<string>",
"inference_location": "<string>",
"logging": "<string>",
"moderation": "<string>",
"residency": "<string>",
"retention_days": 123,
"route_id": "<string>",
"storage_location": "<string>",
"training": "<string>",
"transfer_mechanism": "<string>",
"zdr": {
"caching": true,
"logging": true,
"moderation": true,
"subprocessors": true,
"training": true
}
},
"cost": 123,
"country": "<string>",
"family": "<string>",
"featured": true,
"long_description": "<string>",
"maker": {
"slug": "<string>",
"country": "<string>",
"display_name": "<string>"
},
"maker_country": "<string>",
"max_output_tokens": 123,
"model": "<string>",
"params": {
"default_max_tokens": 123,
"embedding": {
"dimensions": 123,
"max_input_tokens": 123,
"supports_dimensions": true
},
"image": {
"aspect_ratios": [
"<string>"
],
"default": "<string>",
"parameters": [
{
"name": "<string>",
"description": "<string>",
"enum": [
"<string>"
],
"example": "<string>",
"type": "<string>"
}
],
"qualities": [
"<string>"
],
"resolutions": [
"<string>"
],
"size_constraints": {
"max_edge": 123,
"max_pixels": 123,
"max_ratio": 123,
"min_edge": 123,
"min_pixels": 123,
"multiple_of": 123
},
"sizes": [
"<string>"
],
"styles": [
"<string>"
]
},
"image_edit": {
"aspect_ratios": [
"<string>"
],
"default": "<string>"
},
"max_tokens": true,
"realtime": {
"default_voice": "<string>",
"input_audio_format": "<string>",
"input_sample_rate": 123,
"output_audio_format": "<string>",
"output_sample_rate": 123,
"reasoning": {
"default": "<string>",
"supported": [
"<string>"
],
"max_budget": 123,
"mode": "<string>",
"wire": "<string>"
},
"sample_rate": 123,
"supports_tools": true,
"supports_vad": true,
"voices": [
"<string>"
]
},
"reasoning": {
"default": "<string>",
"supported": [
"<string>"
],
"max_budget": 123,
"mode": "<string>",
"wire": "<string>"
},
"stt": {
"default_language": "<string>",
"diarize": true,
"formats": [
"<string>"
],
"languages": [
"<string>"
],
"parameters": [
{
"name": "<string>",
"description": "<string>",
"enum": [
"<string>"
],
"example": "<string>",
"type": "<string>"
}
],
"stream": true
},
"temperature": {
"default": 123,
"max": 123,
"min": 123
},
"tts": {
"default_voice": "<string>",
"formats": [
"<string>"
],
"max_length": 123,
"parameters": [
{
"name": "<string>",
"description": "<string>",
"enum": [
"<string>"
],
"example": "<string>",
"type": "<string>"
}
],
"voices": [
"<string>"
]
},
"video": {
"aspect_ratios": [
"<string>"
],
"max_duration": 123,
"max_fps": 123,
"max_frames": 123,
"parameters": [
{
"name": "<string>",
"description": "<string>",
"enum": [
"<string>"
],
"example": "<string>",
"type": "<string>"
}
],
"resolutions": [
"<string>"
],
"speed_modes": [
"<string>"
],
"supports_seed": true
}
},
"policy": {
"allowed": true,
"blocked_by": "<string>",
"reason": "<string>"
},
"pooled": true,
"pricing": {
"audio_cached_input": [
123
],
"audio_input": [
123
],
"audio_input_per_minute": 123,
"audio_output": [
123
],
"audio_output_per_minute": 123,
"billing_unit": "<string>",
"cache_creation": [
123
],
"cache_creation_1h": [
123
],
"cached_input": [
123
],
"free_reference_images": 123,
"google_search_price_per_prompt": 123,
"google_search_price_per_query": 123,
"image_cached_input": [
123
],
"image_input": [
123
],
"image_output": [
123
],
"image_prices": {},
"input": [
123
],
"input_surcharge_multiplier": 123,
"input_surcharge_threshold_tokens": 123,
"input_transcription_per_minute": {},
"openai_code_interpreter_price_per_session": 123,
"openai_file_search_price_per_call": 123,
"openai_web_search_price_per_call": 123,
"output": [
123
],
"output_surcharge_multiplier": 123,
"price_first_megapixel": 123,
"price_per_extra_reference_image": 123,
"price_per_generation": 123,
"price_per_m_chars": 123,
"price_per_megapixel": 123,
"price_per_minute": 123,
"price_per_page": 123,
"price_per_second": 123,
"price_per_second_audio": 123,
"price_per_second_by_resolution": {},
"price_per_second_voice": 123,
"price_vector_style": 123,
"rates": [
{
"amount": 123,
"unit": "<string>",
"dimensions": {}
}
],
"reasoning": [
123
],
"reported_cost_markup": 123,
"thresholds": [
123
],
"web_fetch_price_per_request": 123,
"web_search_price_per_request": 123,
"xai_x_search_price_per_call": 123
},
"region": "<string>",
"retired_at": "2023-11-07T05:31:56Z",
"route": {
"country": "<string>",
"data_handling": {
"caching": {
"default": "<string>",
"scope": "<string>",
"storage_location": "<string>",
"ttl_seconds": 123
},
"logging": {
"default": "<string>",
"retention_days": 123,
"human_review": "<string>",
"storage_location": "<string>"
},
"moderation": {
"default": "<string>",
"retention_days": 123,
"human_review": "<string>",
"storage_location": "<string>"
},
"training": {
"default": "<string>"
},
"residency_enforced": true,
"subprocessors_read_content": true
},
"gdpr": {
"residency": "<string>",
"transfer_mechanism": "<string>",
"dpa_available": true
},
"id": "<string>",
"native_region": "<string>",
"provider": "<string>",
"provider_display_name": "<string>",
"region": "<string>",
"access": "<string>",
"inference_location": "<string>",
"last_verified_at": "<string>",
"sources": [
"<string>"
],
"underlying_maker": "<string>",
"verification": {
"status": "<string>",
"attested_at": "<string>",
"opper_verified_at": "<string>",
"verified_by": "<string>"
},
"zdr": {
"caching": true,
"logging": true,
"moderation": true,
"subprocessors": true,
"training": true
}
},
"server_tools": {},
"short_description": "<string>",
"successor": "<string>",
"thinking": true
}
],
"offset": 123,
"total": 123
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
},
"meta": {}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
},
"meta": {}
}Query Parameters
Comma-separated list of optional fields to attach to each item. Supported: maker (public), route (requires API key), benchmarks (public), policy (requires API key — per-item comply allowlist verdict).
"maker,benchmarks"
Free-text search across model ID, name, and description.
Filter by provider (company) slug as published in each item's provider.slug and on /v3/providers (e.g. openai, anthropic, google). Adapter keys like vertexai are not companies and match nothing.
Filter by model type (llm, image, tts, stt, video, realtime, embedding, rerank, ocr, evaluation).
Filter by capability (repeatable). Items matching ALL listed capabilities are returned.
Keep models whose inference runs inside any of these locations. Matches like Inference location on the Rules page: EU includes a model running in Sweden, and a model with no recorded location only matches GLOBAL. Each item reports its location as compliance.inference_location. Values come from the catalog's location list: the ISO 3166-1 alpha-2 codes of the countries providers serve from, and the areas EU, EEA and GLOBAL. A country missing from the list has no model recorded in it. Repeatable, or comma-separated.
AE, AR, AT, AU, BE, BG, BH, BR, CA, CH, CL, CN, CY, CZ, DE, DK, EE, EEA, EG, ES, EU, FI, FR, GB, GLOBAL, GR, HK, HR, HU, ID, IE, IL, IN, IS, IT, JP, KE, KR, KW, LI, LT, LU, LV, MT, MX, MY, NG, NL, NO, NZ, PH, PL, PT, QA, RO, RS, SA, SE, SG, SI, SK, TH, TR, TW, UA, US, VN, ZA Keep models whose provider stores retained content (logs, content retained for moderation) only inside these locations. Matches like Storage location on the Rules page, by the same containment as inference_location. A model whose provider keeps no content (no logs, nothing retained for moderation, no training on it by default) matches any location. Values come from the catalog's location list: the ISO 3166-1 alpha-2 codes of the countries providers serve from, and the areas EU, EEA and GLOBAL. A country missing from the list has no model recorded in it. Repeatable, or comma-separated.
AE, AR, AT, AU, BE, BG, BH, BR, CA, CH, CL, CN, CY, CZ, DE, DK, EE, EEA, EG, ES, EU, FI, FR, GB, GLOBAL, GR, HK, HR, HU, ID, IE, IL, IN, IS, IT, JP, KE, KR, KW, LI, LT, LU, LV, MT, MX, MY, NG, NL, NO, NZ, PH, PL, PT, QA, RO, RS, SA, SE, SG, SI, SK, TH, TR, TW, UA, US, VN, ZA Keep models whose provider's training stance is one of no, opt_in, opt_out, yes. Repeatable, or comma-separated. A stance that has not been researched never matches. training=no with logging=none is the Rules page's Zero data retention preset. Each item reports its stance as compliance.training.
no, opt_in, opt_out, yes Keep models whose provider's logging stance is one of none, abuse_monitoring, limited_debug, other. Repeatable, or comma-separated. A stance that has not been researched never matches. logging=none is No logging on the Rules page. Each item reports its stance as compliance.logging.
none, abuse_monitoring, limited_debug, other Keep models whose provider's moderation stance is one of none, optional, default_on, mandatory. Repeatable, or comma-separated. A stance that has not been researched never matches. moderation=none is No provider moderation on the Rules page. Each item reports its stance as compliance.moderation.
none, optional, default_on, mandatory Set to true to include retired models in results.
Field to sort by (id, name, provider, type, cost, speed, quality, context_window). Default id.
asc (default) or desc.
Pagination offset.
x >= 0Page size. A non-positive value returns all rows from offset.