Model Management
Discover and query available AI models and their capabilities across all providers.
List Models
Returns the complete list of currently enabled AI models with their capabilities and limits.
Endpoint: https://apis.threatwinds.com/api/ai/v1/models
Method: GET
Parameters
Headers
| Header | Type | Required | Description |
|---|---|---|---|
| Authorization | string | Optional* | Bearer token for session authentication |
| api-key | string | Optional* | API key for key-based authentication |
| api-secret | string | Optional* | API secret for key-based authentication |
Note: You must use either Authorization header OR API key/secret combination.
Request
curl -X 'GET' \
'https://apis.threatwinds.com/api/ai/v1/models' \
-H 'accept: application/json' \
-H 'Authorization: Bearer <YOUR_BEARER_TOKEN>'
Response
Success Response (200 OK)
{
"object": "list",
"data": [
{
"id": "silas-1.6",
"object": "model",
"name": "Silas 1.6",
"provider": "threatwinds",
"owned_by": "ThreatWinds",
"created": 2026,
"capabilities": [
"chat",
"image",
"video",
"tools-use",
"text-generation",
"code-generation",
"reasoning"
],
"limits": {
"max_input_tokens": 868928,
"max_total_tokens": 1000000
},
"params": {
"temperature": 0.6,
"temperature_min": 0.0,
"temperature_max": 1.0,
"top_p": 0.95,
"top_k": 20,
"min_p": 0.0,
"presence_penalty": 0.0,
"frequency_penalty": 0.0,
"repetition_penalty": 1.0,
"max_completion_tokens": 131072
}
}
]
}
Response Schema
| Field | Type | Description |
|---|---|---|
| object | string | Response type, always “list” |
| data | array | Array of model objects |
| data[].id | string | Unique model identifier |
| data[].name | string | Human-readable model name |
| data[].provider | string | Provider ID: threatwinds for all self-hosted models (chat, embeddings, audio); openai, claude, or gemini for third-party models |
| data[].owned_by | string | Organization or developer |
| data[].created | integer | Year of release |
| data[].capabilities | array | Supported features |
| data[].limits | object | Token constraints |
| limits.max_input_tokens | integer | Maximum input context size |
| limits.max_total_tokens | integer | Combined input+output limit |
| data[].embeddings | object | Embedding model configuration (embedding models only). Contains default_dimensions, min_dimensions, max_dimensions |
| params | object | Model parameters and validation ranges (optional) |
Capability Values
| Value | Description |
|---|---|
| chat | Conversational text interaction |
| text-generation | General-purpose text generation |
| code-generation | Programming code creation and completion |
| tools-use | Function calling capability |
| reasoning | Step-by-step reasoning support |
| image | Vision/image understanding |
| video | Video understanding |
| transcription | Speech-to-text |
| speech | Text-to-speech synthesis |
| embeddings | Vector embedding generation |
| vision-embeddings | Multimodal embeddings |
Note: Additional capability values may include
audio,audio-generation,image-generation,video-generation.
Error Codes
| Status Code | Description | Cause |
|---|---|---|
| 200 | OK | Success |
| 400 | Bad Request | Invalid parameters |
| 401 | Unauthorized | Missing/invalid credentials |
| 403 | Forbidden | Insufficient permissions |
Get Model Details
Retrieve detailed information about a specific model by ID.
Endpoint: https://apis.threatwinds.com/api/ai/v1/models/{id}
Method: GET
Path Parameters
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
| id | string | Yes | Model identifier | silas-1.6 |
Request
curl -X 'GET' \
'https://apis.threatwinds.com/api/ai/v1/models/silas-1.7-pro' \
-H 'Authorization: Bearer <YOUR_BEARER_TOKEN>'
Response
{
"id": "silas-1.7-pro",
"object": "model",
"name": "Silas 1.7 Pro",
"provider": "threatwinds",
"owned_by": "ThreatWinds",
"created": 2026,
"capabilities": ["chat", "image", "video", "tools-use", "text-generation", "code-generation", "reasoning"],
"limits": {
"max_input_tokens": 868928,
"max_total_tokens": 1000000
},
"params": {
"temperature": 1.0,
"top_p": 0.95,
"top_k": 20,
"min_p": 0.0,
"presence_penalty": 0.0,
"frequency_penalty": 0.0,
"repetition_penalty": 1.0,
"max_completion_tokens": 131072
}
}
Error Codes
| Status Code | Description | Cause |
|---|---|---|
| 200 | OK | Model details returned successfully |
| 404 | Not Found | The specified model ID does not exist in any provider configuration |
Filtering Models Programmatically
Use jq or similar tools to filter the /models response for your needs.
Filter by Provider
Get all models from a specific provider:
# Self-hosted ThreatWinds models
curl -s 'https://apis.threatwinds.com/api/ai/v1/models' \
-H 'Authorization: Bearer <YOUR_BEARER_TOKEN>' | \
jq '.data[] | select(.provider == "threatwinds")'
# OpenAI models
curl -s 'https://apis.threatwinds.com/api/ai/v1/models' \
-H 'Authorization: Bearer <YOUR_BEARER_TOKEN>' | \
jq '.data[] | select(.provider == "openai")'
Filter by Capability
Find models supporting specific features:
# Models with vision/image capability
curl -s 'https://apis.threatwinds.com/api/ai/v1/models' \
-H 'Authorization: Bearer <YOUR_BEARER_TOKEN>' | \
jq '.data[] | select(.capabilities | contains(["image"]))'
# Models supporting tool calls
curl -s 'https://apis.threatwinds.com/api/ai/v1/models' \
-H 'Authorization: Bearer <YOUR_BEARER_TOKEN>' | \
jq '.data[] | select(.capabilities | contains(["tools-use"]))'
# Embedding models only
curl -s 'https://apis.threatwinds.com/api/ai/v1/models' \
-H 'Authorization: Bearer <YOUR_BEARER_TOKEN>' | \
jq '.data[] | select(.capabilities | contains(["embeddings"]))'
# Audio transcription models
curl -s 'https://apis.threatwinds.com/api/ai/v1/models' \
-H 'Authorization: Bearer <YOUR_BEARER_TOKEN>' | \
jq '.data[] | select(.capabilities | contains(["transcription"]))'
Filter by Context Window
Models with large context windows:
# Models with > 100K input tokens
curl -s 'https://apis.threatwinds.com/api/ai/v1/models' \
-H 'Authorization: Bearer <YOUR_BEARER_TOKEN>' | \
jq '.data[] | select(.limits.max_input_tokens > 100000)'
# Sort by context size (largest first)
curl -s 'https://apis.threatwinds.com/api/ai/v1/models' \
-H 'Authorization: Bearer <YOUR_BEARER_TOKEN>' | \
jq '.data | sort_by(-.limits.max_input_tokens) | .[0:5]'
Extract Useful Fields
Create clean lists for UI or CLI usage:
# Just model IDs
curl -s 'https://apis.threatwinds.com/api/ai/v1/models' \
-H 'Authorization: Bearer <YOUR_BEARER_TOKEN>' | \
jq -r '.data[].id'
# Display name and provider
curl -s 'https://apis.threatwinds.com/api/ai/v1/models' \
-H 'Authorization: Bearer <YOUR_BEARER_TOKEN>' | \
jq -r '.data[] | "\(.name) (\(.provider))"'
# Chat-capable models with context info
curl -s 'https://apis.threatwinds.com/api/ai/v1/models' \
-H 'Authorization: Bearer <YOUR_BEARER_TOKEN>' | \
jq -r '.data[] | select(.capabilities | contains(["chat"])) | "\(.id): \(.limits.max_input_tokens) tokens"'
Model Discovery Best Practices
-
Query at Runtime: Call
/modelsduring application initialization to get current catalog -
Cache Appropriately: Cache model listings but refresh periodically as providers add/deprecate models
-
Check Capabilities First: Always verify
.capabilitiesarray before using a model for specific tasks -
Respect Token Limits: Read
.limitsto ensure your use case fits within model constraints -
Handle Unknown Errors: Some providers may have temporary outages; implement retry logic
-
Provider-Specific Behavior: Check
paramsfor valid parameter ranges (e.g., temperature bounds)
Provider Overview
| Provider | Type | Models |
|---|---|---|
| threatwinds | Self-hosted | Silas chat (silas-1.6, silas-1.6-pro, silas-1.7-pro), text/vision embeddings (qwen3-embedding-8b, qwen3-vl-embedding-8b), and audio (whisper-large-v3, kokoro-82m). Use the owned_by field to identify the original model maintainer. |
| openai | External API | GPT-6 ladder: gpt-6-astra, gpt-6.1-sol, gpt-6-luna, plus the legacy aliases gpt-5-nano and gpt-5.4-nano (both route to gpt-6-luna). |
| claude | External API | Claude 5 series: claude-opus-5, claude-sonnet-5, claude-fable-5, claude-fable-5-1. |
| gemini | External API | gemini-3.1-pro, gemini-3.8-flash, gemini-3.5-flash-lite, and the embedding model gemini-embedding-2. |
Note: The active model set varies based on deployment configuration. Always check
/modelsfor real-time availability.