Models
curl --request GET \
--url https://api.compose.market/v1/models \
--header 'Content-Type: application/json' \
--data '
{
"q": "<string>",
"provider": "<string>",
"modality": "<string>",
"operation": "<string>",
"limit": 123,
"cursor": "<string>"
}
'import requests
url = "https://api.compose.market/v1/models"
payload = {
"q": "<string>",
"provider": "<string>",
"modality": "<string>",
"operation": "<string>",
"limit": 123,
"cursor": "<string>"
}
headers = {"Content-Type": "application/json"}
response = requests.get(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
q: '<string>',
provider: '<string>',
modality: '<string>',
operation: '<string>',
limit: 123,
cursor: '<string>'
})
};
fetch('https://api.compose.market/v1/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.compose.market/v1/models",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_POSTFIELDS => json_encode([
'q' => '<string>',
'provider' => '<string>',
'modality' => '<string>',
'operation' => '<string>',
'limit' => 123,
'cursor' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$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.compose.market/v1/models"
payload := strings.NewReader("{\n \"q\": \"<string>\",\n \"provider\": \"<string>\",\n \"modality\": \"<string>\",\n \"operation\": \"<string>\",\n \"limit\": 123,\n \"cursor\": \"<string>\"\n}")
req, _ := http.NewRequest("GET", url, payload)
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.get("https://api.compose.market/v1/models")
.header("Content-Type", "application/json")
.body("{\n \"q\": \"<string>\",\n \"provider\": \"<string>\",\n \"modality\": \"<string>\",\n \"operation\": \"<string>\",\n \"limit\": 123,\n \"cursor\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.compose.market/v1/models")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"q\": \"<string>\",\n \"provider\": \"<string>\",\n \"modality\": \"<string>\",\n \"operation\": \"<string>\",\n \"limit\": 123,\n \"cursor\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"object": "list",
"data": [
{
"modelId": "gpt-5.5",
"provider": "azure",
"name": "gpt-5.5"
}
],
"total": 1,
"next_cursor": null
}
Inference
Models
List, retrieve, search, and price the generated model catalog.
GET
/
v1
/
models
Models
curl --request GET \
--url https://api.compose.market/v1/models \
--header 'Content-Type: application/json' \
--data '
{
"q": "<string>",
"provider": "<string>",
"modality": "<string>",
"operation": "<string>",
"limit": 123,
"cursor": "<string>"
}
'import requests
url = "https://api.compose.market/v1/models"
payload = {
"q": "<string>",
"provider": "<string>",
"modality": "<string>",
"operation": "<string>",
"limit": 123,
"cursor": "<string>"
}
headers = {"Content-Type": "application/json"}
response = requests.get(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
q: '<string>',
provider: '<string>',
modality: '<string>',
operation: '<string>',
limit: 123,
cursor: '<string>'
})
};
fetch('https://api.compose.market/v1/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.compose.market/v1/models",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_POSTFIELDS => json_encode([
'q' => '<string>',
'provider' => '<string>',
'modality' => '<string>',
'operation' => '<string>',
'limit' => 123,
'cursor' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$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.compose.market/v1/models"
payload := strings.NewReader("{\n \"q\": \"<string>\",\n \"provider\": \"<string>\",\n \"modality\": \"<string>\",\n \"operation\": \"<string>\",\n \"limit\": 123,\n \"cursor\": \"<string>\"\n}")
req, _ := http.NewRequest("GET", url, payload)
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.get("https://api.compose.market/v1/models")
.header("Content-Type", "application/json")
.body("{\n \"q\": \"<string>\",\n \"provider\": \"<string>\",\n \"modality\": \"<string>\",\n \"operation\": \"<string>\",\n \"limit\": 123,\n \"cursor\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.compose.market/v1/models")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"q\": \"<string>\",\n \"provider\": \"<string>\",\n \"modality\": \"<string>\",\n \"operation\": \"<string>\",\n \"limit\": 123,\n \"cursor\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"object": "list",
"data": [
{
"modelId": "gpt-5.5",
"provider": "azure",
"name": "gpt-5.5"
}
],
"total": 1,
"next_cursor": null
}
Model routes use public catalog IDs. Duplicate upstream model names are resolved by the generated catalog, so callers send the public ID shown by these endpoints.
Routes
| Method | Path | Auth | Description |
|---|---|---|---|
GET | /v1/models | None | Native generated model catalog. |
GET | /v1/models/all | None | Extended catalog when bundled. |
GET | /v1/models/{model} | None | One native model card. |
GET | /v1/models/{model}/params | None | Optional parameter metadata for one model. |
POST | /v1/models/search | None | Search and filter native model cards. |
GET | /api/models | None | Public catalog proxy backed by the models service. |
GET | /api/pricing | None | Compact pricing table from the bundled inference catalog. |
Search body
string
Search text matched against model metadata.
string
Provider slug. Invalid providers return
400.string
Canonical modality such as
text, image, audio, video, or embedding.string
Canonical operation for the selected modality.
number
Maximum models to return.
string
Cursor returned by the previous search page.
Response
string
list for list and search routes.array
Model cards from the generated catalog.
string
Search cursor when more results are available.
{
"object": "list",
"data": [
{
"modelId": "gpt-5.5",
"provider": "azure",
"name": "gpt-5.5"
}
],
"total": 1,
"next_cursor": null
}
⌘I