Model Catalog
/api/gate/v1/catalog/leaderboard
Model Leaderboard
Public model×task-type leaderboard. Visible curated models ranked by authored sort order, then by the auto-eval success rate for the requested task_type (the shared prior), with a headline benchmark and the cheapest live blended price across providers.
No brand data, no prompts — public tier. Pass task_type to rank for a specific task (e.g. coding, planning); omit it for the global ranking.
Per-category leaderboard (CT.3): pass category=
task_type
any
query
category
any
query
sort
string
query
limit
integer
query
200Successful Response422Validation Error
curl -X GET 'https://spideriq.ai/api/gate/v1/catalog/leaderboard' \
-H 'Authorization: Bearer '
import httpx
resp = httpx.get(
"https://spideriq.ai/api/gate/v1/catalog/leaderboard",
headers={"Authorization": "Bearer "},
)
resp.raise_for_status()
print(resp.json())
const resp = await fetch("https://spideriq.ai/api/gate/v1/catalog/leaderboard", {
method: "GET",
headers: { "Authorization": "Bearer " }
});
const data = await resp.json();
console.log(data);
package main
import (
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://spideriq.ai/api/gate/v1/catalog/leaderboard", nil)
req.Header.Set("Authorization", "Bearer ")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
}
/api/gate/v1/catalog/categories
Category Taxonomy
The model-capability category taxonomy (Coding, Reasoning, Math, Vision, …) that backs the per-category score bars and DB-driven chips. Each category carries its label, emoji, description, and a live scored_model_count (models with a computed score). is_active=false categories are hidden unless include_inactive=true.
Read-only; not metered. Pair with /catalog/leaderboard?category=
include_inactive
boolean
query
200Successful Response422Validation Error
curl -X GET 'https://spideriq.ai/api/gate/v1/catalog/categories' \
-H 'Authorization: Bearer '
import httpx
resp = httpx.get(
"https://spideriq.ai/api/gate/v1/catalog/categories",
headers={"Authorization": "Bearer "},
)
resp.raise_for_status()
print(resp.json())
const resp = await fetch("https://spideriq.ai/api/gate/v1/catalog/categories", {
method: "GET",
headers: { "Authorization": "Bearer " }
});
const data = await resp.json();
console.log(data);
package main
import (
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://spideriq.ai/api/gate/v1/catalog/categories", nil)
req.Header.Set("Authorization", "Bearer ")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
}
/api/gate/v1/catalog/models
Enriched Model Catalog
Enriched, client-facing model catalog. Each model returns identity + spec + authored editorial (description/tags/badges) plus — by default — its benchmarks, per-provider price/latency snapshot, reference links, and evals aggregate, every sourced row carrying provenance. One-pull concrete-model selection (OPVS Planner): pass fields= to narrow the payload to just the sections you need and skip the rest, e.g. fields=capabilities,pricing,per_provider,evals. Recognised sections: capabilities, context, max_output, pricing, tier, descriptions, tags, aliases, per_provider, benchmarks, links, evals. Unknown tokens are ignored. Servability (SM.3): every model carries a servable boolean — true when it's callable right now via the direct-pin path (its provider has a healthy pooled key; codex/* excluded). Pin a servable model by its top-level spidergate_id. Pass servable_only=true to return only callable models. Read-only; not metered.
provider
any
query
search
any
query
tag
any
query
fields
any
query
configured_only
boolean
query
free_only
boolean
query
servable_only
boolean
query
include_hidden
boolean
query
limit
integer
query
offset
integer
query
200Successful Response422Validation Error
curl -X GET 'https://spideriq.ai/api/gate/v1/catalog/models' \
-H 'Authorization: Bearer '
import httpx
resp = httpx.get(
"https://spideriq.ai/api/gate/v1/catalog/models",
headers={"Authorization": "Bearer "},
)
resp.raise_for_status()
print(resp.json())
const resp = await fetch("https://spideriq.ai/api/gate/v1/catalog/models", {
method: "GET",
headers: { "Authorization": "Bearer " }
});
const data = await resp.json();
console.log(data);
package main
import (
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://spideriq.ai/api/gate/v1/catalog/models", nil)
req.Header.Set("Authorization", "Bearer ")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
}
/api/gate/v1/catalog/models/{model_id}/evals
Model Evals Aggregate
The #7 evals aggregate for one model — the shared prior the OPVS Planner blends against its private posterior. Returns the machine-eval (auto) rollup(s) plus human star ratings, keyed on the SERVED model (G1). Pass task_type to scope to one task; omit for all task types plus the global (task_type=null) row.
model_id
string
path
required
task_type
any
query
200Successful Response422Validation Error
curl -X GET 'https://spideriq.ai/api/gate/v1/catalog/models/{model_id}/evals' \
-H 'Authorization: Bearer '
import httpx
resp = httpx.get(
"https://spideriq.ai/api/gate/v1/catalog/models/{model_id}/evals",
headers={"Authorization": "Bearer "},
)
resp.raise_for_status()
print(resp.json())
const resp = await fetch("https://spideriq.ai/api/gate/v1/catalog/models/{model_id}/evals", {
method: "GET",
headers: { "Authorization": "Bearer " }
});
const data = await resp.json();
console.log(data);
package main
import (
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://spideriq.ai/api/gate/v1/catalog/models/{model_id}/evals", nil)
req.Header.Set("Authorization", "Bearer ")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
}
/api/gate/v1/catalog/models/{model_id}
Get Enriched Model Record
Full enriched record for one model by its catalog id (spidergate_id or raw provider/model): spec + authored copy + benchmarks + per-provider pricing + links + evals aggregate, with provenance.
model_id
string
path
required
200Successful Response422Validation Error
curl -X GET 'https://spideriq.ai/api/gate/v1/catalog/models/{model_id}' \
-H 'Authorization: Bearer '
import httpx
resp = httpx.get(
"https://spideriq.ai/api/gate/v1/catalog/models/{model_id}",
headers={"Authorization": "Bearer "},
)
resp.raise_for_status()
print(resp.json())
const resp = await fetch("https://spideriq.ai/api/gate/v1/catalog/models/{model_id}", {
method: "GET",
headers: { "Authorization": "Bearer " }
});
const data = await resp.json();
console.log(data);
package main
import (
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://spideriq.ai/api/gate/v1/catalog/models/{model_id}", nil)
req.Header.Set("Authorization", "Bearer ")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
}