Models & Routing
GET /api/gate/v1/models
List Models
List all available models across all providers, sorted by usage.
Models are dynamically fetched from provider APIs and cached. Usage data (tokens, requests) comes from the last 30 days.
Filters:
provider: Filter by provider namefree_only: Only free tier modelsconfigured_only: Only models configured in SpiderGate routingsearch: Search by model name or IDsort_by: Sort order (usage, name, provider, context, cost)capability: Filter by capability (chat, vision, function_calling)
SpiderGate Extensions: Each model includes spidergate_info with provider details, pricing, capabilities, configuration status, task aliases, and 30-day usage stats.
Parameters
provider(query, any, optional) — Filter by providerfree_only(query, boolean, optional) — Only show free tier modelsconfigured_only(query, boolean, optional) — Only show configured modelssearch(query, any, optional) — Search model name or IDsort_by(query, string, optional) — Sort: usage, name, provider, context, costcapability(query, any, optional) — Filter by capabilitylimit(query, integer, optional) — Max resultsoffset(query, integer, optional) — Offset for pagination
curl -X GET 'https://spideriq.ai/api/gate/v1/models' \
-H 'Authorization: Bearer <token>'import httpx
resp = httpx.get(
"https://spideriq.ai/api/gate/v1/models",
headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())const resp = await fetch("https://spideriq.ai/api/gate/v1/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/models", nil)
req.Header.Set("Authorization", "Bearer <token>")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
}Responses
200— Successful Response422— Validation Error
GET /api/gate/v1/models/{model_id}
Get Model
Get details for a specific model.
Parameters
model_id(path, string, required)
curl -X GET 'https://spideriq.ai/api/gate/v1/models/{model_id}' \
-H 'Authorization: Bearer <token>'import httpx
resp = httpx.get(
"https://spideriq.ai/api/gate/v1/models/{model_id}",
headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())const resp = await fetch("https://spideriq.ai/api/gate/v1/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/models/{model_id}", nil)
req.Header.Set("Authorization", "Bearer <token>")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
}Responses
200— Successful Response404— Model not found422— Validation Error
GET /api/gate/v1/aliases
List Task Aliases
List all SpiderGate task aliases with their model chains and usage.
Task aliases like spideriq/coding or spideriq/extraction route to an ordered fallback chain of models. This endpoint shows which models each alias uses and 30-day usage statistics.
curl -X GET 'https://spideriq.ai/api/gate/v1/aliases' \
-H 'Authorization: Bearer <token>'import httpx
resp = httpx.get(
"https://spideriq.ai/api/gate/v1/aliases",
headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())const resp = await fetch("https://spideriq.ai/api/gate/v1/aliases", {
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/aliases", nil)
req.Header.Set("Authorization", "Bearer <token>")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
}Responses
200— Successful Response
GET /api/gate/v1/providers
List Providers
List all available providers, model counts, and key status.
curl -X GET 'https://spideriq.ai/api/gate/v1/providers' \
-H 'Authorization: Bearer <token>'import httpx
resp = httpx.get(
"https://spideriq.ai/api/gate/v1/providers",
headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())const resp = await fetch("https://spideriq.ai/api/gate/v1/providers", {
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/providers", nil)
req.Header.Set("Authorization", "Bearer <token>")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
}Responses
200— Successful Response
GET /api/gate/v1/health
Health Check
Check if the SpiderGate API is operational.
curl -X GET 'https://spideriq.ai/api/gate/v1/health' \
-H 'Authorization: Bearer <token>'import httpx
resp = httpx.get(
"https://spideriq.ai/api/gate/v1/health",
headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())const resp = await fetch("https://spideriq.ai/api/gate/v1/health", {
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/health", nil)
req.Header.Set("Authorization", "Bearer <token>")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
}Responses
200— Successful Response