openrouter_models
Run the openrouter_models tool. Returns a clean, normalized JSON shape.
curl --request POST \
--url https://api.fetchbean.com/v1/openrouter_models \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"q": "<string>",
"category": "programming",
"supported_parameters": "<string>",
"output_modalities": "<string>",
"input_modalities": "<string>",
"context": 2,
"sort": "most-popular",
"min_price": 1,
"max_price": 1,
"arch": "<string>",
"model_authors": "<string>",
"providers": "<string>",
"distillable": true,
"zdr": true,
"region": "eu",
"min_output_price": 1,
"max_output_price": 1,
"min_age_days": 1,
"max_age_days": 1,
"min_intelligence_index": 1,
"max_intelligence_index": 1,
"min_coding_index": 1,
"max_coding_index": 1,
"min_agentic_index": 1,
"max_agentic_index": 1,
"min_tool_success_rate": 0.5,
"max_tool_success_rate": 0.5,
"free_only": false,
"offset": 1,
"limit": 500
}
'import requests
url = "https://api.fetchbean.com/v1/openrouter_models"
payload = {
"q": "<string>",
"category": "programming",
"supported_parameters": "<string>",
"output_modalities": "<string>",
"input_modalities": "<string>",
"context": 2,
"sort": "most-popular",
"min_price": 1,
"max_price": 1,
"arch": "<string>",
"model_authors": "<string>",
"providers": "<string>",
"distillable": True,
"zdr": True,
"region": "eu",
"min_output_price": 1,
"max_output_price": 1,
"min_age_days": 1,
"max_age_days": 1,
"min_intelligence_index": 1,
"max_intelligence_index": 1,
"min_coding_index": 1,
"max_coding_index": 1,
"min_agentic_index": 1,
"max_agentic_index": 1,
"min_tool_success_rate": 0.5,
"max_tool_success_rate": 0.5,
"free_only": False,
"offset": 1,
"limit": 500
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
q: '<string>',
category: 'programming',
supported_parameters: '<string>',
output_modalities: '<string>',
input_modalities: '<string>',
context: 2,
sort: 'most-popular',
min_price: 1,
max_price: 1,
arch: '<string>',
model_authors: '<string>',
providers: '<string>',
distillable: true,
zdr: true,
region: 'eu',
min_output_price: 1,
max_output_price: 1,
min_age_days: 1,
max_age_days: 1,
min_intelligence_index: 1,
max_intelligence_index: 1,
min_coding_index: 1,
max_coding_index: 1,
min_agentic_index: 1,
max_agentic_index: 1,
min_tool_success_rate: 0.5,
max_tool_success_rate: 0.5,
free_only: false,
offset: 1,
limit: 500
})
};
fetch('https://api.fetchbean.com/v1/openrouter_models', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.fetchbean.com/v1/openrouter_models",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'q' => '<string>',
'category' => 'programming',
'supported_parameters' => '<string>',
'output_modalities' => '<string>',
'input_modalities' => '<string>',
'context' => 2,
'sort' => 'most-popular',
'min_price' => 1,
'max_price' => 1,
'arch' => '<string>',
'model_authors' => '<string>',
'providers' => '<string>',
'distillable' => true,
'zdr' => true,
'region' => 'eu',
'min_output_price' => 1,
'max_output_price' => 1,
'min_age_days' => 1,
'max_age_days' => 1,
'min_intelligence_index' => 1,
'max_intelligence_index' => 1,
'min_coding_index' => 1,
'max_coding_index' => 1,
'min_agentic_index' => 1,
'max_agentic_index' => 1,
'min_tool_success_rate' => 0.5,
'max_tool_success_rate' => 0.5,
'free_only' => false,
'offset' => 1,
'limit' => 500
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.fetchbean.com/v1/openrouter_models"
payload := strings.NewReader("{\n \"q\": \"<string>\",\n \"category\": \"programming\",\n \"supported_parameters\": \"<string>\",\n \"output_modalities\": \"<string>\",\n \"input_modalities\": \"<string>\",\n \"context\": 2,\n \"sort\": \"most-popular\",\n \"min_price\": 1,\n \"max_price\": 1,\n \"arch\": \"<string>\",\n \"model_authors\": \"<string>\",\n \"providers\": \"<string>\",\n \"distillable\": true,\n \"zdr\": true,\n \"region\": \"eu\",\n \"min_output_price\": 1,\n \"max_output_price\": 1,\n \"min_age_days\": 1,\n \"max_age_days\": 1,\n \"min_intelligence_index\": 1,\n \"max_intelligence_index\": 1,\n \"min_coding_index\": 1,\n \"max_coding_index\": 1,\n \"min_agentic_index\": 1,\n \"max_agentic_index\": 1,\n \"min_tool_success_rate\": 0.5,\n \"max_tool_success_rate\": 0.5,\n \"free_only\": false,\n \"offset\": 1,\n \"limit\": 500\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.fetchbean.com/v1/openrouter_models")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"q\": \"<string>\",\n \"category\": \"programming\",\n \"supported_parameters\": \"<string>\",\n \"output_modalities\": \"<string>\",\n \"input_modalities\": \"<string>\",\n \"context\": 2,\n \"sort\": \"most-popular\",\n \"min_price\": 1,\n \"max_price\": 1,\n \"arch\": \"<string>\",\n \"model_authors\": \"<string>\",\n \"providers\": \"<string>\",\n \"distillable\": true,\n \"zdr\": true,\n \"region\": \"eu\",\n \"min_output_price\": 1,\n \"max_output_price\": 1,\n \"min_age_days\": 1,\n \"max_age_days\": 1,\n \"min_intelligence_index\": 1,\n \"max_intelligence_index\": 1,\n \"min_coding_index\": 1,\n \"max_coding_index\": 1,\n \"min_agentic_index\": 1,\n \"max_agentic_index\": 1,\n \"min_tool_success_rate\": 0.5,\n \"max_tool_success_rate\": 0.5,\n \"free_only\": false,\n \"offset\": 1,\n \"limit\": 500\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fetchbean.com/v1/openrouter_models")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"q\": \"<string>\",\n \"category\": \"programming\",\n \"supported_parameters\": \"<string>\",\n \"output_modalities\": \"<string>\",\n \"input_modalities\": \"<string>\",\n \"context\": 2,\n \"sort\": \"most-popular\",\n \"min_price\": 1,\n \"max_price\": 1,\n \"arch\": \"<string>\",\n \"model_authors\": \"<string>\",\n \"providers\": \"<string>\",\n \"distillable\": true,\n \"zdr\": true,\n \"region\": \"eu\",\n \"min_output_price\": 1,\n \"max_output_price\": 1,\n \"min_age_days\": 1,\n \"max_age_days\": 1,\n \"min_intelligence_index\": 1,\n \"max_intelligence_index\": 1,\n \"min_coding_index\": 1,\n \"max_coding_index\": 1,\n \"min_agentic_index\": 1,\n \"max_agentic_index\": 1,\n \"min_tool_success_rate\": 0.5,\n \"max_tool_success_rate\": 0.5,\n \"free_only\": false,\n \"offset\": 1,\n \"limit\": 500\n}"
response = http.request(request)
puts response.read_body{}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"retryable": true,
"billable": true
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"retryable": true,
"billable": true
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"retryable": true,
"billable": true
}
}Authorizations
Your fetchbean API key (fb_…). Keys are not accepted through Authorization.
Headers
A caller-generated key for safely retrying this execution after a network failure. Reusing the same key with the same operation and input returns the original result; reusing it for a different call is rejected.
Body
Search model name or slug.
"programming"Comma-separated parameters such as tools,response_format.
Comma-separated text, image, embeddings, audio, video, rerank, speech or transcription; use all for every model.
Comma-separated text, image, audio or file.
Minimum context length in tokens.
x >= 1"most-popular"Minimum prompt price in USD per million tokens.
x >= 0Maximum prompt price in USD per million tokens.
x >= 0Comma-separated author slugs.
Comma-separated hosting provider names.
Only models with a zero-data-retention endpoint.
"eu"x >= 0x >= 0x >= 0x >= 0x >= 0x >= 0x >= 0x >= 0x >= 0x >= 00 <= x <= 10 <= x <= 1Only exact :free variants and the openrouter/free router.
x >= 01 <= x <= 1000Response
Success
The response is of type object.
Was this page helpful?
curl --request POST \
--url https://api.fetchbean.com/v1/openrouter_models \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"q": "<string>",
"category": "programming",
"supported_parameters": "<string>",
"output_modalities": "<string>",
"input_modalities": "<string>",
"context": 2,
"sort": "most-popular",
"min_price": 1,
"max_price": 1,
"arch": "<string>",
"model_authors": "<string>",
"providers": "<string>",
"distillable": true,
"zdr": true,
"region": "eu",
"min_output_price": 1,
"max_output_price": 1,
"min_age_days": 1,
"max_age_days": 1,
"min_intelligence_index": 1,
"max_intelligence_index": 1,
"min_coding_index": 1,
"max_coding_index": 1,
"min_agentic_index": 1,
"max_agentic_index": 1,
"min_tool_success_rate": 0.5,
"max_tool_success_rate": 0.5,
"free_only": false,
"offset": 1,
"limit": 500
}
'import requests
url = "https://api.fetchbean.com/v1/openrouter_models"
payload = {
"q": "<string>",
"category": "programming",
"supported_parameters": "<string>",
"output_modalities": "<string>",
"input_modalities": "<string>",
"context": 2,
"sort": "most-popular",
"min_price": 1,
"max_price": 1,
"arch": "<string>",
"model_authors": "<string>",
"providers": "<string>",
"distillable": True,
"zdr": True,
"region": "eu",
"min_output_price": 1,
"max_output_price": 1,
"min_age_days": 1,
"max_age_days": 1,
"min_intelligence_index": 1,
"max_intelligence_index": 1,
"min_coding_index": 1,
"max_coding_index": 1,
"min_agentic_index": 1,
"max_agentic_index": 1,
"min_tool_success_rate": 0.5,
"max_tool_success_rate": 0.5,
"free_only": False,
"offset": 1,
"limit": 500
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
q: '<string>',
category: 'programming',
supported_parameters: '<string>',
output_modalities: '<string>',
input_modalities: '<string>',
context: 2,
sort: 'most-popular',
min_price: 1,
max_price: 1,
arch: '<string>',
model_authors: '<string>',
providers: '<string>',
distillable: true,
zdr: true,
region: 'eu',
min_output_price: 1,
max_output_price: 1,
min_age_days: 1,
max_age_days: 1,
min_intelligence_index: 1,
max_intelligence_index: 1,
min_coding_index: 1,
max_coding_index: 1,
min_agentic_index: 1,
max_agentic_index: 1,
min_tool_success_rate: 0.5,
max_tool_success_rate: 0.5,
free_only: false,
offset: 1,
limit: 500
})
};
fetch('https://api.fetchbean.com/v1/openrouter_models', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.fetchbean.com/v1/openrouter_models",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'q' => '<string>',
'category' => 'programming',
'supported_parameters' => '<string>',
'output_modalities' => '<string>',
'input_modalities' => '<string>',
'context' => 2,
'sort' => 'most-popular',
'min_price' => 1,
'max_price' => 1,
'arch' => '<string>',
'model_authors' => '<string>',
'providers' => '<string>',
'distillable' => true,
'zdr' => true,
'region' => 'eu',
'min_output_price' => 1,
'max_output_price' => 1,
'min_age_days' => 1,
'max_age_days' => 1,
'min_intelligence_index' => 1,
'max_intelligence_index' => 1,
'min_coding_index' => 1,
'max_coding_index' => 1,
'min_agentic_index' => 1,
'max_agentic_index' => 1,
'min_tool_success_rate' => 0.5,
'max_tool_success_rate' => 0.5,
'free_only' => false,
'offset' => 1,
'limit' => 500
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.fetchbean.com/v1/openrouter_models"
payload := strings.NewReader("{\n \"q\": \"<string>\",\n \"category\": \"programming\",\n \"supported_parameters\": \"<string>\",\n \"output_modalities\": \"<string>\",\n \"input_modalities\": \"<string>\",\n \"context\": 2,\n \"sort\": \"most-popular\",\n \"min_price\": 1,\n \"max_price\": 1,\n \"arch\": \"<string>\",\n \"model_authors\": \"<string>\",\n \"providers\": \"<string>\",\n \"distillable\": true,\n \"zdr\": true,\n \"region\": \"eu\",\n \"min_output_price\": 1,\n \"max_output_price\": 1,\n \"min_age_days\": 1,\n \"max_age_days\": 1,\n \"min_intelligence_index\": 1,\n \"max_intelligence_index\": 1,\n \"min_coding_index\": 1,\n \"max_coding_index\": 1,\n \"min_agentic_index\": 1,\n \"max_agentic_index\": 1,\n \"min_tool_success_rate\": 0.5,\n \"max_tool_success_rate\": 0.5,\n \"free_only\": false,\n \"offset\": 1,\n \"limit\": 500\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.fetchbean.com/v1/openrouter_models")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"q\": \"<string>\",\n \"category\": \"programming\",\n \"supported_parameters\": \"<string>\",\n \"output_modalities\": \"<string>\",\n \"input_modalities\": \"<string>\",\n \"context\": 2,\n \"sort\": \"most-popular\",\n \"min_price\": 1,\n \"max_price\": 1,\n \"arch\": \"<string>\",\n \"model_authors\": \"<string>\",\n \"providers\": \"<string>\",\n \"distillable\": true,\n \"zdr\": true,\n \"region\": \"eu\",\n \"min_output_price\": 1,\n \"max_output_price\": 1,\n \"min_age_days\": 1,\n \"max_age_days\": 1,\n \"min_intelligence_index\": 1,\n \"max_intelligence_index\": 1,\n \"min_coding_index\": 1,\n \"max_coding_index\": 1,\n \"min_agentic_index\": 1,\n \"max_agentic_index\": 1,\n \"min_tool_success_rate\": 0.5,\n \"max_tool_success_rate\": 0.5,\n \"free_only\": false,\n \"offset\": 1,\n \"limit\": 500\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fetchbean.com/v1/openrouter_models")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"q\": \"<string>\",\n \"category\": \"programming\",\n \"supported_parameters\": \"<string>\",\n \"output_modalities\": \"<string>\",\n \"input_modalities\": \"<string>\",\n \"context\": 2,\n \"sort\": \"most-popular\",\n \"min_price\": 1,\n \"max_price\": 1,\n \"arch\": \"<string>\",\n \"model_authors\": \"<string>\",\n \"providers\": \"<string>\",\n \"distillable\": true,\n \"zdr\": true,\n \"region\": \"eu\",\n \"min_output_price\": 1,\n \"max_output_price\": 1,\n \"min_age_days\": 1,\n \"max_age_days\": 1,\n \"min_intelligence_index\": 1,\n \"max_intelligence_index\": 1,\n \"min_coding_index\": 1,\n \"max_coding_index\": 1,\n \"min_agentic_index\": 1,\n \"max_agentic_index\": 1,\n \"min_tool_success_rate\": 0.5,\n \"max_tool_success_rate\": 0.5,\n \"free_only\": false,\n \"offset\": 1,\n \"limit\": 500\n}"
response = http.request(request)
puts response.read_body{}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"retryable": true,
"billable": true
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"retryable": true,
"billable": true
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"retryable": true,
"billable": true
}
}
