Detailed changes
@@ -112,7 +112,7 @@ func main() {
ID: catwalk.InferenceProviderHuggingFace,
APIKey: "$HF_TOKEN",
APIEndpoint: "https://router.huggingface.co/v1",
- Type: catwalk.TypeOpenAI,
+ Type: catwalk.TypeOpenAICompat,
DefaultLargeModelID: "moonshotai/Kimi-K2-Instruct-0905:groq",
DefaultSmallModelID: "openai/gpt-oss-20b",
Models: []catwalk.Model{},
@@ -244,7 +244,7 @@ func main() {
ID: "openrouter",
APIKey: "$OPENROUTER_API_KEY",
APIEndpoint: "https://openrouter.ai/api/v1",
- Type: catwalk.TypeOpenAI,
+ Type: catwalk.TypeOpenRouter,
DefaultLargeModelID: "anthropic/claude-sonnet-4",
DefaultSmallModelID: "anthropic/claude-3.5-haiku",
Models: []catwalk.Model{},
@@ -255,6 +255,9 @@ func main() {
}
for _, model := range modelsResp.Data {
+ if model.ContextLength < 20000 {
+ continue
+ }
// skip nonβtext models or those without tools
if !slices.Contains(model.SupportedParams, "tools") ||
!slices.Contains(model.Architecture.InputModalities, "text") ||
@@ -271,17 +274,24 @@ func main() {
canReason := slices.Contains(model.SupportedParams, "reasoning")
supportsImages := slices.Contains(model.Architecture.InputModalities, "image")
+ var reasoningLevels []string
+ var defaultReasoning string
+ if canReason {
+ reasoningLevels = []string{"low", "medium", "high"}
+ defaultReasoning = "medium"
+ }
m := catwalk.Model{
- ID: model.ID,
- Name: model.Name,
- CostPer1MIn: pricing.CostPer1MIn,
- CostPer1MOut: pricing.CostPer1MOut,
- CostPer1MInCached: pricing.CostPer1MInCached,
- CostPer1MOutCached: pricing.CostPer1MOutCached,
- ContextWindow: model.ContextLength,
- CanReason: canReason,
- HasReasoningEffort: canReason,
- SupportsImages: supportsImages,
+ ID: model.ID,
+ Name: model.Name,
+ CostPer1MIn: pricing.CostPer1MIn,
+ CostPer1MOut: pricing.CostPer1MOut,
+ CostPer1MInCached: pricing.CostPer1MInCached,
+ CostPer1MOutCached: pricing.CostPer1MOutCached,
+ ContextWindow: model.ContextLength,
+ CanReason: canReason,
+ DefaultReasoningEffort: defaultReasoning,
+ ReasoningLevels: reasoningLevels,
+ SupportsImages: supportsImages,
}
if model.TopProvider.MaxCompletionTokens != nil {
m.DefaultMaxTokens = *model.TopProvider.MaxCompletionTokens / 2
@@ -334,17 +344,24 @@ func main() {
canReason := slices.Contains(bestEndpoint.SupportedParams, "reasoning")
supportsImages := slices.Contains(model.Architecture.InputModalities, "image")
+ var reasoningLevels []string
+ var defaultReasoning string
+ if canReason {
+ reasoningLevels = []string{"low", "medium", "high"}
+ defaultReasoning = "medium"
+ }
m := catwalk.Model{
- ID: model.ID,
- Name: model.Name,
- CostPer1MIn: pricing.CostPer1MIn,
- CostPer1MOut: pricing.CostPer1MOut,
- CostPer1MInCached: pricing.CostPer1MInCached,
- CostPer1MOutCached: pricing.CostPer1MOutCached,
- ContextWindow: bestEndpoint.ContextLength,
- CanReason: canReason,
- HasReasoningEffort: canReason,
- SupportsImages: supportsImages,
+ ID: model.ID,
+ Name: model.Name,
+ CostPer1MIn: pricing.CostPer1MIn,
+ CostPer1MOut: pricing.CostPer1MOut,
+ CostPer1MInCached: pricing.CostPer1MInCached,
+ CostPer1MOutCached: pricing.CostPer1MOutCached,
+ ContextWindow: bestEndpoint.ContextLength,
+ CanReason: canReason,
+ DefaultReasoningEffort: defaultReasoning,
+ ReasoningLevels: reasoningLevels,
+ SupportsImages: supportsImages,
}
// Set max tokens based on the best endpoint
@@ -0,0 +1,3 @@
+# Deprecated
+
+This version of the config is deprecated, if you want to add a provider or update a provider do that in /internal/providers.
@@ -0,0 +1,153 @@
+{
+ "name": "AIHubMix",
+ "id": "aihubmix",
+ "api_key": "$AIHUBMIX_API_KEY",
+ "api_endpoint": "https://aihubmix.com/v1",
+ "type": "openai",
+ "default_large_model_id": "claude-sonnet-4-5",
+ "default_small_model_id": "claude-3-5-haiku",
+ "default_headers": {
+ "APP-Code": "IUFF7106"
+ },
+ "models": [
+ {
+ "id": "claude-sonnet-4-5",
+ "name": "Claude Sonnet 4.5",
+ "cost_per_1m_in": 3,
+ "cost_per_1m_out": 15,
+ "cost_per_1m_in_cached": 3.75,
+ "cost_per_1m_out_cached": 0.3,
+ "context_window": 200000,
+ "default_max_tokens": 50000,
+ "can_reason": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "claude-opus-4-1",
+ "name": "Claude Opus 4.1",
+ "cost_per_1m_in": 15,
+ "cost_per_1m_out": 75,
+ "cost_per_1m_in_cached": 18.75,
+ "cost_per_1m_out_cached": 1.5,
+ "context_window": 200000,
+ "default_max_tokens": 32000,
+ "can_reason": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "claude-3-5-haiku",
+ "name": "Claude 3.5 Haiku",
+ "cost_per_1m_in": 0.7999999999999999,
+ "cost_per_1m_out": 4,
+ "cost_per_1m_in_cached": 1,
+ "cost_per_1m_out_cached": 0.08,
+ "context_window": 200000,
+ "default_max_tokens": 5000,
+ "can_reason": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "gemini-2.5-pro",
+ "name": "Gemini 2.5 Pro",
+ "cost_per_1m_in": 1.25,
+ "cost_per_1m_out": 10,
+ "cost_per_1m_in_cached": 1.625,
+ "cost_per_1m_out_cached": 0.31,
+ "context_window": 1048576,
+ "default_max_tokens": 50000,
+ "can_reason": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "gemini-2.5-flash",
+ "name": "Gemini 2.5 Flash",
+ "cost_per_1m_in": 0.3,
+ "cost_per_1m_out": 2.5,
+ "cost_per_1m_in_cached": 0.3833,
+ "cost_per_1m_out_cached": 0.075,
+ "context_window": 1048576,
+ "default_max_tokens": 50000,
+ "can_reason": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "gpt-5",
+ "name": "GPT-5",
+ "cost_per_1m_in": 1.25,
+ "cost_per_1m_out": 10,
+ "cost_per_1m_in_cached": 0.25,
+ "cost_per_1m_out_cached": 0.25,
+ "context_window": 400000,
+ "default_max_tokens": 128000,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "default_reasoning_effort": "minimal",
+ "supports_attachments": true
+ },
+ {
+ "id": "gpt-5-mini",
+ "name": "GPT-5 Mini",
+ "cost_per_1m_in": 0.25,
+ "cost_per_1m_out": 2,
+ "cost_per_1m_in_cached": 0.025,
+ "cost_per_1m_out_cached": 0.025,
+ "context_window": 400000,
+ "default_max_tokens": 128000,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "default_reasoning_effort": "low",
+ "supports_attachments": true
+ },
+ {
+ "id": "gpt-5-nano",
+ "name": "GPT-5 Nano",
+ "cost_per_1m_in": 0.05,
+ "cost_per_1m_out": 0.4,
+ "cost_per_1m_in_cached": 0.005,
+ "cost_per_1m_out_cached": 0.005,
+ "context_window": 400000,
+ "default_max_tokens": 128000,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "default_reasoning_effort": "low",
+ "supports_attachments": true
+ },
+ {
+ "id": "Kimi-K2-0905",
+ "name": "Kimi K2 0905",
+ "cost_per_1m_in": 0.55,
+ "cost_per_1m_out": 2.19,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 256000,
+ "default_max_tokens": 10000,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "default_reasoning_effort": "medium"
+ },
+ {
+ "id": "glm-4.6",
+ "name": "GLM-4.6",
+ "cost_per_1m_in": 0.6,
+ "cost_per_1m_out": 2.2,
+ "cost_per_1m_in_cached": 0.11,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 204800,
+ "default_max_tokens": 131072,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "default_reasoning_effort": "medium",
+ "supports_attachments": false
+ },
+ {
+ "id": "qwen3-coder-480b-a35b-instruct",
+ "name": "Qwen 3 480B Coder",
+ "cost_per_1m_in": 0.82,
+ "cost_per_1m_out": 3.29,
+ "context_window": 131072,
+ "default_max_tokens": 65536,
+ "can_reason": false,
+ "supports_attachments": false
+ }
+ ]
+}
@@ -0,0 +1,107 @@
+{
+ "name": "Anthropic",
+ "id": "anthropic",
+ "type": "anthropic",
+ "api_key": "$ANTHROPIC_API_KEY",
+ "api_endpoint": "$ANTHROPIC_API_ENDPOINT",
+ "default_large_model_id": "claude-sonnet-4-5-20250929",
+ "default_small_model_id": "claude-3-5-haiku-20241022",
+ "models": [
+ {
+ "id": "claude-sonnet-4-5-20250929",
+ "name": "Claude Sonnet 4.5",
+ "cost_per_1m_in": 3,
+ "cost_per_1m_out": 15,
+ "cost_per_1m_in_cached": 3.75,
+ "cost_per_1m_out_cached": 0.3,
+ "context_window": 200000,
+ "default_max_tokens": 50000,
+ "can_reason": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "claude-opus-4-1-20250805",
+ "name": "Claude Opus 4.1",
+ "cost_per_1m_in": 15,
+ "cost_per_1m_out": 75,
+ "cost_per_1m_in_cached": 18.75,
+ "cost_per_1m_out_cached": 1.5,
+ "context_window": 200000,
+ "default_max_tokens": 32000,
+ "can_reason": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "claude-opus-4-20250514",
+ "name": "Claude Opus 4",
+ "cost_per_1m_in": 15,
+ "cost_per_1m_out": 75,
+ "cost_per_1m_in_cached": 18.75,
+ "cost_per_1m_out_cached": 1.5,
+ "context_window": 200000,
+ "default_max_tokens": 32000,
+ "can_reason": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "claude-sonnet-4-20250514",
+ "name": "Claude Sonnet 4",
+ "cost_per_1m_in": 3,
+ "cost_per_1m_out": 15,
+ "cost_per_1m_in_cached": 3.75,
+ "cost_per_1m_out_cached": 0.3,
+ "context_window": 200000,
+ "default_max_tokens": 50000,
+ "can_reason": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "claude-3-7-sonnet-20250219",
+ "name": "Claude 3.7 Sonnet",
+ "cost_per_1m_in": 3,
+ "cost_per_1m_out": 15,
+ "cost_per_1m_in_cached": 3.75,
+ "cost_per_1m_out_cached": 0.3,
+ "context_window": 200000,
+ "default_max_tokens": 50000,
+ "can_reason": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "claude-3-5-haiku-20241022",
+ "name": "Claude 3.5 Haiku",
+ "cost_per_1m_in": 0.7999999999999999,
+ "cost_per_1m_out": 4,
+ "cost_per_1m_in_cached": 1,
+ "cost_per_1m_out_cached": 0.08,
+ "context_window": 200000,
+ "default_max_tokens": 5000,
+ "can_reason": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "claude-3-5-sonnet-20240620",
+ "name": "Claude 3.5 Sonnet (Old)",
+ "cost_per_1m_in": 3,
+ "cost_per_1m_out": 15,
+ "cost_per_1m_in_cached": 3.75,
+ "cost_per_1m_out_cached": 0.3,
+ "context_window": 200000,
+ "default_max_tokens": 5000,
+ "can_reason": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "claude-3-5-sonnet-20241022",
+ "name": "Claude 3.5 Sonnet (New)",
+ "cost_per_1m_in": 3,
+ "cost_per_1m_out": 15,
+ "cost_per_1m_in_cached": 3.75,
+ "cost_per_1m_out_cached": 0.3,
+ "context_window": 200000,
+ "default_max_tokens": 5000,
+ "can_reason": false,
+ "supports_attachments": true
+ }
+ ]
+}
@@ -0,0 +1,196 @@
+{
+ "name": "Azure OpenAI",
+ "id": "azure",
+ "type": "azure",
+ "api_key": "$AZURE_OPENAI_API_KEY",
+ "api_endpoint": "$AZURE_OPENAI_API_ENDPOINT",
+ "default_large_model_id": "gpt-5",
+ "default_small_model_id": "gpt-5-mini",
+ "models": [
+ {
+ "id": "gpt-5",
+ "name": "GPT-5",
+ "cost_per_1m_in": 1.25,
+ "cost_per_1m_out": 10,
+ "cost_per_1m_in_cached": 0.25,
+ "cost_per_1m_out_cached": 0.25,
+ "context_window": 400000,
+ "default_max_tokens": 128000,
+ "can_reason": true,
+ "has_reasoning_efforts": false,
+ "default_reasoning_effort": "minimal",
+ "supports_attachments": true
+ },
+ {
+ "id": "gpt-5-mini",
+ "name": "GPT-5 Mini",
+ "cost_per_1m_in": 0.25,
+ "cost_per_1m_out": 2,
+ "cost_per_1m_in_cached": 0.025,
+ "cost_per_1m_out_cached": 0.025,
+ "context_window": 400000,
+ "default_max_tokens": 128000,
+ "can_reason": true,
+ "has_reasoning_efforts": false,
+ "default_reasoning_effort": "low",
+ "supports_attachments": true
+ },
+ {
+ "id": "gpt-5-nano",
+ "name": "GPT-5 Nano",
+ "cost_per_1m_in": 0.05,
+ "cost_per_1m_out": 0.4,
+ "cost_per_1m_in_cached": 0.005,
+ "cost_per_1m_out_cached": 0.005,
+ "context_window": 400000,
+ "default_max_tokens": 128000,
+ "can_reason": true,
+ "has_reasoning_efforts": false,
+ "default_reasoning_effort": "low",
+ "supports_attachments": true
+ },
+ {
+ "id": "codex-mini-latest",
+ "name": "Codex Mini",
+ "cost_per_1m_in": 1.5,
+ "cost_per_1m_out": 6,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0.375,
+ "context_window": 200000,
+ "default_max_tokens": 50000,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "default_reasoning_effort": "medium",
+ "supports_attachments": true
+ },
+ {
+ "id": "o4-mini",
+ "name": "o4 Mini",
+ "cost_per_1m_in": 1.1,
+ "cost_per_1m_out": 4.4,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0.275,
+ "context_window": 200000,
+ "default_max_tokens": 50000,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "default_reasoning_effort": "medium",
+ "supports_attachments": true
+ },
+ {
+ "id": "o3",
+ "name": "o3",
+ "cost_per_1m_in": 2,
+ "cost_per_1m_out": 8,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0.5,
+ "context_window": 200000,
+ "default_max_tokens": 50000,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "default_reasoning_effort": "medium",
+ "supports_attachments": true
+ },
+ {
+ "id": "o3-pro",
+ "name": "o3 Pro",
+ "cost_per_1m_in": 20,
+ "cost_per_1m_out": 80,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 200000,
+ "default_max_tokens": 50000,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "default_reasoning_effort": "medium",
+ "supports_attachments": true
+ },
+ {
+ "id": "gpt-4.1",
+ "name": "GPT-4.1",
+ "cost_per_1m_in": 2,
+ "cost_per_1m_out": 8,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0.5,
+ "context_window": 1047576,
+ "default_max_tokens": 50000,
+ "can_reason": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "gpt-4.1-mini",
+ "name": "GPT-4.1 Mini",
+ "cost_per_1m_in": 0.39999999999999997,
+ "cost_per_1m_out": 1.5999999999999999,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0.09999999999999999,
+ "context_window": 1047576,
+ "default_max_tokens": 50000,
+ "can_reason": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "gpt-4.1-nano",
+ "name": "GPT-4.1 Nano",
+ "cost_per_1m_in": 0.09999999999999999,
+ "cost_per_1m_out": 0.39999999999999997,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0.024999999999999998,
+ "context_window": 1047576,
+ "default_max_tokens": 50000,
+ "can_reason": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "gpt-4.5-preview",
+ "name": "GPT-4.5 (Preview)",
+ "cost_per_1m_in": 75,
+ "cost_per_1m_out": 150,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 37.5,
+ "context_window": 128000,
+ "default_max_tokens": 50000,
+ "can_reason": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "o3-mini",
+ "name": "o3 Mini",
+ "cost_per_1m_in": 1.1,
+ "cost_per_1m_out": 4.4,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0.55,
+ "context_window": 200000,
+ "default_max_tokens": 50000,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "default_reasoning_effort": "medium",
+ "supports_attachments": false
+ },
+ {
+ "id": "gpt-4o",
+ "name": "GPT-4o",
+ "cost_per_1m_in": 2.5,
+ "cost_per_1m_out": 10,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 1.25,
+ "context_window": 128000,
+ "default_max_tokens": 20000,
+ "can_reason": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "gpt-4o-mini",
+ "name": "GPT-4o-mini",
+ "cost_per_1m_in": 0.15,
+ "cost_per_1m_out": 0.6,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0.075,
+ "context_window": 128000,
+ "default_max_tokens": 20000,
+ "can_reason": false,
+ "reasoning_effort": "",
+ "supports_attachments": true
+ }
+ ]
+}
@@ -0,0 +1,83 @@
+{
+ "name": "AWS Bedrock",
+ "id": "bedrock",
+ "type": "bedrock",
+ "api_key": "",
+ "api_endpoint": "",
+ "default_large_model_id": "anthropic.claude-sonnet-4-5-20250929-v1:0",
+ "default_small_model_id": "anthropic.claude-3-5-haiku-20241022-v1:0",
+ "models": [
+ {
+ "id": "anthropic.claude-sonnet-4-5-20250929-v1:0",
+ "name": "AWS Claude Sonnet 4.5",
+ "cost_per_1m_in": 3,
+ "cost_per_1m_out": 15,
+ "cost_per_1m_in_cached": 3.75,
+ "cost_per_1m_out_cached": 0.3,
+ "context_window": 200000,
+ "default_max_tokens": 50000,
+ "can_reason": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "anthropic.claude-opus-4-1-20250805-v1:0",
+ "name": "AWS Claude Opus 4.1",
+ "cost_per_1m_in": 15,
+ "cost_per_1m_out": 75,
+ "cost_per_1m_in_cached": 18.75,
+ "cost_per_1m_out_cached": 1.5,
+ "context_window": 200000,
+ "default_max_tokens": 50000,
+ "can_reason": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "anthropic.claude-opus-4-20250514-v1:0",
+ "name": "AWS Claude Opus 4",
+ "cost_per_1m_in": 15,
+ "cost_per_1m_out": 75,
+ "cost_per_1m_in_cached": 18.75,
+ "cost_per_1m_out_cached": 1.5,
+ "context_window": 200000,
+ "default_max_tokens": 50000,
+ "can_reason": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "anthropic.claude-sonnet-4-20250514-v1:0",
+ "name": "AWS Claude Sonnet 4",
+ "cost_per_1m_in": 3,
+ "cost_per_1m_out": 15,
+ "cost_per_1m_in_cached": 3.75,
+ "cost_per_1m_out_cached": 0.3,
+ "context_window": 200000,
+ "default_max_tokens": 50000,
+ "can_reason": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "anthropic.claude-3-7-sonnet-20250219-v1:0",
+ "name": "AWS Claude 3.7 Sonnet",
+ "cost_per_1m_in": 3,
+ "cost_per_1m_out": 15,
+ "cost_per_1m_in_cached": 3.75,
+ "cost_per_1m_out_cached": 0.3,
+ "context_window": 200000,
+ "default_max_tokens": 50000,
+ "can_reason": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "anthropic.claude-3-5-haiku-20241022-v1:0",
+ "name": "AWS Claude 3.5 Haiku",
+ "cost_per_1m_in": 0.7999999999999999,
+ "cost_per_1m_out": 4,
+ "cost_per_1m_in_cached": 1,
+ "cost_per_1m_out_cached": 0.08,
+ "context_window": 200000,
+ "default_max_tokens": 50000,
+ "can_reason": false,
+ "supports_attachments": true
+ }
+ ]
+}
@@ -0,0 +1,103 @@
+{
+ "name": "Cerebras",
+ "id": "cerebras",
+ "type": "openai",
+ "api_key": "$CEREBRAS_API_KEY",
+ "api_endpoint": "https://api.cerebras.ai/v1",
+ "default_large_model_id": "qwen-3-coder-480b",
+ "default_small_model_id": "qwen-3-32b",
+ "models": [
+ {
+ "id": "llama-4-scout-17b-16e-instruct",
+ "name": "Llama 4 Scout",
+ "cost_per_1m_in": 0.65,
+ "cost_per_1m_out": 0.85,
+ "context_window": 32768,
+ "default_max_tokens": 4000,
+ "can_reason": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "llama3.1-8b",
+ "name": "Llama 3.1 8B",
+ "cost_per_1m_in": 0.1,
+ "cost_per_1m_out": 0.1,
+ "context_window": 32768,
+ "default_max_tokens": 4000,
+ "can_reason": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "llama-3.3-70b",
+ "name": "Llama 3.3 70B",
+ "cost_per_1m_in": 0.85,
+ "cost_per_1m_out": 1.2,
+ "context_window": 128000,
+ "default_max_tokens": 4000,
+ "can_reason": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "gpt-oss-120b",
+ "name": "gpt-oss-120b",
+ "cost_per_1m_in": 0.4,
+ "cost_per_1m_out": 0.8,
+ "context_window": 128000,
+ "default_max_tokens": 65536,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "default_reasoning_efforts": "medium",
+ "supports_attachments": false
+ },
+ {
+ "id": "qwen-3-32b",
+ "name": "Qwen 3 32B",
+ "cost_per_1m_in": 0.4,
+ "cost_per_1m_out": 0.8,
+ "context_window": 128000,
+ "default_max_tokens": 32768,
+ "can_reason": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "llama-4-maverick-17b-128e-instruct",
+ "name": "Llama 4 Maverick",
+ "cost_per_1m_in": 0.2,
+ "cost_per_1m_out": 0.6,
+ "context_window": 32768,
+ "default_max_tokens": 4000,
+ "can_reason": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "qwen-3-235b-a22b-instruct-2507",
+ "name": "Qwen 3 235B Instruct",
+ "cost_per_1m_in": 0.6,
+ "cost_per_1m_out": 1.2,
+ "context_window": 131072,
+ "default_max_tokens": 16384,
+ "can_reason": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "qwen-3-235b-a22b-thinking-2507",
+ "name": "Qwen 3 235B Thinking",
+ "cost_per_1m_in": 0.6,
+ "cost_per_1m_out": 1.2,
+ "context_window": 128000,
+ "default_max_tokens": 32768,
+ "can_reason": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "qwen-3-coder-480b",
+ "name": "Qwen 3 480B Coder",
+ "cost_per_1m_in": 2.0,
+ "cost_per_1m_out": 2.0,
+ "context_window": 131072,
+ "default_max_tokens": 65536,
+ "can_reason": false,
+ "supports_attachments": false
+ }
+ ]
+}
@@ -0,0 +1,242 @@
+{
+ "name": "Chutes",
+ "id": "chutes",
+ "type": "openai",
+ "api_key": "$CHUTES_API_KEY",
+ "api_endpoint": "https://llm.chutes.ai/v1",
+ "default_large_model_id": "Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8",
+ "default_small_model_id": "Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8",
+ "models": [
+ {
+ "id": "Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8",
+ "name": "Qwen3 Coder 480B A35B Instruct (FP8)",
+ "cost_per_1m_in": 0.2,
+ "cost_per_1m_out": 0.8,
+ "context_window": 262000,
+ "default_max_tokens": 32768,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "default_reasoning_efforts": "medium",
+ "supports_attachments": true
+ },
+ {
+ "id": "zai-org/GLM-4.5-FP8",
+ "name": "GLM 4.5 FP8",
+ "cost_per_1m_in": 0.0,
+ "cost_per_1m_out": 0.0,
+ "context_window": 98000,
+ "default_max_tokens": 32768,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "default_reasoning_efforts": "medium",
+ "supports_attachments": true
+ },
+ {
+ "id": "moonshotai/Kimi-K2-Instruct-75k",
+ "name": "Kimi K2 Instruct",
+ "cost_per_1m_in": 0.15,
+ "cost_per_1m_out": 0.59,
+ "context_window": 75000,
+ "default_max_tokens": 32768,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "default_reasoning_efforts": "medium",
+ "supports_attachments": true
+ },
+ {
+ "id": "deepseek-ai/DeepSeek-R1-0528",
+ "name": "DeepSeek R1 0528",
+ "cost_per_1m_in": 0.18,
+ "cost_per_1m_out": 0.72,
+ "context_window": 75000,
+ "default_max_tokens": 32768,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "default_reasoning_efforts": "medium",
+ "supports_attachments": true
+ },
+ {
+ "id": "deepseek-ai/DeepSeek-R1-0528-Qwen3-8B",
+ "name": "DeepSeek R1 0528 Qwen3 8B",
+ "cost_per_1m_in": 0.02,
+ "cost_per_1m_out": 0.07,
+ "context_window": 32768,
+ "default_max_tokens": 8192,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "deepseek-ai/DeepSeek-R1-Distill-Llama-70B",
+ "name": "DeepSeek R1 Distill Llama 70B",
+ "cost_per_1m_in": 0.03,
+ "cost_per_1m_out": 0.14,
+ "context_window": 65536,
+ "default_max_tokens": 8192,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "tngtech/DeepSeek-R1T-Chimera",
+ "name": "DeepSeek R1T Chimera",
+ "cost_per_1m_in": 0.18,
+ "cost_per_1m_out": 0.72,
+ "context_window": 131072,
+ "default_max_tokens": 32768,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "default_reasoning_efforts": "medium",
+ "supports_attachments": true
+ },
+ {
+ "id": "tngtech/DeepSeek-TNG-R1T2-Chimera",
+ "name": "DeepSeek TNG R1T2 Chimera",
+ "cost_per_1m_in": 0.20,
+ "cost_per_1m_out": 0.80,
+ "context_window": 262144,
+ "default_max_tokens": 65536,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "default_reasoning_efforts": "high",
+ "supports_attachments": true
+ },
+ {
+ "id": "deepseek-ai/DeepSeek-V3-0324",
+ "name": "DeepSeek V3 0324",
+ "cost_per_1m_in": 0.18,
+ "cost_per_1m_out": 0.72,
+ "context_window": 75000,
+ "default_max_tokens": 32768,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "default_reasoning_efforts": "medium",
+ "supports_attachments": true
+ },
+ {
+ "id": "chutesai/Devstral-Small-2505",
+ "name": "Devstral Small 2505",
+ "cost_per_1m_in": 0.02,
+ "cost_per_1m_out": 0.08,
+ "context_window": 32768,
+ "default_max_tokens": 8192,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "zai-org/GLM-4.5-Air",
+ "name": "GLM 4.5 Air",
+ "cost_per_1m_in": 0.0,
+ "cost_per_1m_out": 0.0,
+ "context_window": 131072,
+ "default_max_tokens": 32768,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "default_reasoning_efforts": "medium",
+ "supports_attachments": true
+ },
+ {
+ "id": "openai/gpt-oss-120b",
+ "name": "GPT OSS 120B",
+ "cost_per_1m_in": 0.10,
+ "cost_per_1m_out": 0.41,
+ "context_window": 131072,
+ "default_max_tokens": 32768,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "default_reasoning_efforts": "medium",
+ "supports_attachments": true
+ },
+ {
+ "id": "chutesai/Mistral-Small-3.2-24B-Instruct-2506",
+ "name": "Mistral Small 3.2 24B Instruct 2506",
+ "cost_per_1m_in": 0.02,
+ "cost_per_1m_out": 0.08,
+ "context_window": 32768,
+ "default_max_tokens": 8192,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "Qwen/Qwen3-235B-A22B-Instruct-2507",
+ "name": "Qwen3 235B A22B Instruct 2507",
+ "cost_per_1m_in": 0.08,
+ "cost_per_1m_out": 0.31,
+ "context_window": 32768,
+ "default_max_tokens": 8192,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "Qwen/Qwen3-30B-A3B",
+ "name": "Qwen3 30B A3B",
+ "cost_per_1m_in": 0.02,
+ "cost_per_1m_out": 0.08,
+ "context_window": 32768,
+ "default_max_tokens": 8192,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "Qwen/Qwen3-235B-A22B-Thinking-2507",
+ "name": "Qwen3 235B A22B Thinking 2507",
+ "cost_per_1m_in": 0.08,
+ "cost_per_1m_out": 0.31,
+ "context_window": 32768,
+ "default_max_tokens": 8192,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "default_reasoning_efforts": "high",
+ "supports_attachments": true
+ },
+ {
+ "id": "deepseek-ai/DeepSeek-V3.1",
+ "name": "DeepSeek V3.1",
+ "cost_per_1m_in": 0.20,
+ "cost_per_1m_out": 0.80,
+ "context_window": 163840,
+ "default_max_tokens": 32768,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "deepseek-ai/DeepSeek-V3.1:THINKING",
+ "name": "DeepSeek V3.1 Reasoning",
+ "cost_per_1m_in": 0.20,
+ "cost_per_1m_out": 0.80,
+ "context_window": 163840,
+ "default_max_tokens": 32768,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "default_reasoning_efforts": "medium",
+ "supports_attachments": true
+ },
+ {
+ "id": "Qwen/Qwen3-30B-A3B-Instruct-2507",
+ "name": "Qwen3 30B A3B Instruct 2507",
+ "cost_per_1m_in": 0.05,
+ "cost_per_1m_out": 0.20,
+ "context_window": 262144,
+ "default_max_tokens": 32768,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "Qwen/Qwen3-Coder-30B-A3B-Instruct",
+ "name": "Qwen3 Coder 30B A3B Instruct",
+ "cost_per_1m_in": 0.00,
+ "cost_per_1m_out": 0.00,
+ "context_window": 262144,
+ "default_max_tokens": 32768,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": true
+ }
+ ]
+}
@@ -0,0 +1,36 @@
+{
+ "name": "DeepSeek",
+ "id": "deepseek",
+ "type": "openai",
+ "api_key": "$DEEPSEEK_API_KEY",
+ "api_endpoint": "https://api.deepseek.com/v1",
+ "default_large_model_id": "deepseek-reasoner",
+ "default_small_model_id": "deepseek-chat",
+ "models": [
+ {
+ "id": "deepseek-chat",
+ "name": "DeepSeek-V3.1 (Non-thinking Mode)",
+ "cost_per_1m_in": 0.56,
+ "cost_per_1m_out": 1.68,
+ "cost_per_1m_in_cached": 0.07,
+ "cost_per_1m_out_cached": 1.68,
+ "context_window": 128000,
+ "default_max_tokens": 4000,
+ "can_reason": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "deepseek-reasoner",
+ "name": "DeepSeek-V3.1 (Thinking Mode)",
+ "cost_per_1m_in": 0.56,
+ "cost_per_1m_out": 1.68,
+ "cost_per_1m_in_cached": 0.07,
+ "cost_per_1m_out_cached": 1.68,
+ "context_window": 128000,
+ "default_max_tokens": 32000,
+ "can_reason": true,
+ "supports_attachments": false
+ }
+ ]
+}
+
@@ -0,0 +1,35 @@
+{
+ "name": "Google Gemini",
+ "id": "gemini",
+ "type": "gemini",
+ "api_key": "$GEMINI_API_KEY",
+ "api_endpoint": "$GEMINI_API_ENDPOINT",
+ "default_large_model_id": "gemini-2.5-pro",
+ "default_small_model_id": "gemini-2.5-flash",
+ "models": [
+ {
+ "id": "gemini-2.5-pro",
+ "name": "Gemini 2.5 Pro",
+ "cost_per_1m_in": 1.25,
+ "cost_per_1m_out": 10,
+ "cost_per_1m_in_cached": 1.625,
+ "cost_per_1m_out_cached": 0.31,
+ "context_window": 1048576,
+ "default_max_tokens": 50000,
+ "can_reason": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "gemini-2.5-flash",
+ "name": "Gemini 2.5 Flash",
+ "cost_per_1m_in": 0.3,
+ "cost_per_1m_out": 2.5,
+ "cost_per_1m_in_cached": 0.3833,
+ "cost_per_1m_out_cached": 0.075,
+ "context_window": 1048576,
+ "default_max_tokens": 50000,
+ "can_reason": true,
+ "supports_attachments": true
+ }
+ ]
+}
@@ -0,0 +1,29 @@
+{
+ "name": "Groq",
+ "id": "groq",
+ "api_key": "$GROQ_API_KEY",
+ "api_endpoint": "https://api.groq.com/openai/v1",
+ "type": "openai",
+ "default_large_model_id": "moonshotai/kimi-k2-instruct-0905",
+ "default_small_model_id": "qwen/qwen3-32b",
+ "models": [
+ {
+ "id": "moonshotai/kimi-k2-instruct-0905",
+ "name": "Kimi K2 0905",
+ "cost_per_1m_in": 1,
+ "cost_per_1m_out": 3,
+ "cost_per_1m_in_cached": 0.5,
+ "cost_per_1m_out_cached": 0.5,
+ "context_window": 131072,
+ "default_max_tokens": 10000
+ },
+ {
+ "id": "qwen/qwen3-32b",
+ "name": "Qwen3 32B",
+ "cost_per_1m_in": 0.29,
+ "cost_per_1m_out": 0.59,
+ "context_window": 131072,
+ "default_max_tokens": 10000
+ }
+ ]
+}
@@ -0,0 +1,314 @@
+{
+ "name": "Hugging Face",
+ "id": "huggingface",
+ "api_key": "$HF_TOKEN",
+ "api_endpoint": "https://router.huggingface.co/v1",
+ "type": "openai",
+ "default_large_model_id": "moonshotai/Kimi-K2-Instruct-0905:groq",
+ "default_small_model_id": "openai/gpt-oss-20b",
+ "models": [
+ {
+ "id": "Qwen/Qwen3-235B-A22B:fireworks-ai",
+ "name": "Qwen/Qwen3-235B-A22B (fireworks-ai)",
+ "cost_per_1m_in": 0.22,
+ "cost_per_1m_out": 0.88,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 8192,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "Qwen/Qwen3-235B-A22B-Instruct-2507:fireworks-ai",
+ "name": "Qwen/Qwen3-235B-A22B-Instruct-2507 (fireworks-ai)",
+ "cost_per_1m_in": 0.22,
+ "cost_per_1m_out": 0.88,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 262144,
+ "default_max_tokens": 8192,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "Qwen/Qwen3-235B-A22B-Thinking-2507:fireworks-ai",
+ "name": "Qwen/Qwen3-235B-A22B-Thinking-2507 (fireworks-ai)",
+ "cost_per_1m_in": 0.22,
+ "cost_per_1m_out": 0.88,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 262144,
+ "default_max_tokens": 8192,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "Qwen/Qwen3-30B-A3B:fireworks-ai",
+ "name": "Qwen/Qwen3-30B-A3B (fireworks-ai)",
+ "cost_per_1m_in": 0.15,
+ "cost_per_1m_out": 0.6,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 8192,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "Qwen/Qwen3-Coder-480B-A35B-Instruct:cerebras",
+ "name": "Qwen/Qwen3-Coder-480B-A35B-Instruct (cerebras)",
+ "cost_per_1m_in": 2,
+ "cost_per_1m_out": 2,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 262144,
+ "default_max_tokens": 8192,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "Qwen/Qwen3-Coder-480B-A35B-Instruct:fireworks-ai",
+ "name": "Qwen/Qwen3-Coder-480B-A35B-Instruct (fireworks-ai)",
+ "cost_per_1m_in": 0.45,
+ "cost_per_1m_out": 1.8,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 262144,
+ "default_max_tokens": 8192,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "deepseek-ai/DeepSeek-V3-0324:fireworks-ai",
+ "name": "deepseek-ai/DeepSeek-V3-0324 (fireworks-ai)",
+ "cost_per_1m_in": 0.9,
+ "cost_per_1m_out": 0.9,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 163840,
+ "default_max_tokens": 8192,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "deepseek-ai/DeepSeek-V3.1:fireworks-ai",
+ "name": "deepseek-ai/DeepSeek-V3.1 (fireworks-ai)",
+ "cost_per_1m_in": 0,
+ "cost_per_1m_out": 0,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 163840,
+ "default_max_tokens": 8192,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "meta-llama/Llama-3.1-70B-Instruct:fireworks-ai",
+ "name": "meta-llama/Llama-3.1-70B-Instruct (fireworks-ai)",
+ "cost_per_1m_in": 0.9,
+ "cost_per_1m_out": 0.9,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 8192,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "meta-llama/Llama-3.3-70B-Instruct:cerebras",
+ "name": "meta-llama/Llama-3.3-70B-Instruct (cerebras)",
+ "cost_per_1m_in": 0.85,
+ "cost_per_1m_out": 1.2,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 8192,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "meta-llama/Llama-3.3-70B-Instruct:groq",
+ "name": "meta-llama/Llama-3.3-70B-Instruct (groq)",
+ "cost_per_1m_in": 0.59,
+ "cost_per_1m_out": 0.79,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 8192,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "meta-llama/Llama-4-Maverick-17B-128E-Instruct:fireworks-ai",
+ "name": "meta-llama/Llama-4-Maverick-17B-128E-Instruct (fireworks-ai)",
+ "cost_per_1m_in": 0.22,
+ "cost_per_1m_out": 0.88,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 1048576,
+ "default_max_tokens": 8192,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "meta-llama/Llama-4-Maverick-17B-128E-Instruct:groq",
+ "name": "meta-llama/Llama-4-Maverick-17B-128E-Instruct (groq)",
+ "cost_per_1m_in": 0.2,
+ "cost_per_1m_out": 0.6,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 8192,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "meta-llama/Llama-4-Scout-17B-16E-Instruct:groq",
+ "name": "meta-llama/Llama-4-Scout-17B-16E-Instruct (groq)",
+ "cost_per_1m_in": 0.11,
+ "cost_per_1m_out": 0.34,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 8192,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "moonshotai/Kimi-K2-Instruct:fireworks-ai",
+ "name": "moonshotai/Kimi-K2-Instruct (fireworks-ai)",
+ "cost_per_1m_in": 0.6,
+ "cost_per_1m_out": 2.5,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 8192,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "moonshotai/Kimi-K2-Instruct-0905:groq",
+ "name": "moonshotai/Kimi-K2-Instruct-0905 (groq)",
+ "cost_per_1m_in": 0,
+ "cost_per_1m_out": 0,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 262144,
+ "default_max_tokens": 8192,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "openai/gpt-oss-120b:cerebras",
+ "name": "openai/gpt-oss-120b (cerebras)",
+ "cost_per_1m_in": 0.25,
+ "cost_per_1m_out": 0.69,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 8192,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "openai/gpt-oss-120b:fireworks-ai",
+ "name": "openai/gpt-oss-120b (fireworks-ai)",
+ "cost_per_1m_in": 0.15,
+ "cost_per_1m_out": 0.6,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 8192,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "openai/gpt-oss-120b:groq",
+ "name": "openai/gpt-oss-120b (groq)",
+ "cost_per_1m_in": 0.15,
+ "cost_per_1m_out": 0.75,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 8192,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "openai/gpt-oss-20b:fireworks-ai",
+ "name": "openai/gpt-oss-20b (fireworks-ai)",
+ "cost_per_1m_in": 0.05,
+ "cost_per_1m_out": 0.2,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 8192,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "openai/gpt-oss-20b:groq",
+ "name": "openai/gpt-oss-20b (groq)",
+ "cost_per_1m_in": 0.1,
+ "cost_per_1m_out": 0.5,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 8192,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "zai-org/GLM-4.5:fireworks-ai",
+ "name": "zai-org/GLM-4.5 (fireworks-ai)",
+ "cost_per_1m_in": 0.55,
+ "cost_per_1m_out": 2.19,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 8192,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "zai-org/GLM-4.5-Air:fireworks-ai",
+ "name": "zai-org/GLM-4.5-Air (fireworks-ai)",
+ "cost_per_1m_in": 0.22,
+ "cost_per_1m_out": 0.88,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 8192,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ }
+ ],
+ "default_headers": {
+ "HTTP-Referer": "https://charm.land",
+ "X-Title": "Crush"
+ }
+}
@@ -0,0 +1,156 @@
+{
+ "name": "OpenAI",
+ "id": "openai",
+ "type": "openai",
+ "api_key": "$OPENAI_API_KEY",
+ "api_endpoint": "$OPENAI_API_ENDPOINT",
+ "default_large_model_id": "gpt-5",
+ "default_small_model_id": "gpt-4o",
+ "models": [
+ {
+ "id": "gpt-5",
+ "name": "GPT-5",
+ "cost_per_1m_in": 1.25,
+ "cost_per_1m_out": 10,
+ "cost_per_1m_in_cached": 0.25,
+ "cost_per_1m_out_cached": 0.25,
+ "context_window": 400000,
+ "default_max_tokens": 128000,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "default_reasoning_effort": "minimal",
+ "supports_attachments": true
+ },
+ {
+ "id": "gpt-5-mini",
+ "name": "GPT-5 Mini",
+ "cost_per_1m_in": 0.25,
+ "cost_per_1m_out": 2,
+ "cost_per_1m_in_cached": 0.025,
+ "cost_per_1m_out_cached": 0.025,
+ "context_window": 400000,
+ "default_max_tokens": 128000,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "default_reasoning_effort": "low",
+ "supports_attachments": true
+ },
+ {
+ "id": "gpt-5-nano",
+ "name": "GPT-5 Nano",
+ "cost_per_1m_in": 0.05,
+ "cost_per_1m_out": 0.4,
+ "cost_per_1m_in_cached": 0.005,
+ "cost_per_1m_out_cached": 0.005,
+ "context_window": 400000,
+ "default_max_tokens": 128000,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "default_reasoning_effort": "low",
+ "supports_attachments": true
+ },
+ {
+ "id": "o4-mini",
+ "name": "o4 Mini",
+ "cost_per_1m_in": 1.1,
+ "cost_per_1m_out": 4.4,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0.275,
+ "context_window": 200000,
+ "default_max_tokens": 50000,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "default_reasoning_effort": "low",
+ "supports_attachments": true
+ },
+ {
+ "id": "o3",
+ "name": "o3",
+ "cost_per_1m_in": 2,
+ "cost_per_1m_out": 8,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0.5,
+ "context_window": 200000,
+ "default_max_tokens": 50000,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "default_reasoning_effort": "medium",
+ "supports_attachments": true
+ },
+ {
+ "id": "gpt-4.1",
+ "name": "GPT-4.1",
+ "cost_per_1m_in": 2,
+ "cost_per_1m_out": 8,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0.5,
+ "context_window": 1047576,
+ "default_max_tokens": 16384,
+ "can_reason": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "gpt-4.1-mini",
+ "name": "GPT-4.1 Mini",
+ "cost_per_1m_in": 0.39999999999999997,
+ "cost_per_1m_out": 1.5999999999999999,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0.09999999999999999,
+ "context_window": 1047576,
+ "default_max_tokens": 16384,
+ "can_reason": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "gpt-4.1-nano",
+ "name": "GPT-4.1 Nano",
+ "cost_per_1m_in": 0.09999999999999999,
+ "cost_per_1m_out": 0.39999999999999997,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0.024999999999999998,
+ "context_window": 1047576,
+ "default_max_tokens": 16384,
+ "can_reason": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "o3-mini",
+ "name": "o3 Mini",
+ "cost_per_1m_in": 1.1,
+ "cost_per_1m_out": 4.4,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0.55,
+ "context_window": 200000,
+ "default_max_tokens": 50000,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "default_reasoning_effort": "medium",
+ "supports_attachments": false
+ },
+ {
+ "id": "gpt-4o",
+ "name": "GPT-4o",
+ "cost_per_1m_in": 2.5,
+ "cost_per_1m_out": 10,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 1.25,
+ "context_window": 128000,
+ "default_max_tokens": 8192,
+ "can_reason": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "gpt-4o-mini",
+ "name": "GPT-4o-mini",
+ "cost_per_1m_in": 0.15,
+ "cost_per_1m_out": 0.6,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0.075,
+ "context_window": 128000,
+ "default_max_tokens": 8192,
+ "can_reason": false,
+ "reasoning_effort": "",
+ "supports_attachments": true
+ }
+ ]
+}
@@ -0,0 +1,2615 @@
+{
+ "name": "OpenRouter",
+ "id": "openrouter",
+ "api_key": "$OPENROUTER_API_KEY",
+ "api_endpoint": "https://openrouter.ai/api/v1",
+ "type": "openai",
+ "default_large_model_id": "anthropic/claude-sonnet-4",
+ "default_small_model_id": "anthropic/claude-3.5-haiku",
+ "models": [
+ {
+ "id": "ai21/jamba-large-1.7",
+ "name": "AI21: Jamba Large 1.7",
+ "cost_per_1m_in": 2,
+ "cost_per_1m_out": 8,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 256000,
+ "default_max_tokens": 2048,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "ai21/jamba-mini-1.7",
+ "name": "AI21: Jamba Mini 1.7",
+ "cost_per_1m_in": 0.19999999999999998,
+ "cost_per_1m_out": 0.39999999999999997,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 256000,
+ "default_max_tokens": 2048,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "amazon/nova-lite-v1",
+ "name": "Amazon: Nova Lite 1.0",
+ "cost_per_1m_in": 0.06,
+ "cost_per_1m_out": 0.24,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 300000,
+ "default_max_tokens": 2560,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "amazon/nova-micro-v1",
+ "name": "Amazon: Nova Micro 1.0",
+ "cost_per_1m_in": 0.035,
+ "cost_per_1m_out": 0.14,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 128000,
+ "default_max_tokens": 2560,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "amazon/nova-pro-v1",
+ "name": "Amazon: Nova Pro 1.0",
+ "cost_per_1m_in": 0.7999999999999999,
+ "cost_per_1m_out": 3.1999999999999997,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 300000,
+ "default_max_tokens": 2560,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "openrouter/andromeda-alpha",
+ "name": "Andromeda Alpha",
+ "cost_per_1m_in": 0,
+ "cost_per_1m_out": 0,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 128000,
+ "default_max_tokens": 64000,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "anthropic/claude-3-haiku",
+ "name": "Anthropic: Claude 3 Haiku",
+ "cost_per_1m_in": 0.25,
+ "cost_per_1m_out": 1.25,
+ "cost_per_1m_in_cached": 0.3,
+ "cost_per_1m_out_cached": 0.03,
+ "context_window": 200000,
+ "default_max_tokens": 2048,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "anthropic/claude-3-opus",
+ "name": "Anthropic: Claude 3 Opus",
+ "cost_per_1m_in": 15,
+ "cost_per_1m_out": 75,
+ "cost_per_1m_in_cached": 18.75,
+ "cost_per_1m_out_cached": 1.5,
+ "context_window": 200000,
+ "default_max_tokens": 2048,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "anthropic/claude-3.5-haiku",
+ "name": "Anthropic: Claude 3.5 Haiku",
+ "cost_per_1m_in": 0.7999999999999999,
+ "cost_per_1m_out": 4,
+ "cost_per_1m_in_cached": 1,
+ "cost_per_1m_out_cached": 0.08,
+ "context_window": 200000,
+ "default_max_tokens": 4096,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "anthropic/claude-3.5-haiku-20241022",
+ "name": "Anthropic: Claude 3.5 Haiku (2024-10-22)",
+ "cost_per_1m_in": 0.7999999999999999,
+ "cost_per_1m_out": 4,
+ "cost_per_1m_in_cached": 1,
+ "cost_per_1m_out_cached": 0.08,
+ "context_window": 200000,
+ "default_max_tokens": 4096,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "anthropic/claude-3.5-sonnet",
+ "name": "Anthropic: Claude 3.5 Sonnet",
+ "cost_per_1m_in": 3,
+ "cost_per_1m_out": 15,
+ "cost_per_1m_in_cached": 3.75,
+ "cost_per_1m_out_cached": 0.3,
+ "context_window": 200000,
+ "default_max_tokens": 4096,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "anthropic/claude-3.5-sonnet-20240620",
+ "name": "Anthropic: Claude 3.5 Sonnet (2024-06-20)",
+ "cost_per_1m_in": 3,
+ "cost_per_1m_out": 15,
+ "cost_per_1m_in_cached": 3.75,
+ "cost_per_1m_out_cached": 0.3,
+ "context_window": 200000,
+ "default_max_tokens": 4096,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "anthropic/claude-3.7-sonnet",
+ "name": "Anthropic: Claude 3.7 Sonnet",
+ "cost_per_1m_in": 3,
+ "cost_per_1m_out": 15,
+ "cost_per_1m_in_cached": 3.75,
+ "cost_per_1m_out_cached": 0.3,
+ "context_window": 200000,
+ "default_max_tokens": 32000,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "anthropic/claude-3.7-sonnet:thinking",
+ "name": "Anthropic: Claude 3.7 Sonnet (thinking)",
+ "cost_per_1m_in": 3,
+ "cost_per_1m_out": 15,
+ "cost_per_1m_in_cached": 3.75,
+ "cost_per_1m_out_cached": 0.3,
+ "context_window": 200000,
+ "default_max_tokens": 32000,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "anthropic/claude-haiku-4.5",
+ "name": "Anthropic: Claude Haiku 4.5",
+ "cost_per_1m_in": 1,
+ "cost_per_1m_out": 5,
+ "cost_per_1m_in_cached": 1.25,
+ "cost_per_1m_out_cached": 0.09999999999999999,
+ "context_window": 200000,
+ "default_max_tokens": 32000,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "anthropic/claude-opus-4",
+ "name": "Anthropic: Claude Opus 4",
+ "cost_per_1m_in": 15,
+ "cost_per_1m_out": 75,
+ "cost_per_1m_in_cached": 18.75,
+ "cost_per_1m_out_cached": 1.5,
+ "context_window": 200000,
+ "default_max_tokens": 16000,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "anthropic/claude-opus-4.1",
+ "name": "Anthropic: Claude Opus 4.1",
+ "cost_per_1m_in": 15,
+ "cost_per_1m_out": 75,
+ "cost_per_1m_in_cached": 18.75,
+ "cost_per_1m_out_cached": 1.5,
+ "context_window": 200000,
+ "default_max_tokens": 16000,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "anthropic/claude-sonnet-4",
+ "name": "Anthropic: Claude Sonnet 4",
+ "cost_per_1m_in": 3,
+ "cost_per_1m_out": 15,
+ "cost_per_1m_in_cached": 3.75,
+ "cost_per_1m_out_cached": 0.3,
+ "context_window": 1000000,
+ "default_max_tokens": 32000,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "anthropic/claude-sonnet-4.5",
+ "name": "Anthropic: Claude Sonnet 4.5",
+ "cost_per_1m_in": 3,
+ "cost_per_1m_out": 15,
+ "cost_per_1m_in_cached": 3.75,
+ "cost_per_1m_out_cached": 0.3,
+ "context_window": 1000000,
+ "default_max_tokens": 32000,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "arcee-ai/virtuoso-large",
+ "name": "Arcee AI: Virtuoso Large",
+ "cost_per_1m_in": 0.75,
+ "cost_per_1m_out": 1.2,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 32000,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "baidu/ernie-4.5-21b-a3b",
+ "name": "Baidu: ERNIE 4.5 21B A3B",
+ "cost_per_1m_in": 0.07,
+ "cost_per_1m_out": 0.28,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 120000,
+ "default_max_tokens": 4000,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "baidu/ernie-4.5-vl-28b-a3b",
+ "name": "Baidu: ERNIE 4.5 VL 28B A3B",
+ "cost_per_1m_in": 0.14,
+ "cost_per_1m_out": 0.56,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 30000,
+ "default_max_tokens": 4000,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "deepcogito/cogito-v2-preview-llama-109b-moe",
+ "name": "Cogito V2 Preview Llama 109B",
+ "cost_per_1m_in": 0.18,
+ "cost_per_1m_out": 0.59,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 32767,
+ "default_max_tokens": 3276,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "cohere/command-r-08-2024",
+ "name": "Cohere: Command R (08-2024)",
+ "cost_per_1m_in": 0.15,
+ "cost_per_1m_out": 0.6,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 128000,
+ "default_max_tokens": 2000,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "cohere/command-r-plus-08-2024",
+ "name": "Cohere: Command R+ (08-2024)",
+ "cost_per_1m_in": 2.5,
+ "cost_per_1m_out": 10,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 128000,
+ "default_max_tokens": 2000,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "deepcogito/cogito-v2-preview-llama-405b",
+ "name": "Deep Cogito: Cogito V2 Preview Llama 405B",
+ "cost_per_1m_in": 3.5,
+ "cost_per_1m_out": 3.5,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 32768,
+ "default_max_tokens": 3276,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": false
+ },
+ {
+ "id": "deepcogito/cogito-v2-preview-llama-70b",
+ "name": "Deep Cogito: Cogito V2 Preview Llama 70B",
+ "cost_per_1m_in": 0.88,
+ "cost_per_1m_out": 0.88,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 32768,
+ "default_max_tokens": 3276,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": false
+ },
+ {
+ "id": "deepseek/deepseek-chat",
+ "name": "DeepSeek: DeepSeek V3",
+ "cost_per_1m_in": 0.39999999999999997,
+ "cost_per_1m_out": 1.3,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 64000,
+ "default_max_tokens": 8000,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "deepseek/deepseek-chat-v3-0324",
+ "name": "DeepSeek: DeepSeek V3 0324",
+ "cost_per_1m_in": 0.27,
+ "cost_per_1m_out": 1.12,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0.135,
+ "context_window": 163840,
+ "default_max_tokens": 81920,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "deepseek/deepseek-chat-v3-0324:free",
+ "name": "DeepSeek: DeepSeek V3 0324 (free)",
+ "cost_per_1m_in": 0,
+ "cost_per_1m_out": 0,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 163840,
+ "default_max_tokens": 16384,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "deepseek/deepseek-chat-v3.1",
+ "name": "DeepSeek: DeepSeek V3.1",
+ "cost_per_1m_in": 0.56,
+ "cost_per_1m_out": 1.68,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 163840,
+ "default_max_tokens": 10240,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": false
+ },
+ {
+ "id": "deepseek/deepseek-v3.1-terminus",
+ "name": "DeepSeek: DeepSeek V3.1 Terminus",
+ "cost_per_1m_in": 0.27,
+ "cost_per_1m_out": 1,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 163840,
+ "default_max_tokens": 16384,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": false
+ },
+ {
+ "id": "deepseek/deepseek-v3.1-terminus:exacto",
+ "name": "DeepSeek: DeepSeek V3.1 Terminus (exacto)",
+ "cost_per_1m_in": 0.27,
+ "cost_per_1m_out": 1,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 163840,
+ "default_max_tokens": 16384,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": false
+ },
+ {
+ "id": "deepseek/deepseek-v3.2-exp",
+ "name": "DeepSeek: DeepSeek V3.2 Exp",
+ "cost_per_1m_in": 0.27,
+ "cost_per_1m_out": 0.39999999999999997,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 163840,
+ "default_max_tokens": 16384,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": false
+ },
+ {
+ "id": "deepseek/deepseek-r1",
+ "name": "DeepSeek: R1",
+ "cost_per_1m_in": 0.7,
+ "cost_per_1m_out": 2.5,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 64000,
+ "default_max_tokens": 8000,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": false
+ },
+ {
+ "id": "deepseek/deepseek-r1-0528",
+ "name": "DeepSeek: R1 0528",
+ "cost_per_1m_in": 0.7999999999999999,
+ "cost_per_1m_out": 2.4,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 163840,
+ "default_max_tokens": 16384,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": false
+ },
+ {
+ "id": "google/gemini-2.0-flash-001",
+ "name": "Google: Gemini 2.0 Flash",
+ "cost_per_1m_in": 0.09999999999999999,
+ "cost_per_1m_out": 0.39999999999999997,
+ "cost_per_1m_in_cached": 0.18330000000000002,
+ "cost_per_1m_out_cached": 0.024999999999999998,
+ "context_window": 1048576,
+ "default_max_tokens": 4096,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "google/gemini-2.0-flash-exp:free",
+ "name": "Google: Gemini 2.0 Flash Experimental (free)",
+ "cost_per_1m_in": 0,
+ "cost_per_1m_out": 0,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 1048576,
+ "default_max_tokens": 4096,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "google/gemini-2.0-flash-lite-001",
+ "name": "Google: Gemini 2.0 Flash Lite",
+ "cost_per_1m_in": 0.075,
+ "cost_per_1m_out": 0.3,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 1048576,
+ "default_max_tokens": 4096,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "google/gemini-2.5-flash",
+ "name": "Google: Gemini 2.5 Flash",
+ "cost_per_1m_in": 0.3,
+ "cost_per_1m_out": 2.5,
+ "cost_per_1m_in_cached": 0.3833,
+ "cost_per_1m_out_cached": 0.03,
+ "context_window": 1048576,
+ "default_max_tokens": 32767,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "google/gemini-2.5-flash-lite",
+ "name": "Google: Gemini 2.5 Flash Lite",
+ "cost_per_1m_in": 0.09999999999999999,
+ "cost_per_1m_out": 0.39999999999999997,
+ "cost_per_1m_in_cached": 0.18330000000000002,
+ "cost_per_1m_out_cached": 0.01,
+ "context_window": 1048576,
+ "default_max_tokens": 32767,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "google/gemini-2.5-flash-lite-preview-06-17",
+ "name": "Google: Gemini 2.5 Flash Lite Preview 06-17",
+ "cost_per_1m_in": 0.09999999999999999,
+ "cost_per_1m_out": 0.39999999999999997,
+ "cost_per_1m_in_cached": 0.18330000000000002,
+ "cost_per_1m_out_cached": 0.024999999999999998,
+ "context_window": 1048576,
+ "default_max_tokens": 32767,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "google/gemini-2.5-flash-lite-preview-09-2025",
+ "name": "Google: Gemini 2.5 Flash Lite Preview 09-2025",
+ "cost_per_1m_in": 0.09999999999999999,
+ "cost_per_1m_out": 0.39999999999999997,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 1048576,
+ "default_max_tokens": 32767,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "google/gemini-2.5-flash-preview-09-2025",
+ "name": "Google: Gemini 2.5 Flash Preview 09-2025",
+ "cost_per_1m_in": 0.3,
+ "cost_per_1m_out": 2.5,
+ "cost_per_1m_in_cached": 0.3833,
+ "cost_per_1m_out_cached": 0.075,
+ "context_window": 1048576,
+ "default_max_tokens": 32767,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "google/gemini-2.5-pro",
+ "name": "Google: Gemini 2.5 Pro",
+ "cost_per_1m_in": 1.25,
+ "cost_per_1m_out": 10,
+ "cost_per_1m_in_cached": 1.625,
+ "cost_per_1m_out_cached": 0.125,
+ "context_window": 1048576,
+ "default_max_tokens": 32768,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "google/gemini-2.5-pro-preview-05-06",
+ "name": "Google: Gemini 2.5 Pro Preview 05-06",
+ "cost_per_1m_in": 1.25,
+ "cost_per_1m_out": 10,
+ "cost_per_1m_in_cached": 1.625,
+ "cost_per_1m_out_cached": 0.125,
+ "context_window": 1048576,
+ "default_max_tokens": 32768,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "google/gemini-2.5-pro-preview",
+ "name": "Google: Gemini 2.5 Pro Preview 06-05",
+ "cost_per_1m_in": 1.25,
+ "cost_per_1m_out": 10,
+ "cost_per_1m_in_cached": 1.625,
+ "cost_per_1m_out_cached": 0.125,
+ "context_window": 1048576,
+ "default_max_tokens": 32768,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "inception/mercury",
+ "name": "Inception: Mercury",
+ "cost_per_1m_in": 0.25,
+ "cost_per_1m_out": 1,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 128000,
+ "default_max_tokens": 8192,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "inception/mercury-coder",
+ "name": "Inception: Mercury Coder",
+ "cost_per_1m_in": 0.25,
+ "cost_per_1m_out": 1,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 128000,
+ "default_max_tokens": 8192,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "meituan/longcat-flash-chat:free",
+ "name": "Meituan: LongCat Flash Chat (free)",
+ "cost_per_1m_in": 0,
+ "cost_per_1m_out": 0,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 65536,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "meta-llama/llama-3-70b-instruct",
+ "name": "Meta: Llama 3 70B Instruct",
+ "cost_per_1m_in": 0.3,
+ "cost_per_1m_out": 0.39999999999999997,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 8192,
+ "default_max_tokens": 8192,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "meta-llama/llama-3-8b-instruct",
+ "name": "Meta: Llama 3 8B Instruct",
+ "cost_per_1m_in": 0.03,
+ "cost_per_1m_out": 0.06,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 8192,
+ "default_max_tokens": 8192,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "meta-llama/llama-3.1-405b-instruct",
+ "name": "Meta: Llama 3.1 405B Instruct",
+ "cost_per_1m_in": 1,
+ "cost_per_1m_out": 3,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 13107,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "meta-llama/llama-3.1-70b-instruct",
+ "name": "Meta: Llama 3.1 70B Instruct",
+ "cost_per_1m_in": 0.39999999999999997,
+ "cost_per_1m_out": 0.39999999999999997,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 8192,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "meta-llama/llama-3.1-8b-instruct",
+ "name": "Meta: Llama 3.1 8B Instruct",
+ "cost_per_1m_in": 0.02,
+ "cost_per_1m_out": 0.03,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 8192,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "meta-llama/llama-3.2-3b-instruct",
+ "name": "Meta: Llama 3.2 3B Instruct",
+ "cost_per_1m_in": 0.03,
+ "cost_per_1m_out": 0.049999999999999996,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 32768,
+ "default_max_tokens": 16000,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "meta-llama/llama-3.3-70b-instruct",
+ "name": "Meta: Llama 3.3 70B Instruct",
+ "cost_per_1m_in": 0.6,
+ "cost_per_1m_out": 0.6,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 65536,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "meta-llama/llama-3.3-70b-instruct:free",
+ "name": "Meta: Llama 3.3 70B Instruct (free)",
+ "cost_per_1m_in": 0,
+ "cost_per_1m_out": 0,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 128000,
+ "default_max_tokens": 2014,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "meta-llama/llama-3.3-8b-instruct:free",
+ "name": "Meta: Llama 3.3 8B Instruct (free)",
+ "cost_per_1m_in": 0,
+ "cost_per_1m_out": 0,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 128000,
+ "default_max_tokens": 2014,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "meta-llama/llama-4-maverick",
+ "name": "Meta: Llama 4 Maverick",
+ "cost_per_1m_in": 0.22,
+ "cost_per_1m_out": 0.88,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 1048576,
+ "default_max_tokens": 65536,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "meta-llama/llama-4-maverick:free",
+ "name": "Meta: Llama 4 Maverick (free)",
+ "cost_per_1m_in": 0,
+ "cost_per_1m_out": 0,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 128000,
+ "default_max_tokens": 2014,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "meta-llama/llama-4-scout",
+ "name": "Meta: Llama 4 Scout",
+ "cost_per_1m_in": 0.15,
+ "cost_per_1m_out": 0.6,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 1048576,
+ "default_max_tokens": 104857,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "meta-llama/llama-4-scout:free",
+ "name": "Meta: Llama 4 Scout (free)",
+ "cost_per_1m_in": 0,
+ "cost_per_1m_out": 0,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 128000,
+ "default_max_tokens": 2014,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "microsoft/phi-3-medium-128k-instruct",
+ "name": "Microsoft: Phi-3 Medium 128K Instruct",
+ "cost_per_1m_in": 1,
+ "cost_per_1m_out": 1,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 128000,
+ "default_max_tokens": 12800,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "microsoft/phi-3-mini-128k-instruct",
+ "name": "Microsoft: Phi-3 Mini 128K Instruct",
+ "cost_per_1m_in": 0.09999999999999999,
+ "cost_per_1m_out": 0.09999999999999999,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 128000,
+ "default_max_tokens": 12800,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "microsoft/phi-3.5-mini-128k-instruct",
+ "name": "Microsoft: Phi-3.5 Mini 128K Instruct",
+ "cost_per_1m_in": 0.09999999999999999,
+ "cost_per_1m_out": 0.09999999999999999,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 128000,
+ "default_max_tokens": 12800,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "minimax/minimax-m2:free",
+ "name": "MiniMax: MiniMax M2 (free)",
+ "cost_per_1m_in": 0,
+ "cost_per_1m_out": 0,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 204800,
+ "default_max_tokens": 65536,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": false
+ },
+ {
+ "id": "mistralai/mistral-large",
+ "name": "Mistral Large",
+ "cost_per_1m_in": 2,
+ "cost_per_1m_out": 6,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 128000,
+ "default_max_tokens": 12800,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "mistralai/mistral-large-2407",
+ "name": "Mistral Large 2407",
+ "cost_per_1m_in": 2,
+ "cost_per_1m_out": 6,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 13107,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "mistralai/mistral-large-2411",
+ "name": "Mistral Large 2411",
+ "cost_per_1m_in": 2,
+ "cost_per_1m_out": 6,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 13107,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "mistralai/mistral-small",
+ "name": "Mistral Small",
+ "cost_per_1m_in": 0.19999999999999998,
+ "cost_per_1m_out": 0.6,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 32768,
+ "default_max_tokens": 3276,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "mistralai/mistral-tiny",
+ "name": "Mistral Tiny",
+ "cost_per_1m_in": 0.25,
+ "cost_per_1m_out": 0.25,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 32768,
+ "default_max_tokens": 3276,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "mistralai/codestral-2501",
+ "name": "Mistral: Codestral 2501",
+ "cost_per_1m_in": 0.3,
+ "cost_per_1m_out": 0.8999999999999999,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 262144,
+ "default_max_tokens": 26214,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "mistralai/codestral-2508",
+ "name": "Mistral: Codestral 2508",
+ "cost_per_1m_in": 0.3,
+ "cost_per_1m_out": 0.8999999999999999,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 256000,
+ "default_max_tokens": 25600,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "mistralai/devstral-medium",
+ "name": "Mistral: Devstral Medium",
+ "cost_per_1m_in": 0.39999999999999997,
+ "cost_per_1m_out": 2,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 13107,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "mistralai/devstral-small-2505",
+ "name": "Mistral: Devstral Small 2505",
+ "cost_per_1m_in": 0.049999999999999996,
+ "cost_per_1m_out": 0.22,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 65536,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "mistralai/devstral-small-2505:free",
+ "name": "Mistral: Devstral Small 2505 (free)",
+ "cost_per_1m_in": 0,
+ "cost_per_1m_out": 0,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 32768,
+ "default_max_tokens": 3276,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "mistralai/magistral-medium-2506",
+ "name": "Mistral: Magistral Medium 2506",
+ "cost_per_1m_in": 2,
+ "cost_per_1m_out": 5,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 40960,
+ "default_max_tokens": 20000,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": false
+ },
+ {
+ "id": "mistralai/magistral-medium-2506:thinking",
+ "name": "Mistral: Magistral Medium 2506 (thinking)",
+ "cost_per_1m_in": 2,
+ "cost_per_1m_out": 5,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 40960,
+ "default_max_tokens": 20000,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": false
+ },
+ {
+ "id": "mistralai/magistral-small-2506",
+ "name": "Mistral: Magistral Small 2506",
+ "cost_per_1m_in": 0.5,
+ "cost_per_1m_out": 1.5,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 40000,
+ "default_max_tokens": 20000,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": false
+ },
+ {
+ "id": "mistralai/ministral-8b",
+ "name": "Mistral: Ministral 8B",
+ "cost_per_1m_in": 0.09999999999999999,
+ "cost_per_1m_out": 0.09999999999999999,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 13107,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "mistralai/mistral-7b-instruct",
+ "name": "Mistral: Mistral 7B Instruct",
+ "cost_per_1m_in": 0.028,
+ "cost_per_1m_out": 0.054,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 32768,
+ "default_max_tokens": 8192,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "mistralai/mistral-7b-instruct:free",
+ "name": "Mistral: Mistral 7B Instruct (free)",
+ "cost_per_1m_in": 0,
+ "cost_per_1m_out": 0,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 32768,
+ "default_max_tokens": 8192,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "mistralai/mistral-7b-instruct-v0.3",
+ "name": "Mistral: Mistral 7B Instruct v0.3",
+ "cost_per_1m_in": 0.028,
+ "cost_per_1m_out": 0.054,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 32768,
+ "default_max_tokens": 8192,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "mistralai/mistral-medium-3",
+ "name": "Mistral: Mistral Medium 3",
+ "cost_per_1m_in": 0.39999999999999997,
+ "cost_per_1m_out": 2,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 13107,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "mistralai/mistral-medium-3.1",
+ "name": "Mistral: Mistral Medium 3.1",
+ "cost_per_1m_in": 0.39999999999999997,
+ "cost_per_1m_out": 2,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 13107,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "mistralai/mistral-nemo",
+ "name": "Mistral: Mistral Nemo",
+ "cost_per_1m_in": 0.15,
+ "cost_per_1m_out": 0.15,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 13107,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "mistralai/mistral-small-24b-instruct-2501",
+ "name": "Mistral: Mistral Small 3",
+ "cost_per_1m_in": 0.09999999999999999,
+ "cost_per_1m_out": 0.3,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 32768,
+ "default_max_tokens": 3276,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "mistralai/mistral-small-3.1-24b-instruct",
+ "name": "Mistral: Mistral Small 3.1 24B",
+ "cost_per_1m_in": 0.09999999999999999,
+ "cost_per_1m_out": 0.3,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 13107,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "mistralai/mistral-small-3.1-24b-instruct:free",
+ "name": "Mistral: Mistral Small 3.1 24B (free)",
+ "cost_per_1m_in": 0,
+ "cost_per_1m_out": 0,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 96000,
+ "default_max_tokens": 48000,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "mistralai/mistral-small-3.2-24b-instruct",
+ "name": "Mistral: Mistral Small 3.2 24B",
+ "cost_per_1m_in": 0.09999999999999999,
+ "cost_per_1m_out": 0.3,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 13107,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "mistralai/mistral-small-3.2-24b-instruct:free",
+ "name": "Mistral: Mistral Small 3.2 24B (free)",
+ "cost_per_1m_in": 0,
+ "cost_per_1m_out": 0,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 13107,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "mistralai/mixtral-8x22b-instruct",
+ "name": "Mistral: Mixtral 8x22B Instruct",
+ "cost_per_1m_in": 2,
+ "cost_per_1m_out": 6,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 65536,
+ "default_max_tokens": 6553,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "mistralai/mixtral-8x7b-instruct",
+ "name": "Mistral: Mixtral 8x7B Instruct",
+ "cost_per_1m_in": 0.54,
+ "cost_per_1m_out": 0.54,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 32768,
+ "default_max_tokens": 8192,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "mistralai/pixtral-12b",
+ "name": "Mistral: Pixtral 12B",
+ "cost_per_1m_in": 0.15,
+ "cost_per_1m_out": 0.15,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 13107,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "mistralai/pixtral-large-2411",
+ "name": "Mistral: Pixtral Large 2411",
+ "cost_per_1m_in": 2,
+ "cost_per_1m_out": 6,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 13107,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "mistralai/mistral-saba",
+ "name": "Mistral: Saba",
+ "cost_per_1m_in": 0.19999999999999998,
+ "cost_per_1m_out": 0.6,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 32768,
+ "default_max_tokens": 3276,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "moonshotai/kimi-k2",
+ "name": "MoonshotAI: Kimi K2 0711",
+ "cost_per_1m_in": 0.6,
+ "cost_per_1m_out": 2.5,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 8192,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "moonshotai/kimi-k2-0905",
+ "name": "MoonshotAI: Kimi K2 0905",
+ "cost_per_1m_in": 0.5,
+ "cost_per_1m_out": 2,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 262144,
+ "default_max_tokens": 26214,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "moonshotai/kimi-k2-0905:exacto",
+ "name": "MoonshotAI: Kimi K2 0905 (exacto)",
+ "cost_per_1m_in": 0.6,
+ "cost_per_1m_out": 2.5,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 262144,
+ "default_max_tokens": 26214,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "nvidia/llama-3.1-nemotron-70b-instruct",
+ "name": "NVIDIA: Llama 3.1 Nemotron 70B Instruct",
+ "cost_per_1m_in": 0.6,
+ "cost_per_1m_out": 0.6,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 8192,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "nvidia/llama-3.3-nemotron-super-49b-v1.5",
+ "name": "NVIDIA: Llama 3.3 Nemotron Super 49B V1.5",
+ "cost_per_1m_in": 0.09999999999999999,
+ "cost_per_1m_out": 0.39999999999999997,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 13107,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": false
+ },
+ {
+ "id": "nvidia/nemotron-nano-9b-v2",
+ "name": "NVIDIA: Nemotron Nano 9B V2",
+ "cost_per_1m_in": 0.04,
+ "cost_per_1m_out": 0.16,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 13107,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": false
+ },
+ {
+ "id": "nvidia/nemotron-nano-9b-v2:free",
+ "name": "NVIDIA: Nemotron Nano 9B V2 (free)",
+ "cost_per_1m_in": 0,
+ "cost_per_1m_out": 0,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 128000,
+ "default_max_tokens": 12800,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": false
+ },
+ {
+ "id": "nousresearch/deephermes-3-llama-3-8b-preview",
+ "name": "Nous: DeepHermes 3 Llama 3 8B Preview",
+ "cost_per_1m_in": 0.03,
+ "cost_per_1m_out": 0.11,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 65536,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "nousresearch/deephermes-3-mistral-24b-preview",
+ "name": "Nous: DeepHermes 3 Mistral 24B Preview",
+ "cost_per_1m_in": 0.15,
+ "cost_per_1m_out": 0.59,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 32768,
+ "default_max_tokens": 16384,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": false
+ },
+ {
+ "id": "nousresearch/hermes-3-llama-3.1-70b",
+ "name": "Nous: Hermes 3 70B Instruct",
+ "cost_per_1m_in": 0.39999999999999997,
+ "cost_per_1m_out": 0.39999999999999997,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 12288,
+ "default_max_tokens": 1228,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "openai/codex-mini",
+ "name": "OpenAI: Codex Mini",
+ "cost_per_1m_in": 1.5,
+ "cost_per_1m_out": 6,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0.375,
+ "context_window": 200000,
+ "default_max_tokens": 50000,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "openai/gpt-3.5-turbo",
+ "name": "OpenAI: GPT-3.5 Turbo",
+ "cost_per_1m_in": 0.5,
+ "cost_per_1m_out": 1.5,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 16385,
+ "default_max_tokens": 2048,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "openai/gpt-3.5-turbo-0613",
+ "name": "OpenAI: GPT-3.5 Turbo (older v0613)",
+ "cost_per_1m_in": 1,
+ "cost_per_1m_out": 2,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 4095,
+ "default_max_tokens": 2048,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "openai/gpt-3.5-turbo-16k",
+ "name": "OpenAI: GPT-3.5 Turbo 16k",
+ "cost_per_1m_in": 3,
+ "cost_per_1m_out": 4,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 16385,
+ "default_max_tokens": 2048,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "openai/gpt-4",
+ "name": "OpenAI: GPT-4",
+ "cost_per_1m_in": 30,
+ "cost_per_1m_out": 60,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 8191,
+ "default_max_tokens": 2048,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "openai/gpt-4-0314",
+ "name": "OpenAI: GPT-4 (older v0314)",
+ "cost_per_1m_in": 30,
+ "cost_per_1m_out": 60,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 8191,
+ "default_max_tokens": 2048,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "openai/gpt-4-turbo",
+ "name": "OpenAI: GPT-4 Turbo",
+ "cost_per_1m_in": 10,
+ "cost_per_1m_out": 30,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 128000,
+ "default_max_tokens": 2048,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "openai/gpt-4-1106-preview",
+ "name": "OpenAI: GPT-4 Turbo (older v1106)",
+ "cost_per_1m_in": 10,
+ "cost_per_1m_out": 30,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 128000,
+ "default_max_tokens": 2048,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "openai/gpt-4-turbo-preview",
+ "name": "OpenAI: GPT-4 Turbo Preview",
+ "cost_per_1m_in": 10,
+ "cost_per_1m_out": 30,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 128000,
+ "default_max_tokens": 2048,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "openai/gpt-4.1",
+ "name": "OpenAI: GPT-4.1",
+ "cost_per_1m_in": 2,
+ "cost_per_1m_out": 8,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0.5,
+ "context_window": 1047576,
+ "default_max_tokens": 16384,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "openai/gpt-4.1-mini",
+ "name": "OpenAI: GPT-4.1 Mini",
+ "cost_per_1m_in": 0.39999999999999997,
+ "cost_per_1m_out": 1.5999999999999999,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0.09999999999999999,
+ "context_window": 1047576,
+ "default_max_tokens": 104757,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "openai/gpt-4.1-nano",
+ "name": "OpenAI: GPT-4.1 Nano",
+ "cost_per_1m_in": 0.09999999999999999,
+ "cost_per_1m_out": 0.39999999999999997,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0.024999999999999998,
+ "context_window": 1047576,
+ "default_max_tokens": 16384,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "openai/gpt-4o",
+ "name": "OpenAI: GPT-4o",
+ "cost_per_1m_in": 2.5,
+ "cost_per_1m_out": 10,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 128000,
+ "default_max_tokens": 8192,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "openai/gpt-4o-2024-05-13",
+ "name": "OpenAI: GPT-4o (2024-05-13)",
+ "cost_per_1m_in": 5,
+ "cost_per_1m_out": 15,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 128000,
+ "default_max_tokens": 2048,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "openai/gpt-4o-2024-08-06",
+ "name": "OpenAI: GPT-4o (2024-08-06)",
+ "cost_per_1m_in": 2.5,
+ "cost_per_1m_out": 10,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 1.25,
+ "context_window": 128000,
+ "default_max_tokens": 8192,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "openai/gpt-4o-2024-11-20",
+ "name": "OpenAI: GPT-4o (2024-11-20)",
+ "cost_per_1m_in": 2.5,
+ "cost_per_1m_out": 10,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 1.25,
+ "context_window": 128000,
+ "default_max_tokens": 8192,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "openai/gpt-4o:extended",
+ "name": "OpenAI: GPT-4o (extended)",
+ "cost_per_1m_in": 6,
+ "cost_per_1m_out": 18,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 128000,
+ "default_max_tokens": 32000,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "openai/gpt-4o-audio-preview",
+ "name": "OpenAI: GPT-4o Audio",
+ "cost_per_1m_in": 2.5,
+ "cost_per_1m_out": 10,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 128000,
+ "default_max_tokens": 8192,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "openai/gpt-4o-mini",
+ "name": "OpenAI: GPT-4o-mini",
+ "cost_per_1m_in": 0.15,
+ "cost_per_1m_out": 0.6,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0.075,
+ "context_window": 128000,
+ "default_max_tokens": 8192,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "openai/gpt-4o-mini-2024-07-18",
+ "name": "OpenAI: GPT-4o-mini (2024-07-18)",
+ "cost_per_1m_in": 0.15,
+ "cost_per_1m_out": 0.6,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0.075,
+ "context_window": 128000,
+ "default_max_tokens": 8192,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "openai/gpt-5",
+ "name": "OpenAI: GPT-5",
+ "cost_per_1m_in": 1.25,
+ "cost_per_1m_out": 10,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0.125,
+ "context_window": 400000,
+ "default_max_tokens": 64000,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "openai/gpt-5-codex",
+ "name": "OpenAI: GPT-5 Codex",
+ "cost_per_1m_in": 1.25,
+ "cost_per_1m_out": 10,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0.125,
+ "context_window": 400000,
+ "default_max_tokens": 64000,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "openai/gpt-5-image",
+ "name": "OpenAI: GPT-5 Image",
+ "cost_per_1m_in": 10,
+ "cost_per_1m_out": 10,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 1.25,
+ "context_window": 400000,
+ "default_max_tokens": 64000,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "openai/gpt-5-image-mini",
+ "name": "OpenAI: GPT-5 Image Mini",
+ "cost_per_1m_in": 2.5,
+ "cost_per_1m_out": 2,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0.25,
+ "context_window": 400000,
+ "default_max_tokens": 64000,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "openai/gpt-5-mini",
+ "name": "OpenAI: GPT-5 Mini",
+ "cost_per_1m_in": 0.25,
+ "cost_per_1m_out": 2,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0.024999999999999998,
+ "context_window": 400000,
+ "default_max_tokens": 64000,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "openai/gpt-5-nano",
+ "name": "OpenAI: GPT-5 Nano",
+ "cost_per_1m_in": 0.049999999999999996,
+ "cost_per_1m_out": 0.39999999999999997,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0.01,
+ "context_window": 400000,
+ "default_max_tokens": 40000,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "openai/gpt-5-pro",
+ "name": "OpenAI: GPT-5 Pro",
+ "cost_per_1m_in": 15,
+ "cost_per_1m_out": 120,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 400000,
+ "default_max_tokens": 64000,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "openai/gpt-oss-120b",
+ "name": "OpenAI: gpt-oss-120b",
+ "cost_per_1m_in": 0.04,
+ "cost_per_1m_out": 0.39999999999999997,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 65536,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": false
+ },
+ {
+ "id": "openai/gpt-oss-120b:exacto",
+ "name": "OpenAI: gpt-oss-120b (exacto)",
+ "cost_per_1m_in": 0.049999999999999996,
+ "cost_per_1m_out": 0.24,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 13107,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": false
+ },
+ {
+ "id": "openai/gpt-oss-20b",
+ "name": "OpenAI: gpt-oss-20b",
+ "cost_per_1m_in": 0.04,
+ "cost_per_1m_out": 0.15,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 13107,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": false
+ },
+ {
+ "id": "openai/gpt-oss-20b:free",
+ "name": "OpenAI: gpt-oss-20b (free)",
+ "cost_per_1m_in": 0,
+ "cost_per_1m_out": 0,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 65536,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": false
+ },
+ {
+ "id": "openai/o1",
+ "name": "OpenAI: o1",
+ "cost_per_1m_in": 15,
+ "cost_per_1m_out": 60,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 7.5,
+ "context_window": 200000,
+ "default_max_tokens": 50000,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "openai/o3",
+ "name": "OpenAI: o3",
+ "cost_per_1m_in": 2,
+ "cost_per_1m_out": 8,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0.5,
+ "context_window": 200000,
+ "default_max_tokens": 50000,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "openai/o3-deep-research",
+ "name": "OpenAI: o3 Deep Research",
+ "cost_per_1m_in": 10,
+ "cost_per_1m_out": 40,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 2.5,
+ "context_window": 200000,
+ "default_max_tokens": 50000,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "openai/o3-mini",
+ "name": "OpenAI: o3 Mini",
+ "cost_per_1m_in": 1.1,
+ "cost_per_1m_out": 4.4,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0.55,
+ "context_window": 200000,
+ "default_max_tokens": 50000,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "openai/o3-mini-high",
+ "name": "OpenAI: o3 Mini High",
+ "cost_per_1m_in": 1.1,
+ "cost_per_1m_out": 4.4,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0.55,
+ "context_window": 200000,
+ "default_max_tokens": 50000,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "openai/o3-pro",
+ "name": "OpenAI: o3 Pro",
+ "cost_per_1m_in": 20,
+ "cost_per_1m_out": 80,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 200000,
+ "default_max_tokens": 50000,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "openai/o4-mini",
+ "name": "OpenAI: o4 Mini",
+ "cost_per_1m_in": 1.1,
+ "cost_per_1m_out": 4.4,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0.275,
+ "context_window": 200000,
+ "default_max_tokens": 50000,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "openai/o4-mini-deep-research",
+ "name": "OpenAI: o4 Mini Deep Research",
+ "cost_per_1m_in": 2,
+ "cost_per_1m_out": 8,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0.5,
+ "context_window": 200000,
+ "default_max_tokens": 50000,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "openai/o4-mini-high",
+ "name": "OpenAI: o4 Mini High",
+ "cost_per_1m_in": 1.1,
+ "cost_per_1m_out": 4.4,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0.275,
+ "context_window": 200000,
+ "default_max_tokens": 50000,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "qwen/qwen-2.5-72b-instruct",
+ "name": "Qwen2.5 72B Instruct",
+ "cost_per_1m_in": 0.13,
+ "cost_per_1m_out": 0.39999999999999997,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 13107,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "qwen/qwq-32b",
+ "name": "Qwen: QwQ 32B",
+ "cost_per_1m_in": 0.15,
+ "cost_per_1m_out": 0.58,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 65536,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": false
+ },
+ {
+ "id": "qwen/qwen-plus-2025-07-28",
+ "name": "Qwen: Qwen Plus 0728",
+ "cost_per_1m_in": 0.39999999999999997,
+ "cost_per_1m_out": 1.2,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 1000000,
+ "default_max_tokens": 16384,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "qwen/qwen-plus-2025-07-28:thinking",
+ "name": "Qwen: Qwen Plus 0728 (thinking)",
+ "cost_per_1m_in": 0.39999999999999997,
+ "cost_per_1m_out": 4,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 1000000,
+ "default_max_tokens": 16384,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": false
+ },
+ {
+ "id": "qwen/qwen-vl-max",
+ "name": "Qwen: Qwen VL Max",
+ "cost_per_1m_in": 0.7999999999999999,
+ "cost_per_1m_out": 3.1999999999999997,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 4096,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "qwen/qwen-max",
+ "name": "Qwen: Qwen-Max ",
+ "cost_per_1m_in": 1.5999999999999999,
+ "cost_per_1m_out": 6.3999999999999995,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0.64,
+ "context_window": 32768,
+ "default_max_tokens": 4096,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "qwen/qwen-plus",
+ "name": "Qwen: Qwen-Plus",
+ "cost_per_1m_in": 0.39999999999999997,
+ "cost_per_1m_out": 1.2,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0.16,
+ "context_window": 131072,
+ "default_max_tokens": 4096,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "qwen/qwen-turbo",
+ "name": "Qwen: Qwen-Turbo",
+ "cost_per_1m_in": 0.049999999999999996,
+ "cost_per_1m_out": 0.19999999999999998,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0.02,
+ "context_window": 1000000,
+ "default_max_tokens": 4096,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "qwen/qwen3-14b",
+ "name": "Qwen: Qwen3 14B",
+ "cost_per_1m_in": 0.06,
+ "cost_per_1m_out": 0.24,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 40960,
+ "default_max_tokens": 20480,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": false
+ },
+ {
+ "id": "qwen/qwen3-235b-a22b",
+ "name": "Qwen: Qwen3 235B A22B",
+ "cost_per_1m_in": 0.22,
+ "cost_per_1m_out": 0.88,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 8192,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": false
+ },
+ {
+ "id": "qwen/qwen3-235b-a22b-2507",
+ "name": "Qwen: Qwen3 235B A22B Instruct 2507",
+ "cost_per_1m_in": 0.35,
+ "cost_per_1m_out": 1.2,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 262144,
+ "default_max_tokens": 131072,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "qwen/qwen3-235b-a22b-thinking-2507",
+ "name": "Qwen: Qwen3 235B A22B Thinking 2507",
+ "cost_per_1m_in": 0.11,
+ "cost_per_1m_out": 0.6,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 262144,
+ "default_max_tokens": 131072,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": false
+ },
+ {
+ "id": "qwen/qwen3-30b-a3b",
+ "name": "Qwen: Qwen3 30B A3B",
+ "cost_per_1m_in": 0.09,
+ "cost_per_1m_out": 0.44999999999999996,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 65536,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": false
+ },
+ {
+ "id": "qwen/qwen3-30b-a3b-instruct-2507",
+ "name": "Qwen: Qwen3 30B A3B Instruct 2507",
+ "cost_per_1m_in": 0.08,
+ "cost_per_1m_out": 0.33,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 262144,
+ "default_max_tokens": 131072,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "qwen/qwen3-30b-a3b-thinking-2507",
+ "name": "Qwen: Qwen3 30B A3B Thinking 2507",
+ "cost_per_1m_in": 0.08,
+ "cost_per_1m_out": 0.29,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 262144,
+ "default_max_tokens": 131072,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": false
+ },
+ {
+ "id": "qwen/qwen3-32b",
+ "name": "Qwen: Qwen3 32B",
+ "cost_per_1m_in": 0.15,
+ "cost_per_1m_out": 0.5,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 4000,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": false
+ },
+ {
+ "id": "qwen/qwen3-4b:free",
+ "name": "Qwen: Qwen3 4B (free)",
+ "cost_per_1m_in": 0,
+ "cost_per_1m_out": 0,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 40960,
+ "default_max_tokens": 4096,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": false
+ },
+ {
+ "id": "qwen/qwen3-coder-30b-a3b-instruct",
+ "name": "Qwen: Qwen3 Coder 30B A3B Instruct",
+ "cost_per_1m_in": 0.07,
+ "cost_per_1m_out": 0.26,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 262144,
+ "default_max_tokens": 26214,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "qwen/qwen3-coder",
+ "name": "Qwen: Qwen3 Coder 480B A35B",
+ "cost_per_1m_in": 0.38,
+ "cost_per_1m_out": 1.53,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 262144,
+ "default_max_tokens": 131072,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": false
+ },
+ {
+ "id": "qwen/qwen3-coder:exacto",
+ "name": "Qwen: Qwen3 Coder 480B A35B (exacto)",
+ "cost_per_1m_in": 0.38,
+ "cost_per_1m_out": 1.53,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 262144,
+ "default_max_tokens": 131072,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": false
+ },
+ {
+ "id": "qwen/qwen3-coder:free",
+ "name": "Qwen: Qwen3 Coder 480B A35B (free)",
+ "cost_per_1m_in": 0,
+ "cost_per_1m_out": 0,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 262144,
+ "default_max_tokens": 26214,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "qwen/qwen3-coder-flash",
+ "name": "Qwen: Qwen3 Coder Flash",
+ "cost_per_1m_in": 0.3,
+ "cost_per_1m_out": 1.5,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0.08,
+ "context_window": 128000,
+ "default_max_tokens": 32768,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "qwen/qwen3-coder-plus",
+ "name": "Qwen: Qwen3 Coder Plus",
+ "cost_per_1m_in": 1,
+ "cost_per_1m_out": 5,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0.09999999999999999,
+ "context_window": 128000,
+ "default_max_tokens": 32768,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "qwen/qwen3-max",
+ "name": "Qwen: Qwen3 Max",
+ "cost_per_1m_in": 1.2,
+ "cost_per_1m_out": 6,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0.24,
+ "context_window": 256000,
+ "default_max_tokens": 16384,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "qwen/qwen3-next-80b-a3b-instruct",
+ "name": "Qwen: Qwen3 Next 80B A3B Instruct",
+ "cost_per_1m_in": 0.15,
+ "cost_per_1m_out": 1.5,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 262144,
+ "default_max_tokens": 26214,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "qwen/qwen3-next-80b-a3b-thinking",
+ "name": "Qwen: Qwen3 Next 80B A3B Thinking",
+ "cost_per_1m_in": 0.3,
+ "cost_per_1m_out": 0.3,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 262144,
+ "default_max_tokens": 131072,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": false
+ },
+ {
+ "id": "qwen/qwen3-vl-235b-a22b-instruct",
+ "name": "Qwen: Qwen3 VL 235B A22B Instruct",
+ "cost_per_1m_in": 0.5,
+ "cost_per_1m_out": 2.5,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 65536,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "qwen/qwen3-vl-30b-a3b-thinking",
+ "name": "Qwen: Qwen3 VL 30B A3B Thinking",
+ "cost_per_1m_in": 0.19999999999999998,
+ "cost_per_1m_out": 1,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 16384,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "qwen/qwen3-vl-8b-instruct",
+ "name": "Qwen: Qwen3 VL 8B Instruct",
+ "cost_per_1m_in": 0.08,
+ "cost_per_1m_out": 0.5,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 16384,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "qwen/qwen3-vl-8b-thinking",
+ "name": "Qwen: Qwen3 VL 8B Thinking",
+ "cost_per_1m_in": 0.18,
+ "cost_per_1m_out": 2.0999999999999996,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 256000,
+ "default_max_tokens": 16384,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "sao10k/l3-euryale-70b",
+ "name": "Sao10k: Llama 3 Euryale 70B v2.1",
+ "cost_per_1m_in": 1.48,
+ "cost_per_1m_out": 1.48,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 8192,
+ "default_max_tokens": 4096,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "stepfun-ai/step3",
+ "name": "StepFun: Step3",
+ "cost_per_1m_in": 0.5700000000000001,
+ "cost_per_1m_out": 1.42,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 65536,
+ "default_max_tokens": 32768,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "tngtech/deepseek-r1t2-chimera",
+ "name": "TNG: DeepSeek R1T2 Chimera",
+ "cost_per_1m_in": 0.3,
+ "cost_per_1m_out": 1.2,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 163840,
+ "default_max_tokens": 81920,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": false
+ },
+ {
+ "id": "thedrummer/rocinante-12b",
+ "name": "TheDrummer: Rocinante 12B",
+ "cost_per_1m_in": 0.16999999999999998,
+ "cost_per_1m_out": 0.43,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 32768,
+ "default_max_tokens": 3276,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "thedrummer/unslopnemo-12b",
+ "name": "TheDrummer: UnslopNemo 12B",
+ "cost_per_1m_in": 0.39999999999999997,
+ "cost_per_1m_out": 0.39999999999999997,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 32768,
+ "default_max_tokens": 3276,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "alibaba/tongyi-deepresearch-30b-a3b",
+ "name": "Tongyi DeepResearch 30B A3B",
+ "cost_per_1m_in": 0.09,
+ "cost_per_1m_out": 0.39999999999999997,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 65536,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": false
+ },
+ {
+ "id": "alibaba/tongyi-deepresearch-30b-a3b:free",
+ "name": "Tongyi DeepResearch 30B A3B (free)",
+ "cost_per_1m_in": 0,
+ "cost_per_1m_out": 0,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 65536,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": false
+ },
+ {
+ "id": "z-ai/glm-4-32b",
+ "name": "Z.AI: GLM 4 32B ",
+ "cost_per_1m_in": 0.09999999999999999,
+ "cost_per_1m_out": 0.09999999999999999,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 128000,
+ "default_max_tokens": 12800,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "z-ai/glm-4.5",
+ "name": "Z.AI: GLM 4.5",
+ "cost_per_1m_in": 0.35,
+ "cost_per_1m_out": 1.55,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 65536,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": false
+ },
+ {
+ "id": "z-ai/glm-4.5-air",
+ "name": "Z.AI: GLM 4.5 Air",
+ "cost_per_1m_in": 0.19999999999999998,
+ "cost_per_1m_out": 1.2,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 13107,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": false
+ },
+ {
+ "id": "z-ai/glm-4.5-air:free",
+ "name": "Z.AI: GLM 4.5 Air (free)",
+ "cost_per_1m_in": 0,
+ "cost_per_1m_out": 0,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 48000,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": false
+ },
+ {
+ "id": "z-ai/glm-4.5v",
+ "name": "Z.AI: GLM 4.5V",
+ "cost_per_1m_in": 0.6,
+ "cost_per_1m_out": 1.7999999999999998,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0.11,
+ "context_window": 65536,
+ "default_max_tokens": 8192,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "z-ai/glm-4.6",
+ "name": "Z.AI: GLM 4.6",
+ "cost_per_1m_in": 0.6,
+ "cost_per_1m_out": 2.2,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0.11,
+ "context_window": 204800,
+ "default_max_tokens": 65536,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": false
+ },
+ {
+ "id": "z-ai/glm-4.6:exacto",
+ "name": "Z.AI: GLM 4.6 (exacto)",
+ "cost_per_1m_in": 0.6,
+ "cost_per_1m_out": 1.9,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 202752,
+ "default_max_tokens": 20275,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": false
+ },
+ {
+ "id": "inclusionai/ling-1t",
+ "name": "inclusionAI: Ling-1T",
+ "cost_per_1m_in": 0.5700000000000001,
+ "cost_per_1m_out": 2.2800000000000002,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 65536,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "inclusionai/ring-1t",
+ "name": "inclusionAI: Ring 1T",
+ "cost_per_1m_in": 0.5700000000000001,
+ "cost_per_1m_out": 2.2800000000000002,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 65536,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": false
+ },
+ {
+ "id": "x-ai/grok-3",
+ "name": "xAI: Grok 3",
+ "cost_per_1m_in": 5,
+ "cost_per_1m_out": 25,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 1.25,
+ "context_window": 131072,
+ "default_max_tokens": 13107,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "x-ai/grok-3-beta",
+ "name": "xAI: Grok 3 Beta",
+ "cost_per_1m_in": 5,
+ "cost_per_1m_out": 25,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 1.25,
+ "context_window": 131072,
+ "default_max_tokens": 13107,
+ "can_reason": false,
+ "has_reasoning_efforts": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "x-ai/grok-3-mini",
+ "name": "xAI: Grok 3 Mini",
+ "cost_per_1m_in": 0.3,
+ "cost_per_1m_out": 0.5,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0.075,
+ "context_window": 131072,
+ "default_max_tokens": 13107,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": false
+ },
+ {
+ "id": "x-ai/grok-3-mini-beta",
+ "name": "xAI: Grok 3 Mini Beta",
+ "cost_per_1m_in": 0.3,
+ "cost_per_1m_out": 0.5,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0.075,
+ "context_window": 131072,
+ "default_max_tokens": 13107,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": false
+ },
+ {
+ "id": "x-ai/grok-4",
+ "name": "xAI: Grok 4",
+ "cost_per_1m_in": 3,
+ "cost_per_1m_out": 15,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0.75,
+ "context_window": 256000,
+ "default_max_tokens": 25600,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "x-ai/grok-4-fast",
+ "name": "xAI: Grok 4 Fast",
+ "cost_per_1m_in": 0.19999999999999998,
+ "cost_per_1m_out": 0.5,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0.049999999999999996,
+ "context_window": 2000000,
+ "default_max_tokens": 15000,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "x-ai/grok-code-fast-1",
+ "name": "xAI: Grok Code Fast 1",
+ "cost_per_1m_in": 0.19999999999999998,
+ "cost_per_1m_out": 1.5,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0.02,
+ "context_window": 256000,
+ "default_max_tokens": 5000,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "supports_attachments": false
+ }
+ ],
+ "default_headers": {
+ "HTTP-Referer": "https://charm.land",
+ "X-Title": "Crush"
+ }
+}
@@ -0,0 +1,71 @@
+{
+ "name": "Venice AI",
+ "id": "venice",
+ "type": "openai",
+ "api_key": "$VENICE_API_KEY",
+ "api_endpoint": "https://api.venice.ai/api/v1",
+ "default_large_model_id": "qwen3-235b:strip_thinking_response=true",
+ "default_small_model_id": "mistral-31-24b",
+ "models": [
+ {
+ "id": "qwen3-235b:strip_thinking_response=true",
+ "name": "Venice Large (qwen3-235b)",
+ "cost_per_1m_in": 1.5,
+ "cost_per_1m_out": 6,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 50000,
+ "can_reason": true,
+ "supports_attachments": false
+ },
+ {
+ "id": "qwen3-4b:strip_thinking_response=true",
+ "name": "Venice Small (qwen3-4b)",
+ "cost_per_1m_in": 0.15,
+ "cost_per_1m_out": 0.6,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 32768,
+ "default_max_tokens": 25000,
+ "can_reason": true,
+ "supports_attachments": false
+ },
+ {
+ "id": "mistral-31-24b",
+ "name": "Venice Medium (mistral-31-24b)",
+ "cost_per_1m_in": 0.5,
+ "cost_per_1m_out": 2,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 50000,
+ "can_reason": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "llama-3.2-3b",
+ "name": "Llama 3.2 3B",
+ "cost_per_1m_in": 0.15,
+ "cost_per_1m_out": 0.6,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 25000,
+ "can_reason": false,
+ "supports_attachments": false
+ },
+ {
+ "id": "llama-3.3-70b",
+ "name": "Llama 3.3 70B",
+ "cost_per_1m_in": 0.7,
+ "cost_per_1m_out": 2.8,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 65536,
+ "default_max_tokens": 32000,
+ "can_reason": false,
+ "supports_attachments": false
+ }
+ ]
+}
@@ -0,0 +1,35 @@
+{
+ "name": "Google Vertex AI",
+ "id": "vertexai",
+ "type": "vertexai",
+ "api_key": "",
+ "api_endpoint": "",
+ "default_large_model_id": "gemini-2.5-pro",
+ "default_small_model_id": "gemini-2.5-flash",
+ "models": [
+ {
+ "id": "gemini-2.5-pro",
+ "name": "Gemini 2.5 Pro",
+ "cost_per_1m_in": 1.25,
+ "cost_per_1m_out": 10,
+ "cost_per_1m_in_cached": 1.625,
+ "cost_per_1m_out_cached": 0.31,
+ "context_window": 1048576,
+ "default_max_tokens": 50000,
+ "can_reason": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "gemini-2.5-flash",
+ "name": "Gemini 2.5 Flash",
+ "cost_per_1m_in": 0.3,
+ "cost_per_1m_out": 2.5,
+ "cost_per_1m_in_cached": 0.3833,
+ "cost_per_1m_out_cached": 0.075,
+ "context_window": 1048576,
+ "default_max_tokens": 50000,
+ "can_reason": true,
+ "supports_attachments": true
+ }
+ ]
+}
@@ -0,0 +1,71 @@
+{
+ "name": "xAI",
+ "id": "xai",
+ "api_key": "$XAI_API_KEY",
+ "api_endpoint": "https://api.x.ai/v1",
+ "type": "openai",
+ "default_large_model_id": "grok-code-fast",
+ "default_small_model_id": "grok-3-mini",
+ "models": [
+ {
+ "id": "grok-code-fast",
+ "name": "Grok Code Fast",
+ "cost_per_1m_in": 0.2,
+ "cost_per_1m_out": 1.5,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0.02,
+ "context_window": 256000,
+ "default_max_tokens": 20000,
+ "can_reason": true,
+ "supports_attachments": false
+ },
+ {
+ "id": "grok-4",
+ "name": "Grok 4",
+ "cost_per_1m_in": 3,
+ "cost_per_1m_out": 15,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0.75,
+ "context_window": 256000,
+ "default_max_tokens": 20000,
+ "can_reason": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "grok-4-fast",
+ "name": "Grok 4 Fast",
+ "cost_per_1m_in": 0.2,
+ "cost_per_1m_out": 0.5,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0.05,
+ "context_window": 2000000,
+ "default_max_tokens": 200000,
+ "can_reason": true,
+ "supports_attachments": true
+ },
+ {
+ "id": "grok-3-mini",
+ "name": "Grok 3 Mini",
+ "cost_per_1m_in": 0.3,
+ "cost_per_1m_out": 0.5,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0.075,
+ "context_window": 131072,
+ "default_max_tokens": 20000,
+ "can_reason": true,
+ "supports_attachments": false
+ },
+ {
+ "id": "grok-3",
+ "name": "Grok 3",
+ "cost_per_1m_in": 3,
+ "cost_per_1m_out": 15,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0.75,
+ "context_window": 131072,
+ "default_max_tokens": 20000,
+ "can_reason": false,
+ "supports_attachments": false
+ }
+ ]
+}
@@ -0,0 +1,52 @@
+{
+ "name": "Z.AI",
+ "id": "zai",
+ "api_key": "$ZAI_API_KEY",
+ "api_endpoint": "https://api.z.ai/api/coding/paas/v4",
+ "type": "openai",
+ "default_large_model_id": "glm-4.6",
+ "default_small_model_id": "glm-4.5-air",
+ "models": [
+ {
+ "id": "glm-4.6",
+ "name": "GLM-4.6",
+ "cost_per_1m_in": 0.6,
+ "cost_per_1m_out": 2.2,
+ "cost_per_1m_in_cached": 0.11,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 204800,
+ "default_max_tokens": 131072,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "default_reasoning_effort": "medium",
+ "supports_attachments": false
+ },
+ {
+ "id": "glm-4.5",
+ "name": "GLM-4.5",
+ "cost_per_1m_in": 0.6,
+ "cost_per_1m_out": 2.2,
+ "cost_per_1m_in_cached": 0.11,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 98304,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "default_reasoning_effort": "medium",
+ "supports_attachments": false
+ },
+ {
+ "id": "glm-4.5-air",
+ "name": "GLM-4.5-Air",
+ "cost_per_1m_in": 0.2,
+ "cost_per_1m_out": 1.1,
+ "cost_per_1m_in_cached": 0.03,
+ "context_window": 131072,
+ "default_max_tokens": 98304,
+ "can_reason": true,
+ "has_reasoning_efforts": true,
+ "default_reasoning_effort": "medium",
+ "supports_attachments": false
+ }
+ ]
+}
@@ -0,0 +1,33 @@
+// Package deprecated is used to serve the old verion of the provider config
+package deprecated
+
+import "github.com/charmbracelet/catwalk/pkg/catwalk"
+
+// Provider represents an AI provider configuration.
+type Provider struct {
+ Name string `json:"name"`
+ ID catwalk.InferenceProvider `json:"id"`
+ APIKey string `json:"api_key,omitempty"`
+ APIEndpoint string `json:"api_endpoint,omitempty"`
+ Type catwalk.Type `json:"type,omitempty"`
+ DefaultLargeModelID string `json:"default_large_model_id,omitempty"`
+ DefaultSmallModelID string `json:"default_small_model_id,omitempty"`
+ Models []Model `json:"models,omitempty"`
+ DefaultHeaders map[string]string `json:"default_headers,omitempty"`
+}
+
+// Model represents an AI model configuration.
+type Model struct {
+ ID string `json:"id"`
+ Name string `json:"name"`
+ CostPer1MIn float64 `json:"cost_per_1m_in"`
+ CostPer1MOut float64 `json:"cost_per_1m_out"`
+ CostPer1MInCached float64 `json:"cost_per_1m_in_cached"`
+ CostPer1MOutCached float64 `json:"cost_per_1m_out_cached"`
+ ContextWindow int64 `json:"context_window"`
+ DefaultMaxTokens int64 `json:"default_max_tokens"`
+ CanReason bool `json:"can_reason"`
+ HasReasoningEffort bool `json:"has_reasoning_efforts"`
+ DefaultReasoningEffort string `json:"default_reasoning_effort,omitempty"`
+ SupportsImages bool `json:"supports_attachments"`
+}
@@ -0,0 +1,159 @@
+package deprecated
+
+import (
+ _ "embed"
+ "encoding/json"
+ "log"
+)
+
+//go:embed configs/openai.json
+var openAIConfig []byte
+
+//go:embed configs/anthropic.json
+var anthropicConfig []byte
+
+//go:embed configs/gemini.json
+var geminiConfig []byte
+
+//go:embed configs/openrouter.json
+var openRouterConfig []byte
+
+//go:embed configs/azure.json
+var azureConfig []byte
+
+//go:embed configs/vertexai.json
+var vertexAIConfig []byte
+
+//go:embed configs/xai.json
+var xAIConfig []byte
+
+//go:embed configs/zai.json
+var zAIConfig []byte
+
+//go:embed configs/bedrock.json
+var bedrockConfig []byte
+
+//go:embed configs/groq.json
+var groqConfig []byte
+
+//go:embed configs/cerebras.json
+var cerebrasConfig []byte
+
+//go:embed configs/venice.json
+var veniceConfig []byte
+
+//go:embed configs/chutes.json
+var chutesConfig []byte
+
+//go:embed configs/deepseek.json
+var deepSeekConfig []byte
+
+//go:embed configs/huggingface.json
+var huggingFaceConfig []byte
+
+//go:embed configs/aihubmix.json
+var aiHubMixConfig []byte
+
+// ProviderFunc is a function that returns a Provider.
+type ProviderFunc func() Provider
+
+var providerRegistry = []ProviderFunc{
+ anthropicProvider,
+ openAIProvider,
+ geminiProvider,
+ azureProvider,
+ bedrockProvider,
+ vertexAIProvider,
+ xAIProvider,
+ zAIProvider,
+ groqProvider,
+ openRouterProvider,
+ cerebrasProvider,
+ veniceProvider,
+ chutesProvider,
+ deepSeekProvider,
+ huggingFaceProvider,
+ aiHubMixProvider,
+}
+
+// GetAll returns all registered providers.
+func GetAll() []Provider {
+ providers := make([]Provider, 0, len(providerRegistry))
+ for _, providerFunc := range providerRegistry {
+ providers = append(providers, providerFunc())
+ }
+ return providers
+}
+
+func loadProviderFromConfig(configData []byte) Provider {
+ var p Provider
+ if err := json.Unmarshal(configData, &p); err != nil {
+ log.Printf("Error loading provider config: %v", err)
+ return Provider{}
+ }
+ return p
+}
+
+func openAIProvider() Provider {
+ return loadProviderFromConfig(openAIConfig)
+}
+
+func anthropicProvider() Provider {
+ return loadProviderFromConfig(anthropicConfig)
+}
+
+func geminiProvider() Provider {
+ return loadProviderFromConfig(geminiConfig)
+}
+
+func azureProvider() Provider {
+ return loadProviderFromConfig(azureConfig)
+}
+
+func bedrockProvider() Provider {
+ return loadProviderFromConfig(bedrockConfig)
+}
+
+func vertexAIProvider() Provider {
+ return loadProviderFromConfig(vertexAIConfig)
+}
+
+func xAIProvider() Provider {
+ return loadProviderFromConfig(xAIConfig)
+}
+
+func zAIProvider() Provider {
+ return loadProviderFromConfig(zAIConfig)
+}
+
+func openRouterProvider() Provider {
+ return loadProviderFromConfig(openRouterConfig)
+}
+
+func groqProvider() Provider {
+ return loadProviderFromConfig(groqConfig)
+}
+
+func cerebrasProvider() Provider {
+ return loadProviderFromConfig(cerebrasConfig)
+}
+
+func veniceProvider() Provider {
+ return loadProviderFromConfig(veniceConfig)
+}
+
+func chutesProvider() Provider {
+ return loadProviderFromConfig(chutesConfig)
+}
+
+func deepSeekProvider() Provider {
+ return loadProviderFromConfig(deepSeekConfig)
+}
+
+func huggingFaceProvider() Provider {
+ return loadProviderFromConfig(huggingFaceConfig)
+}
+
+func aiHubMixProvider() Provider {
+ return loadProviderFromConfig(aiHubMixConfig)
+}
@@ -3,7 +3,7 @@
"id": "aihubmix",
"api_key": "$AIHUBMIX_API_KEY",
"api_endpoint": "https://aihubmix.com/v1",
- "type": "openai",
+ "type": "openai-compat",
"default_large_model_id": "claude-sonnet-4-5",
"default_small_model_id": "claude-3-5-haiku",
"default_headers": {
@@ -17,7 +17,12 @@
"context_window": 400000,
"default_max_tokens": 128000,
"can_reason": true,
- "has_reasoning_efforts": false,
+ "reasoning_levels": [
+ "minimal",
+ "low",
+ "medium",
+ "high"
+ ],
"default_reasoning_effort": "minimal",
"supports_attachments": true
},
@@ -31,7 +36,11 @@
"context_window": 400000,
"default_max_tokens": 128000,
"can_reason": true,
- "has_reasoning_efforts": false,
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
"default_reasoning_effort": "low",
"supports_attachments": true
},
@@ -45,7 +54,11 @@
"context_window": 400000,
"default_max_tokens": 128000,
"can_reason": true,
- "has_reasoning_efforts": false,
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
"default_reasoning_effort": "low",
"supports_attachments": true
},
@@ -59,7 +72,11 @@
"context_window": 200000,
"default_max_tokens": 50000,
"can_reason": true,
- "has_reasoning_efforts": true,
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
"default_reasoning_effort": "medium",
"supports_attachments": true
},
@@ -87,7 +104,11 @@
"context_window": 200000,
"default_max_tokens": 50000,
"can_reason": true,
- "has_reasoning_efforts": true,
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
"default_reasoning_effort": "medium",
"supports_attachments": true
},
@@ -101,7 +122,11 @@
"context_window": 200000,
"default_max_tokens": 50000,
"can_reason": true,
- "has_reasoning_efforts": true,
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
"default_reasoning_effort": "medium",
"supports_attachments": true
},
@@ -163,7 +188,11 @@
"context_window": 200000,
"default_max_tokens": 50000,
"can_reason": true,
- "has_reasoning_efforts": true,
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
"default_reasoning_effort": "medium",
"supports_attachments": false
},
@@ -193,4 +222,4 @@
"supports_attachments": true
}
]
-}
+}
@@ -1,7 +1,7 @@
{
"name": "Cerebras",
"id": "cerebras",
- "type": "openai",
+ "type": "openai-compat",
"api_key": "$CEREBRAS_API_KEY",
"api_endpoint": "https://api.cerebras.ai/v1",
"default_large_model_id": "qwen-3-coder-480b",
@@ -45,7 +45,11 @@
"context_window": 128000,
"default_max_tokens": 65536,
"can_reason": true,
- "has_reasoning_efforts": true,
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
"default_reasoning_efforts": "medium",
"supports_attachments": false
},
@@ -76,7 +80,13 @@
"cost_per_1m_out": 1.2,
"context_window": 131072,
"default_max_tokens": 16384,
- "can_reason": false,
+ "can_reason": true,
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
+ "default_reasoning_efforts": "medium",
"supports_attachments": false
},
{
@@ -86,7 +96,13 @@
"cost_per_1m_out": 1.2,
"context_window": 128000,
"default_max_tokens": 32768,
- "can_reason": false,
+ "can_reason": true,
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
+ "default_reasoning_efforts": "medium",
"supports_attachments": false
},
{
@@ -96,7 +112,13 @@
"cost_per_1m_out": 2.0,
"context_window": 131072,
"default_max_tokens": 65536,
- "can_reason": false,
+ "can_reason": true,
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
+ "default_reasoning_efforts": "medium",
"supports_attachments": false
}
]
@@ -1,7 +1,7 @@
{
"name": "Chutes",
"id": "chutes",
- "type": "openai",
+ "type": "openai-compat",
"api_key": "$CHUTES_API_KEY",
"api_endpoint": "https://llm.chutes.ai/v1",
"default_large_model_id": "Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8",
@@ -15,7 +15,11 @@
"context_window": 262000,
"default_max_tokens": 32768,
"can_reason": true,
- "has_reasoning_efforts": true,
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
"default_reasoning_efforts": "medium",
"supports_attachments": true
},
@@ -27,7 +31,11 @@
"context_window": 98000,
"default_max_tokens": 32768,
"can_reason": true,
- "has_reasoning_efforts": true,
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
"default_reasoning_efforts": "medium",
"supports_attachments": true
},
@@ -39,7 +47,11 @@
"context_window": 75000,
"default_max_tokens": 32768,
"can_reason": true,
- "has_reasoning_efforts": true,
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
"default_reasoning_efforts": "medium",
"supports_attachments": true
},
@@ -51,7 +63,11 @@
"context_window": 75000,
"default_max_tokens": 32768,
"can_reason": true,
- "has_reasoning_efforts": true,
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
"default_reasoning_efforts": "medium",
"supports_attachments": true
},
@@ -85,20 +101,28 @@
"context_window": 131072,
"default_max_tokens": 32768,
"can_reason": true,
- "has_reasoning_efforts": true,
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
"default_reasoning_efforts": "medium",
"supports_attachments": true
},
{
"id": "tngtech/DeepSeek-TNG-R1T2-Chimera",
"name": "DeepSeek TNG R1T2 Chimera",
- "cost_per_1m_in": 0.20,
- "cost_per_1m_out": 0.80,
+ "cost_per_1m_in": 0.2,
+ "cost_per_1m_out": 0.8,
"context_window": 262144,
"default_max_tokens": 65536,
"can_reason": true,
- "has_reasoning_efforts": true,
- "default_reasoning_efforts": "high",
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
+ "default_reasoning_efforts": "medium",
"supports_attachments": true
},
{
@@ -109,7 +133,11 @@
"context_window": 75000,
"default_max_tokens": 32768,
"can_reason": true,
- "has_reasoning_efforts": true,
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
"default_reasoning_efforts": "medium",
"supports_attachments": true
},
@@ -132,19 +160,27 @@
"context_window": 131072,
"default_max_tokens": 32768,
"can_reason": true,
- "has_reasoning_efforts": true,
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
"default_reasoning_efforts": "medium",
"supports_attachments": true
},
{
"id": "openai/gpt-oss-120b",
"name": "GPT OSS 120B",
- "cost_per_1m_in": 0.10,
+ "cost_per_1m_in": 0.1,
"cost_per_1m_out": 0.41,
"context_window": 131072,
"default_max_tokens": 32768,
"can_reason": true,
- "has_reasoning_efforts": true,
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
"default_reasoning_efforts": "medium",
"supports_attachments": true
},
@@ -189,15 +225,19 @@
"context_window": 32768,
"default_max_tokens": 8192,
"can_reason": true,
- "has_reasoning_efforts": true,
- "default_reasoning_efforts": "high",
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
+ "default_reasoning_efforts": "medium",
"supports_attachments": true
},
{
"id": "deepseek-ai/DeepSeek-V3.1",
"name": "DeepSeek V3.1",
- "cost_per_1m_in": 0.20,
- "cost_per_1m_out": 0.80,
+ "cost_per_1m_in": 0.2,
+ "cost_per_1m_out": 0.8,
"context_window": 163840,
"default_max_tokens": 32768,
"can_reason": false,
@@ -207,12 +247,16 @@
{
"id": "deepseek-ai/DeepSeek-V3.1:THINKING",
"name": "DeepSeek V3.1 Reasoning",
- "cost_per_1m_in": 0.20,
- "cost_per_1m_out": 0.80,
+ "cost_per_1m_in": 0.2,
+ "cost_per_1m_out": 0.8,
"context_window": 163840,
"default_max_tokens": 32768,
"can_reason": true,
- "has_reasoning_efforts": true,
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
"default_reasoning_efforts": "medium",
"supports_attachments": true
},
@@ -220,7 +264,7 @@
"id": "Qwen/Qwen3-30B-A3B-Instruct-2507",
"name": "Qwen3 30B A3B Instruct 2507",
"cost_per_1m_in": 0.05,
- "cost_per_1m_out": 0.20,
+ "cost_per_1m_out": 0.2,
"context_window": 262144,
"default_max_tokens": 32768,
"can_reason": false,
@@ -230,8 +274,8 @@
{
"id": "Qwen/Qwen3-Coder-30B-A3B-Instruct",
"name": "Qwen3 Coder 30B A3B Instruct",
- "cost_per_1m_in": 0.00,
- "cost_per_1m_out": 0.00,
+ "cost_per_1m_in": 0.0,
+ "cost_per_1m_out": 0.0,
"context_window": 262144,
"default_max_tokens": 32768,
"can_reason": false,
@@ -239,4 +283,4 @@
"supports_attachments": true
}
]
-}
+}
@@ -1,7 +1,7 @@
{
"name": "DeepSeek",
"id": "deepseek",
- "type": "openai",
+ "type": "openai-compat",
"api_key": "$DEEPSEEK_API_KEY",
"api_endpoint": "https://api.deepseek.com/v1",
"default_large_model_id": "deepseek-reasoner",
@@ -29,8 +29,13 @@
"context_window": 128000,
"default_max_tokens": 32000,
"can_reason": true,
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
+ "default_reasoning_efforts": "medium",
"supports_attachments": false
}
]
}
-
@@ -1,7 +1,7 @@
{
"name": "Google Gemini",
"id": "gemini",
- "type": "gemini",
+ "type": "google",
"api_key": "$GEMINI_API_KEY",
"api_endpoint": "$GEMINI_API_ENDPOINT",
"default_large_model_id": "gemini-2.5-pro",
@@ -3,7 +3,7 @@
"id": "groq",
"api_key": "$GROQ_API_KEY",
"api_endpoint": "https://api.groq.com/openai/v1",
- "type": "openai",
+ "type": "openai-compat",
"default_large_model_id": "moonshotai/kimi-k2-instruct-0905",
"default_small_model_id": "qwen/qwen3-32b",
"models": [
@@ -15,6 +15,13 @@
"cost_per_1m_in_cached": 0.5,
"cost_per_1m_out_cached": 0.5,
"context_window": 131072,
+ "can_reason": true,
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
+ "default_reasoning_efforts": "medium",
"default_max_tokens": 10000
},
{
@@ -3,7 +3,7 @@
"id": "huggingface",
"api_key": "$HF_TOKEN",
"api_endpoint": "https://router.huggingface.co/v1",
- "type": "openai",
+ "type": "openai-compat",
"default_large_model_id": "moonshotai/Kimi-K2-Instruct-0905:groq",
"default_small_model_id": "openai/gpt-oss-20b",
"models": [
@@ -4,9 +4,28 @@
"type": "openai",
"api_key": "$OPENAI_API_KEY",
"api_endpoint": "$OPENAI_API_ENDPOINT",
- "default_large_model_id": "gpt-5",
+ "default_large_model_id": "gpt-5-codex",
"default_small_model_id": "gpt-4o",
"models": [
+ {
+ "id": "gpt-5-codex",
+ "name": "GPT-5 Codex",
+ "cost_per_1m_in": 1.25,
+ "cost_per_1m_out": 10,
+ "cost_per_1m_in_cached": 0.25,
+ "cost_per_1m_out_cached": 0.25,
+ "context_window": 400000,
+ "default_max_tokens": 128000,
+ "can_reason": true,
+ "reasoning_levels": [
+ "minimal",
+ "low",
+ "medium",
+ "high"
+ ],
+ "default_reasoning_effort": "medium",
+ "supports_attachments": true
+ },
{
"id": "gpt-5",
"name": "GPT-5",
@@ -17,8 +36,13 @@
"context_window": 400000,
"default_max_tokens": 128000,
"can_reason": true,
- "has_reasoning_efforts": true,
- "default_reasoning_effort": "minimal",
+ "reasoning_levels": [
+ "minimal",
+ "low",
+ "medium",
+ "high"
+ ],
+ "default_reasoning_effort": "medium",
"supports_attachments": true
},
{
@@ -31,8 +55,12 @@
"context_window": 400000,
"default_max_tokens": 128000,
"can_reason": true,
- "has_reasoning_efforts": true,
- "default_reasoning_effort": "low",
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
+ "default_reasoning_effort": "medium",
"supports_attachments": true
},
{
@@ -45,8 +73,12 @@
"context_window": 400000,
"default_max_tokens": 128000,
"can_reason": true,
- "has_reasoning_efforts": true,
- "default_reasoning_effort": "low",
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
+ "default_reasoning_effort": "medium",
"supports_attachments": true
},
{
@@ -59,8 +91,12 @@
"context_window": 200000,
"default_max_tokens": 50000,
"can_reason": true,
- "has_reasoning_efforts": true,
- "default_reasoning_effort": "low",
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
+ "default_reasoning_effort": "medium",
"supports_attachments": true
},
{
@@ -73,7 +109,11 @@
"context_window": 200000,
"default_max_tokens": 50000,
"can_reason": true,
- "has_reasoning_efforts": true,
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
"default_reasoning_effort": "medium",
"supports_attachments": true
},
@@ -123,7 +163,11 @@
"context_window": 200000,
"default_max_tokens": 50000,
"can_reason": true,
- "has_reasoning_efforts": true,
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
"default_reasoning_effort": "medium",
"supports_attachments": false
},
@@ -3,7 +3,7 @@
"id": "openrouter",
"api_key": "$OPENROUTER_API_KEY",
"api_endpoint": "https://openrouter.ai/api/v1",
- "type": "openai",
+ "type": "openrouter",
"default_large_model_id": "anthropic/claude-sonnet-4",
"default_small_model_id": "anthropic/claude-3.5-haiku",
"models": [
@@ -17,8 +17,8 @@
"context_window": 256000,
"default_max_tokens": 2048,
"can_reason": false,
- "has_reasoning_efforts": false,
- "supports_attachments": false
+ "supports_attachments": false,
+ "options": {}
},
{
"id": "ai21/jamba-mini-1.7",
@@ -30,8 +30,8 @@
"context_window": 256000,
"default_max_tokens": 2048,
"can_reason": false,
- "has_reasoning_efforts": false,
- "supports_attachments": false
+ "supports_attachments": false,
+ "options": {}
},
{
"id": "amazon/nova-lite-v1",
@@ -43,8 +43,8 @@
"context_window": 300000,
"default_max_tokens": 2560,
"can_reason": false,
- "has_reasoning_efforts": false,
- "supports_attachments": true
+ "supports_attachments": true,
+ "options": {}
},
{
"id": "amazon/nova-micro-v1",
@@ -56,8 +56,8 @@
"context_window": 128000,
"default_max_tokens": 2560,
"can_reason": false,
- "has_reasoning_efforts": false,
- "supports_attachments": false
+ "supports_attachments": false,
+ "options": {}
},
{
"id": "amazon/nova-pro-v1",
@@ -69,8 +69,8 @@
"context_window": 300000,
"default_max_tokens": 2560,
"can_reason": false,
- "has_reasoning_efforts": false,
- "supports_attachments": true
+ "supports_attachments": true,
+ "options": {}
},
{
"id": "openrouter/andromeda-alpha",
@@ -82,8 +82,14 @@
"context_window": 128000,
"default_max_tokens": 64000,
"can_reason": true,
- "has_reasoning_efforts": true,
- "supports_attachments": true
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
+ "default_reasoning_effort": "medium",
+ "supports_attachments": true,
+ "options": {}
},
{
"id": "anthropic/claude-3-haiku",
@@ -95,8 +101,8 @@
"context_window": 200000,
"default_max_tokens": 2048,
"can_reason": false,
- "has_reasoning_efforts": false,
- "supports_attachments": true
+ "supports_attachments": true,
+ "options": {}
},
{
"id": "anthropic/claude-3-opus",
@@ -108,8 +114,8 @@
"context_window": 200000,
"default_max_tokens": 2048,
"can_reason": false,
- "has_reasoning_efforts": false,
- "supports_attachments": true
+ "supports_attachments": true,
+ "options": {}
},
{
"id": "anthropic/claude-3.5-haiku",
@@ -121,8 +127,8 @@
"context_window": 200000,
"default_max_tokens": 4096,
"can_reason": false,
- "has_reasoning_efforts": false,
- "supports_attachments": true
+ "supports_attachments": true,
+ "options": {}
},
{
"id": "anthropic/claude-3.5-haiku-20241022",
@@ -134,8 +140,8 @@
"context_window": 200000,
"default_max_tokens": 4096,
"can_reason": false,
- "has_reasoning_efforts": false,
- "supports_attachments": true
+ "supports_attachments": true,
+ "options": {}
},
{
"id": "anthropic/claude-3.5-sonnet",
@@ -147,8 +153,8 @@
"context_window": 200000,
"default_max_tokens": 4096,
"can_reason": false,
- "has_reasoning_efforts": false,
- "supports_attachments": true
+ "supports_attachments": true,
+ "options": {}
},
{
"id": "anthropic/claude-3.5-sonnet-20240620",
@@ -160,8 +166,8 @@
"context_window": 200000,
"default_max_tokens": 4096,
"can_reason": false,
- "has_reasoning_efforts": false,
- "supports_attachments": true
+ "supports_attachments": true,
+ "options": {}
},
{
"id": "anthropic/claude-3.7-sonnet",
@@ -173,8 +179,14 @@
"context_window": 200000,
"default_max_tokens": 32000,
"can_reason": true,
- "has_reasoning_efforts": true,
- "supports_attachments": true
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
+ "default_reasoning_effort": "medium",
+ "supports_attachments": true,
+ "options": {}
},
{
"id": "anthropic/claude-3.7-sonnet:thinking",
@@ -186,8 +198,14 @@
"context_window": 200000,
"default_max_tokens": 32000,
"can_reason": true,
- "has_reasoning_efforts": true,
- "supports_attachments": true
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
+ "default_reasoning_effort": "medium",
+ "supports_attachments": true,
+ "options": {}
},
{
"id": "anthropic/claude-haiku-4.5",
@@ -199,8 +217,14 @@
"context_window": 200000,
"default_max_tokens": 32000,
"can_reason": true,
- "has_reasoning_efforts": true,
- "supports_attachments": true
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
+ "default_reasoning_effort": "medium",
+ "supports_attachments": true,
+ "options": {}
},
{
"id": "anthropic/claude-opus-4",
@@ -212,8 +236,14 @@
"context_window": 200000,
"default_max_tokens": 16000,
"can_reason": true,
- "has_reasoning_efforts": true,
- "supports_attachments": true
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
+ "default_reasoning_effort": "medium",
+ "supports_attachments": true,
+ "options": {}
},
{
"id": "anthropic/claude-opus-4.1",
@@ -225,8 +255,14 @@
"context_window": 200000,
"default_max_tokens": 16000,
"can_reason": true,
- "has_reasoning_efforts": true,
- "supports_attachments": true
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
+ "default_reasoning_effort": "medium",
+ "supports_attachments": true,
+ "options": {}
},
{
"id": "anthropic/claude-sonnet-4",
@@ -238,21 +274,33 @@
"context_window": 1000000,
"default_max_tokens": 32000,
"can_reason": true,
- "has_reasoning_efforts": true,
- "supports_attachments": true
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
+ "default_reasoning_effort": "medium",
+ "supports_attachments": true,
+ "options": {}
},
{
"id": "anthropic/claude-sonnet-4.5",
"name": "Anthropic: Claude Sonnet 4.5",
"cost_per_1m_in": 3,
"cost_per_1m_out": 15,
- "cost_per_1m_in_cached": 3.75,
- "cost_per_1m_out_cached": 0.3,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
"context_window": 1000000,
"default_max_tokens": 32000,
"can_reason": true,
- "has_reasoning_efforts": true,
- "supports_attachments": true
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
+ "default_reasoning_effort": "medium",
+ "supports_attachments": true,
+ "options": {}
},
{
"id": "arcee-ai/virtuoso-large",
@@ -264,8 +312,8 @@
"context_window": 131072,
"default_max_tokens": 32000,
"can_reason": false,
- "has_reasoning_efforts": false,
- "supports_attachments": false
+ "supports_attachments": false,
+ "options": {}
},
{
"id": "baidu/ernie-4.5-21b-a3b",
@@ -277,8 +325,8 @@
"context_window": 120000,
"default_max_tokens": 4000,
"can_reason": false,
- "has_reasoning_efforts": false,
- "supports_attachments": false
+ "supports_attachments": false,
+ "options": {}
},
{
"id": "baidu/ernie-4.5-vl-28b-a3b",
@@ -290,8 +338,14 @@
"context_window": 30000,
"default_max_tokens": 4000,
"can_reason": true,
- "has_reasoning_efforts": true,
- "supports_attachments": true
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
+ "default_reasoning_effort": "medium",
+ "supports_attachments": true,
+ "options": {}
},
{
"id": "deepcogito/cogito-v2-preview-llama-109b-moe",
@@ -303,8 +357,14 @@
"context_window": 32767,
"default_max_tokens": 3276,
"can_reason": true,
- "has_reasoning_efforts": true,
- "supports_attachments": true
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
+ "default_reasoning_effort": "medium",
+ "supports_attachments": true,
+ "options": {}
},
{
"id": "cohere/command-r-08-2024",
@@ -316,8 +376,8 @@
"context_window": 128000,
"default_max_tokens": 2000,
"can_reason": false,
- "has_reasoning_efforts": false,
- "supports_attachments": false
+ "supports_attachments": false,
+ "options": {}
},
{
"id": "cohere/command-r-plus-08-2024",
@@ -329,8 +389,8 @@
"context_window": 128000,
"default_max_tokens": 2000,
"can_reason": false,
- "has_reasoning_efforts": false,
- "supports_attachments": false
+ "supports_attachments": false,
+ "options": {}
},
{
"id": "deepcogito/cogito-v2-preview-llama-405b",
@@ -342,8 +402,14 @@
"context_window": 32768,
"default_max_tokens": 3276,
"can_reason": true,
- "has_reasoning_efforts": true,
- "supports_attachments": false
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
+ "default_reasoning_effort": "medium",
+ "supports_attachments": false,
+ "options": {}
},
{
"id": "deepcogito/cogito-v2-preview-llama-70b",
@@ -355,8 +421,14 @@
"context_window": 32768,
"default_max_tokens": 3276,
"can_reason": true,
- "has_reasoning_efforts": true,
- "supports_attachments": false
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
+ "default_reasoning_effort": "medium",
+ "supports_attachments": false,
+ "options": {}
},
{
"id": "deepseek/deepseek-chat",
@@ -368,21 +440,21 @@
"context_window": 64000,
"default_max_tokens": 8000,
"can_reason": false,
- "has_reasoning_efforts": false,
- "supports_attachments": false
+ "supports_attachments": false,
+ "options": {}
},
{
"id": "deepseek/deepseek-chat-v3-0324",
"name": "DeepSeek: DeepSeek V3 0324",
- "cost_per_1m_in": 0.27,
- "cost_per_1m_out": 1.12,
+ "cost_per_1m_in": 0.5,
+ "cost_per_1m_out": 1.5,
"cost_per_1m_in_cached": 0,
- "cost_per_1m_out_cached": 0.135,
+ "cost_per_1m_out_cached": 0,
"context_window": 163840,
- "default_max_tokens": 81920,
+ "default_max_tokens": 16384,
"can_reason": false,
- "has_reasoning_efforts": false,
- "supports_attachments": false
+ "supports_attachments": false,
+ "options": {}
},
{
"id": "deepseek/deepseek-chat-v3-0324:free",
@@ -394,21 +466,27 @@
"context_window": 163840,
"default_max_tokens": 16384,
"can_reason": false,
- "has_reasoning_efforts": false,
- "supports_attachments": false
+ "supports_attachments": false,
+ "options": {}
},
{
"id": "deepseek/deepseek-chat-v3.1",
"name": "DeepSeek: DeepSeek V3.1",
- "cost_per_1m_in": 0.56,
- "cost_per_1m_out": 1.68,
+ "cost_per_1m_in": 0.27,
+ "cost_per_1m_out": 1,
"cost_per_1m_in_cached": 0,
"cost_per_1m_out_cached": 0,
"context_window": 163840,
- "default_max_tokens": 10240,
+ "default_max_tokens": 16384,
"can_reason": true,
- "has_reasoning_efforts": true,
- "supports_attachments": false
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
+ "default_reasoning_effort": "medium",
+ "supports_attachments": false,
+ "options": {}
},
{
"id": "deepseek/deepseek-v3.1-terminus",
@@ -420,8 +498,14 @@
"context_window": 163840,
"default_max_tokens": 16384,
"can_reason": true,
- "has_reasoning_efforts": true,
- "supports_attachments": false
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
+ "default_reasoning_effort": "medium",
+ "supports_attachments": false,
+ "options": {}
},
{
"id": "deepseek/deepseek-v3.1-terminus:exacto",
@@ -433,8 +517,14 @@
"context_window": 163840,
"default_max_tokens": 16384,
"can_reason": true,
- "has_reasoning_efforts": true,
- "supports_attachments": false
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
+ "default_reasoning_effort": "medium",
+ "supports_attachments": false,
+ "options": {}
},
{
"id": "deepseek/deepseek-v3.2-exp",
@@ -446,34 +536,71 @@
"context_window": 163840,
"default_max_tokens": 16384,
"can_reason": true,
- "has_reasoning_efforts": true,
- "supports_attachments": false
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
+ "default_reasoning_effort": "medium",
+ "supports_attachments": false,
+ "options": {}
},
{
"id": "deepseek/deepseek-r1",
"name": "DeepSeek: R1",
"cost_per_1m_in": 0.7,
- "cost_per_1m_out": 2.5,
+ "cost_per_1m_out": 2.4,
"cost_per_1m_in_cached": 0,
"cost_per_1m_out_cached": 0,
- "context_window": 64000,
- "default_max_tokens": 8000,
+ "context_window": 163840,
+ "default_max_tokens": 81920,
"can_reason": true,
- "has_reasoning_efforts": true,
- "supports_attachments": false
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
+ "default_reasoning_effort": "medium",
+ "supports_attachments": false,
+ "options": {}
},
{
"id": "deepseek/deepseek-r1-0528",
"name": "DeepSeek: R1 0528",
- "cost_per_1m_in": 0.7999999999999999,
- "cost_per_1m_out": 2.4,
+ "cost_per_1m_in": 0.39999999999999997,
+ "cost_per_1m_out": 1.75,
"cost_per_1m_in_cached": 0,
"cost_per_1m_out_cached": 0,
"context_window": 163840,
- "default_max_tokens": 16384,
+ "default_max_tokens": 81920,
"can_reason": true,
- "has_reasoning_efforts": true,
- "supports_attachments": false
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
+ "default_reasoning_effort": "medium",
+ "supports_attachments": false,
+ "options": {}
+ },
+ {
+ "id": "deepseek/deepseek-r1-distill-llama-70b",
+ "name": "DeepSeek: R1 Distill Llama 70B",
+ "cost_per_1m_in": 0.03,
+ "cost_per_1m_out": 0.13,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 131072,
+ "default_max_tokens": 65536,
+ "can_reason": true,
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
+ "default_reasoning_effort": "medium",
+ "supports_attachments": false,
+ "options": {}
},
{
"id": "google/gemini-2.0-flash-001",
@@ -485,8 +612,8 @@
"context_window": 1048576,
"default_max_tokens": 4096,
"can_reason": false,
- "has_reasoning_efforts": false,
- "supports_attachments": true
+ "supports_attachments": true,
+ "options": {}
},
{
"id": "google/gemini-2.0-flash-exp:free",
@@ -498,8 +625,8 @@
"context_window": 1048576,
"default_max_tokens": 4096,
"can_reason": false,
- "has_reasoning_efforts": false,
- "supports_attachments": true
+ "supports_attachments": true,
+ "options": {}
},
{
"id": "google/gemini-2.0-flash-lite-001",
@@ -511,8 +638,8 @@
"context_window": 1048576,
"default_max_tokens": 4096,
"can_reason": false,
- "has_reasoning_efforts": false,
- "supports_attachments": true
+ "supports_attachments": true,
+ "options": {}
},
{
"id": "google/gemini-2.5-flash",
@@ -524,8 +651,14 @@
"context_window": 1048576,
"default_max_tokens": 32767,
"can_reason": true,
- "has_reasoning_efforts": true,
- "supports_attachments": true
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
+ "default_reasoning_effort": "medium",
+ "supports_attachments": true,
+ "options": {}
},
{
"id": "google/gemini-2.5-flash-lite",
@@ -537,8 +670,14 @@
"context_window": 1048576,
"default_max_tokens": 32767,
"can_reason": true,
- "has_reasoning_efforts": true,
- "supports_attachments": true
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
+ "default_reasoning_effort": "medium",
+ "supports_attachments": true,
+ "options": {}
},
{
"id": "google/gemini-2.5-flash-lite-preview-06-17",
@@ -550,8 +689,14 @@
"context_window": 1048576,
"default_max_tokens": 32767,
"can_reason": true,
- "has_reasoning_efforts": true,
- "supports_attachments": true
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
+ "default_reasoning_effort": "medium",
+ "supports_attachments": true,
+ "options": {}
},
{
"id": "google/gemini-2.5-flash-lite-preview-09-2025",
@@ -561,10 +706,16 @@
"cost_per_1m_in_cached": 0,
"cost_per_1m_out_cached": 0,
"context_window": 1048576,
- "default_max_tokens": 32767,
+ "default_max_tokens": 32768,
"can_reason": true,
- "has_reasoning_efforts": true,
- "supports_attachments": true
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
+ "default_reasoning_effort": "medium",
+ "supports_attachments": true,
+ "options": {}
},
{
"id": "google/gemini-2.5-flash-preview-09-2025",
@@ -576,8 +727,14 @@
"context_window": 1048576,
"default_max_tokens": 32767,
"can_reason": true,
- "has_reasoning_efforts": true,
- "supports_attachments": true
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
+ "default_reasoning_effort": "medium",
+ "supports_attachments": true,
+ "options": {}
},
{
"id": "google/gemini-2.5-pro",
@@ -589,8 +746,14 @@
"context_window": 1048576,
"default_max_tokens": 32768,
"can_reason": true,
- "has_reasoning_efforts": true,
- "supports_attachments": true
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
+ "default_reasoning_effort": "medium",
+ "supports_attachments": true,
+ "options": {}
},
{
"id": "google/gemini-2.5-pro-preview-05-06",
@@ -602,8 +765,14 @@
"context_window": 1048576,
"default_max_tokens": 32768,
"can_reason": true,
- "has_reasoning_efforts": true,
- "supports_attachments": true
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
+ "default_reasoning_effort": "medium",
+ "supports_attachments": true,
+ "options": {}
},
{
"id": "google/gemini-2.5-pro-preview",
@@ -615,8 +784,27 @@
"context_window": 1048576,
"default_max_tokens": 32768,
"can_reason": true,
- "has_reasoning_efforts": true,
- "supports_attachments": true
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
+ "default_reasoning_effort": "medium",
+ "supports_attachments": true,
+ "options": {}
+ },
+ {
+ "id": "google/gemma-3-27b-it",
+ "name": "Google: Gemma 3 27B",
+ "cost_per_1m_in": 0.13,
+ "cost_per_1m_out": 0.52,
+ "cost_per_1m_in_cached": 0,
+ "cost_per_1m_out_cached": 0,
+ "context_window": 96000,
+ "default_max_tokens": 48000,
+ "can_reason": false,
+ "supports_attachments": true,
+ "options": {}
},
{
"id": "inception/mercury",
@@ -628,8 +816,8 @@
"context_window": 128000,
"default_max_tokens": 8192,
"can_reason": false,
- "has_reasoning_efforts": false,
- "supports_attachments": false
+ "supports_attachments": false,
+ "options": {}
},
{
"id": "inception/mercury-coder",
@@ -641,8 +829,8 @@
"context_window": 128000,
"default_max_tokens": 8192,
"can_reason": false,
- "has_reasoning_efforts": false,
- "supports_attachments": false
+ "supports_attachments": false,
+ "options": {}
},
{
"id": "meituan/longcat-flash-chat:free",
@@ -654,34 +842,8 @@
"context_window": 131072,
"default_max_tokens": 65536,
"can_reason": false,
- "has_reasoning_efforts": false,
- "supports_attachments": false
- },
- {
- "id": "meta-llama/llama-3-70b-instruct",
- "name": "Meta: Llama 3 70B Instruct",
- "cost_per_1m_in": 0.3,
- "cost_per_1m_out": 0.39999999999999997,
- "cost_per_1m_in_cached": 0,
- "cost_per_1m_out_cached": 0,
- "context_window": 8192,
- "default_max_tokens": 8192,
- "can_reason": false,
- "has_reasoning_efforts": false,
- "supports_attachments": false
- },
- {
- "id": "meta-llama/llama-3-8b-instruct",
- "name": "Meta: Llama 3 8B Instruct",
- "cost_per_1m_in": 0.03,
- "cost_per_1m_out": 0.06,
- "cost_per_1m_in_cached": 0,
- "cost_per_1m_out_cached": 0,
- "context_window": 8192,
- "default_max_tokens": 8192,
- "can_reason": false,
- "has_reasoning_efforts": false,
- "supports_attachments": false
+ "supports_attachments": false,
+ "options": {}
},
{
"id": "meta-llama/llama-3.1-405b-instruct",
@@ -693,8 +855,8 @@
"context_window": 131072,
"default_max_tokens": 13107,
"can_reason": false,
- "has_reasoning_efforts": false,
- "supports_attachments": false
+ "supports_attachments": false,
+ "options": {}
},
{
"id": "meta-llama/llama-3.1-70b-instruct",
@@ -706,47 +868,21 @@
"context_window": 131072,
"default_max_tokens": 8192,
"can_reason": false,
- "has_reasoning_efforts": false,
- "supports_attachments": false
- },
- {
- "id": "meta-llama/llama-3.1-8b-instruct",
- "name": "Meta: Llama 3.1 8B Instruct",
- "cost_per_1m_in": 0.02,
- "cost_per_1m_out": 0.03,
- "cost_per_1m_in_cached": 0,
- "cost_per_1m_out_cached": 0,
- "context_window": 131072,
- "default_max_tokens": 8192,
- "can_reason": false,
- "has_reasoning_efforts": false,
- "supports_attachments": false
- },
- {
- "id": "meta-llama/llama-3.2-3b-instruct",
- "name": "Meta: Llama 3.2 3B Instruct",
- "cost_per_1m_in": 0.03,
- "cost_per_1m_out": 0.049999999999999996,
- "cost_per_1m_in_cached": 0,
- "cost_per_1m_out_cached": 0,
- "context_window": 32768,
- "default_max_tokens": 16000,
- "can_reason": false,
- "has_reasoning_efforts": false,
- "supports_attachments": false
+ "supports_attachments": false,
+ "options": {}
},
{
"id": "meta-llama/llama-3.3-70b-instruct",
"name": "Meta: Llama 3.3 70B Instruct",
- "cost_per_1m_in": 0.6,
- "cost_per_1m_out": 0.6,
+ "cost_per_1m_in": 0.59,
+ "cost_per_1m_out": 0.7899999999999999,
"cost_per_1m_in_cached": 0,
"cost_per_1m_out_cached": 0,
"context_window": 131072,
- "default_max_tokens": 65536,
+ "default_max_tokens": 16384,
"can_reason": false,
- "has_reasoning_efforts": false,
- "supports_attachments": false
+ "supports_attachments": false,
+ "options": {}
},
{
"id": "meta-llama/llama-3.3-70b-instruct:free",
@@ -755,11 +891,11 @@
"cost_per_1m_out": 0,
"cost_per_1m_in_cached": 0,
"cost_per_1m_out_cached": 0,
- "context_window": 128000,
- "default_max_tokens": 2014,
+ "context_window": 131072,
+ "default_max_tokens": 13107,
"can_reason": false,
- "has_reasoning_efforts": false,
- "supports_attachments": false
+ "supports_attachments": false,
+ "options": {}
},
{
"id": "meta-llama/llama-3.3-8b-instruct:free",
@@ -771,21 +907,21 @@
"context_window": 128000,
"default_max_tokens": 2014,
"can_reason": false,
- "has_reasoning_efforts": false,
- "supports_attachments": false
+ "supports_attachments": false,
+ "options": {}
},
{
"id": "meta-llama/llama-4-maverick",
"name": "Meta: Llama 4 Maverick",
- "cost_per_1m_in": 0.22,
- "cost_per_1m_out": 0.88,
+ "cost_per_1m_in": 0.16999999999999998,
+ "cost_per_1m_out": 0.85,
"cost_per_1m_in_cached": 0,
"cost_per_1m_out_cached": 0,
"context_window": 1048576,
- "default_max_tokens": 65536,
+ "default_max_tokens": 4096,
"can_reason": false,
- "has_reasoning_efforts": false,
- "supports_attachments": true
+ "supports_attachments": true,
+ "options": {}
},
{
"id": "meta-llama/llama-4-maverick:free",
@@ -797,21 +933,21 @@
"context_window": 128000,
"default_max_tokens": 2014,
"can_reason": false,
- "has_reasoning_efforts": false,
- "supports_attachments": true
+ "supports_attachments": true,
+ "options": {}
},
{
"id": "meta-llama/llama-4-scout",
"name": "Meta: Llama 4 Scout",
- "cost_per_1m_in": 0.15,
- "cost_per_1m_out": 0.6,
+ "cost_per_1m_in": 0.25,
+ "cost_per_1m_out": 0.7,
"cost_per_1m_in_cached": 0,
"cost_per_1m_out_cached": 0,
- "context_window": 1048576,
- "default_max_tokens": 104857,
+ "context_window": 1310720,
+ "default_max_tokens": 4096,
"can_reason": false,
- "has_reasoning_efforts": false,
- "supports_attachments": true
+ "supports_attachments": true,
+ "options": {}
},
{
"id": "meta-llama/llama-4-scout:free",
@@ -823,8 +959,8 @@
"context_window": 128000,
"default_max_tokens": 2014,
"can_reason": false,
- "has_reasoning_efforts": false,
- "supports_attachments": true
+ "supports_attachments": true,
+ "options": {}
},
{
"id": "microsoft/phi-3-medium-128k-instruct",
@@ -836,8 +972,8 @@
"context_window": 128000,
"default_max_tokens": 12800,
"can_reason": false,
- "has_reasoning_efforts": false,
- "supports_attachments": false
+ "supports_attachments": false,
+ "options": {}
},
{
"id": "microsoft/phi-3-mini-128k-instruct",
@@ -849,8 +985,8 @@
"context_window": 128000,
"default_max_tokens": 12800,
"can_reason": false,
- "has_reasoning_efforts": false,
- "supports_attachments": false
+ "supports_attachments": false,
+ "options": {}
},
{
"id": "microsoft/phi-3.5-mini-128k-instruct",
@@ -862,8 +998,8 @@
"context_window": 128000,
"default_max_tokens": 12800,
"can_reason": false,
- "has_reasoning_efforts": false,
- "supports_attachments": false
+ "supports_attachments": false,
+ "options": {}
},
{
"id": "minimax/minimax-m2:free",
@@ -875,8 +1011,14 @@
"context_window": 204800,
"default_max_tokens": 65536,
"can_reason": true,
- "has_reasoning_efforts": true,
- "supports_attachments": false
+ "reasoning_levels": [
+ "low",
+ "medium",
+ "high"
+ ],
+ "default_reasoning_effort": "medium",
+ "supports_attachments": false,
+ "options": {}
},
{
"id": "mistralai/mistral-large",
@@ -1,7 +1,7 @@
{
"name": "Venice AI",
"id": "venice",
- "type": "openai",
+ "type": "openai-compat",
"api_key": "$VENICE_API_KEY",
"api_endpoint": "https://api.venice.ai/api/v1",
"default_large_model_id": "qwen3-235b:strip_thinking_response=true",
@@ -1,7 +1,7 @@
{
"name": "Google Vertex AI",
"id": "vertexai",
- "type": "vertexai",
+ "type": "google-vertex",
"api_key": "",
"api_endpoint": "",
"default_large_model_id": "gemini-2.5-pro",
@@ -30,6 +30,31 @@
"default_max_tokens": 50000,
"can_reason": true,
"supports_attachments": true
+ },
+ {
+ "id": "claude-haiku-4-5@20251001",
+ "name": "Claude 4.5 Haiku",
+ "cost_per_1m_in": 1,
+ "cost_per_1m_out": 5,
+ "cost_per_1m_in_cached": 1.25,
+ "cost_per_1m_out_cached": 0.09999999999999999,
+ "context_window": 200000,
+ "default_max_tokens": 32000,
+ "can_reason": true,
+ "has_reasoning_efforts": false,
+ "supports_attachments": true
+ },
+ {
+ "id": "claude-sonnet-4-5@20250929",
+ "name": "Claude Sonnet 4.5",
+ "cost_per_1m_in": 3,
+ "cost_per_1m_out": 15,
+ "cost_per_1m_in_cached": 3.75,
+ "cost_per_1m_out_cached": 0.3,
+ "context_window": 200000,
+ "default_max_tokens": 50000,
+ "can_reason": true,
+ "supports_attachments": true
}
]
}
@@ -3,7 +3,7 @@
"id": "xai",
"api_key": "$XAI_API_KEY",
"api_endpoint": "https://api.x.ai/v1",
- "type": "openai",
+ "type": "openai-compat",
"default_large_model_id": "grok-code-fast",
"default_small_model_id": "grok-3-mini",
"models": [
@@ -29,6 +29,11 @@
"context_window": 256000,
"default_max_tokens": 20000,
"can_reason": true,
+ "reasoning_levels": [
+ "low",
+ "high"
+ ],
+ "default_reasoning_effort": "low",
"supports_attachments": true
},
{
@@ -3,7 +3,7 @@
"id": "zai",
"api_key": "$ZAI_API_KEY",
"api_endpoint": "https://api.z.ai/api/coding/paas/v4",
- "type": "openai",
+ "type": "openai-compat",
"default_large_model_id": "glm-4.6",
"default_small_model_id": "glm-4.5-air",
"models": [
@@ -17,8 +17,6 @@
"context_window": 204800,
"default_max_tokens": 131072,
"can_reason": true,
- "has_reasoning_efforts": true,
- "default_reasoning_effort": "medium",
"supports_attachments": false
},
{
@@ -31,8 +29,6 @@
"context_window": 131072,
"default_max_tokens": 98304,
"can_reason": true,
- "has_reasoning_efforts": true,
- "default_reasoning_effort": "medium",
"supports_attachments": false
},
{
@@ -44,8 +40,6 @@
"context_window": 131072,
"default_max_tokens": 98304,
"can_reason": true,
- "has_reasoning_efforts": true,
- "default_reasoning_effort": "medium",
"supports_attachments": false
}
]
@@ -8,6 +8,7 @@ import (
"net/http"
"time"
+ "github.com/charmbracelet/catwalk/internal/deprecated"
"github.com/charmbracelet/catwalk/internal/providers"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promauto"
@@ -40,9 +41,29 @@ func providersHandler(w http.ResponseWriter, r *http.Request) {
}
}
+func providersHandlerDeprecated(w http.ResponseWriter, r *http.Request) {
+ w.Header().Set("Content-Type", "application/json")
+ if r.Method == http.MethodHead {
+ return
+ }
+
+ if r.Method != http.MethodGet {
+ http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)
+ return
+ }
+
+ counter.Inc()
+ allProviders := deprecated.GetAll()
+ if err := json.NewEncoder(w).Encode(allProviders); err != nil {
+ http.Error(w, "Internal server error", http.StatusInternalServerError)
+ return
+ }
+}
+
func main() {
mux := http.NewServeMux()
- mux.HandleFunc("/providers", providersHandler)
+ mux.HandleFunc("/v2/providers", providersHandler)
+ mux.HandleFunc("/providers", providersHandlerDeprecated)
mux.HandleFunc("/healthz", func(w http.ResponseWriter, _ *http.Request) {
w.WriteHeader(http.StatusOK)
_, _ = w.Write([]byte("OK"))
@@ -39,7 +39,7 @@ func NewWithURL(url string) *Client {
// GetProviders retrieves all available providers from the service.
func (c *Client) GetProviders() ([]Provider, error) {
- url := fmt.Sprintf("%s/providers", c.baseURL)
+ url := fmt.Sprintf("%s/v2/providers", c.baseURL)
resp, err := c.httpClient.Get(url) //nolint:noctx
if err != nil {
@@ -5,12 +5,14 @@ type Type string
// All the supported AI provider types.
const (
- TypeOpenAI Type = "openai"
- TypeAnthropic Type = "anthropic"
- TypeGemini Type = "gemini"
- TypeAzure Type = "azure"
- TypeBedrock Type = "bedrock"
- TypeVertexAI Type = "vertexai"
+ TypeOpenAI Type = "openai"
+ TypeOpenAICompat Type = "openai-compat"
+ TypeOpenRouter Type = "openrouter"
+ TypeAnthropic Type = "anthropic"
+ TypeGoogle Type = "google"
+ TypeAzure Type = "azure"
+ TypeBedrock Type = "bedrock"
+ TypeVertexAI Type = "google-vertex"
)
// InferenceProvider represents the inference provider identifier.
@@ -48,20 +50,31 @@ type Provider struct {
DefaultHeaders map[string]string `json:"default_headers,omitempty"`
}
+// ModelOptions stores extra options for models.
+type ModelOptions struct {
+ Temperature *float64 `json:"temperature,omitempty"`
+ TopP *float64 `json:"top_p,omitempty"`
+ TopK *int64 `json:"top_k,omitempty"`
+ FrequencyPenalty *float64 `json:"frequency_penalty,omitempty"`
+ PresencePenalty *float64 `json:"presence_penalty,omitempty"`
+ ProviderOptions map[string]any `json:"provider_options,omitempty"`
+}
+
// Model represents an AI model configuration.
type Model struct {
- ID string `json:"id"`
- Name string `json:"name"`
- CostPer1MIn float64 `json:"cost_per_1m_in"`
- CostPer1MOut float64 `json:"cost_per_1m_out"`
- CostPer1MInCached float64 `json:"cost_per_1m_in_cached"`
- CostPer1MOutCached float64 `json:"cost_per_1m_out_cached"`
- ContextWindow int64 `json:"context_window"`
- DefaultMaxTokens int64 `json:"default_max_tokens"`
- CanReason bool `json:"can_reason"`
- HasReasoningEffort bool `json:"has_reasoning_efforts"`
- DefaultReasoningEffort string `json:"default_reasoning_effort,omitempty"`
- SupportsImages bool `json:"supports_attachments"`
+ ID string `json:"id"`
+ Name string `json:"name"`
+ CostPer1MIn float64 `json:"cost_per_1m_in"`
+ CostPer1MOut float64 `json:"cost_per_1m_out"`
+ CostPer1MInCached float64 `json:"cost_per_1m_in_cached"`
+ CostPer1MOutCached float64 `json:"cost_per_1m_out_cached"`
+ ContextWindow int64 `json:"context_window"`
+ DefaultMaxTokens int64 `json:"default_max_tokens"`
+ CanReason bool `json:"can_reason"`
+ ReasoningLevels []string `json:"reasoning_levels,omitempty"`
+ DefaultReasoningEffort string `json:"default_reasoning_effort,omitempty"`
+ SupportsImages bool `json:"supports_attachments"`
+ Options ModelOptions `json:"options"`
}
// KnownProviders returns all the known inference providers.
@@ -84,3 +97,17 @@ func KnownProviders() []InferenceProvider {
InferenceAIHubMix,
}
}
+
+// KnownProviderTypes returns all the known inference providers types.
+func KnownProviderTypes() []Type {
+ return []Type{
+ TypeOpenAI,
+ TypeOpenAICompat,
+ TypeOpenRouter,
+ TypeAnthropic,
+ TypeGoogle,
+ TypeAzure,
+ TypeBedrock,
+ TypeVertexAI,
+ }
+}