STOP WASTING PAID TOKENS. START POOLING ACCOUNTS TODAY. [ GET YOUR VAULT ]

Model Catalog

GET /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=<key> (with sort=score) to rank models by their within-category percentile from the taxonomy scorer instead — e.g. ?category=coding&sort=score. Each entry carries score (percentile), rank, and the response total (rank/N), plus the contributing components. category takes precedence over task_type. List valid keys at /catalog/categories.

Parameters

  • task_type (query, any, optional) — Rank for this task type (omit = global)

  • category (query, any, optional) — Per-category leaderboard by taxonomy key (e.g. coding). Ranks by within-category percentile; takes precedence over task_type.

  • sort (query, string, optional) — Sort for the per-category leaderboard (only score is supported — within-category percentile, best first).

  • limit (query, integer, optional) — Max models to return

curl -X GET 'https://spideriq.ai/api/gate/v1/catalog/leaderboard' \
  -H 'Authorization: Bearer <token>'
import httpx

resp = httpx.get(
    "https://spideriq.ai/api/gate/v1/catalog/leaderboard",
    headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())
const resp = await fetch("https://spideriq.ai/api/gate/v1/catalog/leaderboard", {
  method: "GET",
  headers: { "Authorization": "Bearer <token>" }
});
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 <token>")
	resp, _ := http.DefaultClient.Do(req)
	defer resp.Body.Close()
}

Responses

  • 200 — Successful Response

  • 422 — Validation Error

GET /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=<key> for the per-category ranking and the category_scores[] section on each model record.

Parameters

  • include_inactive (query, boolean, optional) — Include inactive (unpublished) categories

curl -X GET 'https://spideriq.ai/api/gate/v1/catalog/categories' \
  -H 'Authorization: Bearer <token>'
import httpx

resp = httpx.get(
    "https://spideriq.ai/api/gate/v1/catalog/categories",
    headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())
const resp = await fetch("https://spideriq.ai/api/gate/v1/catalog/categories", {
  method: "GET",
  headers: { "Authorization": "Bearer <token>" }
});
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 <token>")
	resp, _ := http.DefaultClient.Do(req)
	defer resp.Body.Close()
}

Responses

  • 200 — Successful Response

  • 422 — Validation Error

GET /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.

Parameters

  • provider (query, any, optional) — Filter by provider

  • search (query, any, optional) — Search id / display name

  • tag (query, any, optional) — Filter by authored tag

  • fields (query, any, optional) — CSV projection, e.g. capabilities,pricing,per_provider,evals

  • configured_only (query, boolean, optional) — Only routable (configured) models

  • free_only (query, boolean, optional) — Only free-tier models

  • servable_only (query, boolean, optional) — Only models callable right now via the direct-pin path (provider has a healthy pooled key). Pair with the top-level spidergate_id to pin an exactly-servable model.

  • include_hidden (query, boolean, optional) — Include models hidden from the public catalog

  • limit (query, integer, optional) — Max results

  • offset (query, integer, optional) — Pagination offset

curl -X GET 'https://spideriq.ai/api/gate/v1/catalog/models' \
  -H 'Authorization: Bearer <token>'
import httpx

resp = httpx.get(
    "https://spideriq.ai/api/gate/v1/catalog/models",
    headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())
const resp = await fetch("https://spideriq.ai/api/gate/v1/catalog/models", {
  method: "GET",
  headers: { "Authorization": "Bearer <token>" }
});
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 <token>")
	resp, _ := http.DefaultClient.Do(req)
	defer resp.Body.Close()
}

Responses

  • 200 — Successful Response

  • 422 — Validation Error

GET /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.

Parameters

  • model_id (path, string, required)

  • task_type (query, any, optional) — Scope to this task type

curl -X GET 'https://spideriq.ai/api/gate/v1/catalog/models/{model_id}/evals' \
  -H 'Authorization: Bearer <token>'
import httpx

resp = httpx.get(
    "https://spideriq.ai/api/gate/v1/catalog/models/{model_id}/evals",
    headers={"Authorization": "Bearer <token>"},
)
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 <token>" }
});
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 <token>")
	resp, _ := http.DefaultClient.Do(req)
	defer resp.Body.Close()
}

Responses

  • 200 — Successful Response

  • 422 — Validation Error

GET /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.

Parameters

  • model_id (path, string, required)

curl -X GET 'https://spideriq.ai/api/gate/v1/catalog/models/{model_id}' \
  -H 'Authorization: Bearer <token>'
import httpx

resp = httpx.get(
    "https://spideriq.ai/api/gate/v1/catalog/models/{model_id}",
    headers={"Authorization": "Bearer <token>"},
)
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 <token>" }
});
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 <token>")
	resp, _ := http.DefaultClient.Do(req)
	defer resp.Body.Close()
}

Responses

  • 200 — Successful Response

  • 422 — Validation Error