Models
curl --request GET \
--url https://api.stratus.run/v1/modelsimport requests
url = "https://api.stratus.run/v1/models"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.stratus.run/v1/models', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.stratus.run/v1/models",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.stratus.run/v1/models"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.stratus.run/v1/models")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.stratus.run/v1/models")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_bodyAPI Reference
Models
Complete reference of all Stratus X1 model combinations
GET
/
v1
/
models
Models
curl --request GET \
--url https://api.stratus.run/v1/modelsimport requests
url = "https://api.stratus.run/v1/models"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.stratus.run/v1/models', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.stratus.run/v1/models",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.stratus.run/v1/models"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.stratus.run/v1/models")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.stratus.run/v1/models")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_bodyOverview
Stratus X1 supports 2,050+ model combinations across 5 world model sizes and 410+ LLM backends — including every model available through OpenRouter. Native model format:stratus-x1ac-{size}-{llm-model}
OpenRouter model format: stratus-x1ac-{size}-{or-provider}/{or-model}
All models are available out of the box. Formation’s shared OpenRouter pool handles LLM calls automatically when no provider key is configured — no external API accounts required. Add your own provider key via LLM Key Management to remove the 25% pool markup and pay providers directly.
How Model Discovery Works
At startup, Stratus queries OpenRouter’s model catalog and registers every available model dynamically. This means every model OpenRouter supports is immediately available as a Stratus model combination — no manual updates required. The 2,050+ total breaks down as:| Source | Count | Format |
|---|---|---|
| Native models (OpenAI, Anthropic, Google) | ~250 | stratus-x1ac-{size}-{model} |
| OpenRouter-native models | 1,800+ | stratus-x1ac-{size}-{provider}/{model} |
stratus-x1ac-base-gpt-4o and stratus-x1ac-base-claude-sonnet-4-20250514 work exactly as before. The OpenRouter slash-notation is purely additive.
List Models Endpoint
GET /v1/models
Request
No parameters required. Authentication viaAuthorization header:
curl https://api.stratus.run/v1/models \
-H "Authorization: Bearer stratus_sk_live_your_key"
Response Format
{
"object": "list",
"data": [
{
"id": "stratus-x1ac-small-gpt-4o",
"object": "model",
"created": 1702500000,
"owned_by": "stratus"
},
{
"id": "stratus-x1ac-base-gpt-4o",
"object": "model",
"created": 1702500000,
"owned_by": "stratus"
},
{
"id": "stratus-x1ac-base-deepseek/deepseek-r1",
"object": "model",
"created": 1702500000,
"owned_by": "stratus"
},
{
"id": "stratus-x1ac-base-meta-llama/llama-3.3-70b-instruct",
"object": "model",
"created": 1702500000,
"owned_by": "stratus"
}
// ... 2,046 more models
]
}
Code Examples
import OpenAI from 'openai';
const client = new OpenAI({
baseURL: 'https://api.stratus.run/v1',
apiKey: process.env.STRATUS_API_KEY
});
const models = await client.models.list();
// Filter for GPT-4o models
const gpt4oModels = models.data.filter(m =>
m.id.includes('gpt-4o') && !m.id.includes('mini')
);
console.log('Available GPT-4o models:');
gpt4oModels.forEach(model => console.log(` - ${model.id}`));
// Filter for OpenRouter-native models (contain a slash)
const orModels = models.data.filter(m => m.id.includes('/'));
console.log(`\nOpenRouter models: ${orModels.length}`);
// Find base size models
const baseModels = models.data.filter(m => m.id.includes('-base-'));
console.log(`Base models: ${baseModels.length}`);
from openai import OpenAI
client = OpenAI(
base_url="https://api.stratus.run/v1",
api_key=os.environ["STRATUS_API_KEY"]
)
models = client.models.list()
# Filter for DeepSeek models via OpenRouter
deepseek_models = [m for m in models.data if 'deepseek' in m.id]
print('Available DeepSeek models:')
for model in deepseek_models:
print(f" - {model.id}")
# Count OpenRouter-native vs native models
or_models = [m for m in models.data if '/' in m.id]
native_models = [m for m in models.data if '/' not in m.id]
print(f"\nNative models: {len(native_models)}")
print(f"OpenRouter models: {len(or_models)}")
print(f"Total: {len(models.data)}")
curl https://api.stratus.run/v1/models \
-H "Authorization: Bearer stratus_sk_live_your_key" \
| jq '.data[] | .id' | sort
Use Cases
Dynamic Model Selection:async function selectOptimalModel(task: string) {
const models = await client.models.list();
// For complex reasoning — use a frontier model via OpenRouter
if (task.includes('analyze') || task.includes('debug')) {
return models.data.find(m => m.id.includes('claude-opus-4-5'))
|| models.data.find(m => m.id.includes('deepseek/deepseek-r1'));
}
// For fast prototyping
if (process.env.NODE_ENV === 'development') {
return models.data.find(m => m.id.includes('gpt-4o-mini'));
}
// Default: production-ready
return models.data.find(m => m.id === 'stratus-x1ac-base-gpt-4o');
}
def is_model_available(model_name: str) -> bool:
models = client.models.list()
return any(m.id == model_name for m in models.data)
if is_model_available('stratus-x1ac-large-claude-sonnet-4-5'):
print('✅ Model available')
else:
print('❌ Model not loaded - contact support')
// Build model picker for UI
const models = await client.models.list();
const grouped = models.data.reduce((acc, model) => {
if (model.id.includes('gpt')) {
acc.openai = acc.openai || [];
acc.openai.push(model.id);
} else if (model.id.includes('claude')) {
acc.anthropic = acc.anthropic || [];
acc.anthropic.push(model.id);
} else {
acc.embeddings = acc.embeddings || [];
acc.embeddings.push(model.id);
}
return acc;
}, {});
console.log(grouped);
// {
// openai: ['stratus-x1ac-small-gpt-4o', ...],
// anthropic: ['stratus-x1ac-small-claude-sonnet-4-5', ...],
// embeddings: ['stratus-x1ac-small', 'stratus-x1ac-base', ...]
// }
The
/v1/models endpoint returns all 2,050+ model combinations dynamically. The list is refreshed at startup from OpenRouter’s catalog, so your code always works with the latest available models without hardcoding.Model Sizes
small
Smallest model variant - fastest inference
base
Currently in production - balanced performance
large
Large model variant - extended context
xl
Extra-large variant - maximum context
huge
Largest model variant - research-grade capacity
Embedding-Only Models
Use these for world model embeddings without LLM text generation.stratus-x1ac-small
stratus-x1ac-base # Currently loaded in production
stratus-x1ac-large
stratus-x1ac-xl
stratus-x1ac-huge
Embedding-only models return Stratus world model representations without requiring LLM API keys.
OpenAI Models
GPT-4o (5 models) - Recommended for Production
GPT-4o (5 models) - Recommended for Production
stratus-x1ac-small-gpt-4o
stratus-x1ac-base-gpt-4o # Production recommended
stratus-x1ac-large-gpt-4o
stratus-x1ac-xl-gpt-4o
stratus-x1ac-huge-gpt-4o
GPT-4o Mini (5 models) - Fastest & Cheapest
GPT-4o Mini (5 models) - Fastest & Cheapest
stratus-x1ac-small-gpt-4o-mini
stratus-x1ac-base-gpt-4o-mini # Best for prototyping
stratus-x1ac-large-gpt-4o-mini
stratus-x1ac-xl-gpt-4o-mini
stratus-x1ac-huge-gpt-4o-mini
GPT-4 Turbo (5 models)
GPT-4 Turbo (5 models)
stratus-x1ac-small-gpt-4-turbo
stratus-x1ac-base-gpt-4-turbo
stratus-x1ac-large-gpt-4-turbo
stratus-x1ac-xl-gpt-4-turbo
stratus-x1ac-huge-gpt-4-turbo
GPT-4 (5 models)
GPT-4 (5 models)
stratus-x1ac-small-gpt-4
stratus-x1ac-base-gpt-4
stratus-x1ac-large-gpt-4
stratus-x1ac-xl-gpt-4
stratus-x1ac-huge-gpt-4
GPT-3.5 Turbo (5 models)
GPT-3.5 Turbo (5 models)
stratus-x1ac-small-gpt-3.5-turbo
stratus-x1ac-base-gpt-3.5-turbo
stratus-x1ac-large-gpt-3.5-turbo
stratus-x1ac-xl-gpt-3.5-turbo
stratus-x1ac-huge-gpt-3.5-turbo
OpenAI models are accessible without an OpenAI API key — Formation’s pool routes the request automatically. To remove the 25% pool markup and pay OpenAI directly, store your own key via LLM Key Management.
Anthropic Models
Claude Sonnet 4.5 (5 models) - Most Capable
Claude Sonnet 4.5 (5 models) - Most Capable
stratus-x1ac-small-claude-sonnet-4-5
stratus-x1ac-base-claude-sonnet-4-5 # Production quality
stratus-x1ac-large-claude-sonnet-4-5
stratus-x1ac-xl-claude-sonnet-4-5
stratus-x1ac-huge-claude-sonnet-4-5
claude-sonnet-4-5-20250929 - Best reasoning capabilities.Claude Opus 4.5 (5 models) - Maximum Reasoning
Claude Opus 4.5 (5 models) - Maximum Reasoning
stratus-x1ac-small-claude-opus-4-5
stratus-x1ac-base-claude-opus-4-5 # Research-grade
stratus-x1ac-large-claude-opus-4-5
stratus-x1ac-xl-claude-opus-4-5
stratus-x1ac-huge-claude-opus-4-5
claude-opus-4-5-20251101 - Most capable model available.Claude Haiku 4.5 (5 models) - Fastest Claude
Claude Haiku 4.5 (5 models) - Fastest Claude
stratus-x1ac-small-claude-haiku-4-5
stratus-x1ac-base-claude-haiku-4-5
stratus-x1ac-large-claude-haiku-4-5
stratus-x1ac-xl-claude-haiku-4-5
stratus-x1ac-huge-claude-haiku-4-5
claude-haiku-4-5-20251001 - Optimized for speed.Claude 4 Models (10 models)
Claude 4 Models (10 models)
Sonnet 4:Maps to Maps to
stratus-x1ac-{small|base|large|xl|huge}-claude-sonnet-4
claude-sonnet-4-20250514Opus 4:stratus-x1ac-{small|base|large|xl|huge}-claude-opus-4
claude-opus-4-20250514Claude 3.7 & 3.5 Models (10 models)
Claude 3.7 & 3.5 Models (10 models)
3.7 Sonnet:Maps to Maps to
stratus-x1ac-{small|base|large|xl|huge}-claude-3-7-sonnet
claude-3-7-sonnet-202502193.5 Sonnet (upgraded to 3.7):stratus-x1ac-{small|base|large|xl|huge}-claude-3-5-sonnet
claude-3-7-sonnet-20250219Claude 3 Models (15 models)
Claude 3 Models (15 models)
Opus (upgraded to Opus 4):Maps to Maps to Maps to
stratus-x1ac-{small|base|large|xl|huge}-claude-3-opus
claude-opus-4-20250514Sonnet (upgraded to 3.7):stratus-x1ac-{small|base|large|xl|huge}-claude-3-sonnet
claude-3-7-sonnet-20250219Haiku:stratus-x1ac-{small|base|large|xl|huge}-claude-3-haiku
claude-3-5-haiku-20241022Anthropic models are accessible without an Anthropic API key — Formation’s pool routes the request automatically. To remove the 25% pool markup and pay Anthropic directly, store your own key via LLM Key Management.
OpenRouter Models (1,800+)
Every model in OpenRouter’s catalog is available via the slash-notation format:stratus-x1ac-{size}-{or-provider}/{or-model}.
All OpenRouter models are routed through Formation’s pool by default. Supply your own openrouter_key via LLM Key Management or the X-OpenRouter-Key header to bypass the 25% pool markup.
DeepSeek
DeepSeek
stratus-x1ac-base-deepseek/deepseek-r1
stratus-x1ac-base-deepseek/deepseek-r1-distill-llama-70b
stratus-x1ac-base-deepseek/deepseek-chat-v3-0324
Meta Llama
Meta Llama
stratus-x1ac-base-meta-llama/llama-3.3-70b-instruct
stratus-x1ac-base-meta-llama/llama-3.1-405b-instruct
stratus-x1ac-base-meta-llama/llama-4-maverick
stratus-x1ac-base-meta-llama/llama-4-scout
Google Gemini (via OpenRouter)
Google Gemini (via OpenRouter)
stratus-x1ac-base-google/gemini-2.5-pro
stratus-x1ac-base-google/gemini-2.5-flash
stratus-x1ac-base-google/gemini-2.0-flash-001
stratus-x1ac-base-google/gemini-flash-1.5-8b
google/gemini-* format with X-Google-Key.Mistral
Mistral
stratus-x1ac-base-mistralai/mistral-large-2411
stratus-x1ac-base-mistralai/mistral-small-3.1-24b-instruct
stratus-x1ac-base-mistralai/mistral-nemo
stratus-x1ac-base-mistralai/codestral-2501
Qwen (Alibaba)
Qwen (Alibaba)
stratus-x1ac-base-qwen/qwen-2.5-72b-instruct
stratus-x1ac-base-qwen/qwen-2.5-coder-32b-instruct
stratus-x1ac-base-qwen/qwq-32b
stratus-x1ac-base-qwen/qwen-max
xAI Grok
xAI Grok
stratus-x1ac-base-x-ai/grok-4
stratus-x1ac-base-x-ai/grok-3-beta
stratus-x1ac-base-x-ai/grok-3-mini-beta
Perplexity
Perplexity
stratus-x1ac-base-perplexity/sonar-pro
stratus-x1ac-base-perplexity/sonar-reasoning-pro
stratus-x1ac-base-perplexity/sonar
Amazon Nova
Amazon Nova
stratus-x1ac-base-amazon/nova-pro-v1
stratus-x1ac-base-amazon/nova-lite-v1
stratus-x1ac-base-amazon/nova-micro-v1
Cohere
Cohere
stratus-x1ac-base-cohere/command-a
stratus-x1ac-base-cohere/command-r-plus-08-2024
stratus-x1ac-base-cohere/command-r7b-12-2024
Nvidia Llama
Nvidia Llama
stratus-x1ac-base-nvidia/llama-3.1-nemotron-70b-instruct
stratus-x1ac-base-nvidia/llama-3.1-nemotron-ultra-253b-v1
40+ More Providers
40+ More Providers
OpenRouter’s full catalog — including Nous Research, MythoMax, WizardLM, Yi, Phi, Falcon, and more — is available. Use
GET /v1/models to enumerate all available IDs.# List all available models
curl https://api.stratus.run/v1/models \
-H "Authorization: Bearer $STRATUS_API_KEY" \
| jq '.data[].id' | grep '/'
The OpenRouter model list is refreshed at startup. Use
GET /v1/models to see what is currently available. All OR models use Formation’s pool by default — supply your own openrouter_key to route directly and remove the 25% markup.Model Selection Guide
Fast Prototyping
stratus-x1ac-base-gpt-4o-miniFastest and cheapest - ideal for development
Production Quality
stratus-x1ac-base-gpt-4oBest balance of speed and quality
Maximum Reasoning
stratus-x1ac-base-claude-opus-4-5Most capable reasoning available
Complex Tasks
stratus-x1ac-xl-claude-sonnet-4-5Extended context for complex workflows
Open-Weight / Cost-Efficient
stratus-x1ac-base-meta-llama/llama-3.3-70b-instructStrong open-weight model at low cost
Deep Reasoning
stratus-x1ac-base-deepseek/deepseek-r1Chain-of-thought reasoning matching frontier quality
Usage Examples
Embedding Only
from openai import OpenAI
client = OpenAI(
base_url="https://api.stratus.run/v1",
api_key=os.environ["STRATUS_API_KEY"]
)
response = client.embeddings.create(
model="stratus-x1ac-base",
input="Navigate to github.com and find the latest release"
)
With GPT-4o
response = client.chat.completions.create(
model="stratus-x1ac-base-gpt-4o",
messages=[
{"role": "user", "content": "Help me debug this React component"}
]
)
With Claude Sonnet 4.5
response = client.chat.completions.create(
model="stratus-x1ac-base-claude-sonnet-4-5",
messages=[
{"role": "user", "content": "Explain how state machines work"}
]
)
With DeepSeek R1 (via OpenRouter)
response = client.chat.completions.create(
model="stratus-x1ac-base-deepseek/deepseek-r1",
messages=[
{"role": "user", "content": "Reason through this multi-step planning problem"}
]
)
With Llama 3.3 70B (via OpenRouter)
response = client.chat.completions.create(
model="stratus-x1ac-base-meta-llama/llama-3.3-70b-instruct",
messages=[
{"role": "user", "content": "Summarize the key actions on this page"}
]
)
With Gemini 2.5 Pro (via OpenRouter)
const response = await client.chat.completions.create({
model: 'stratus-x1ac-base-google/gemini-2.5-pro',
messages: [
{ role: 'user', content: 'Analyze this multi-step workflow' }
]
});
Multi-Step Rollout
import requests
response = requests.post(
"https://api.stratus.run/v1/rollout",
headers={
"Authorization": f"Bearer {os.environ['STRATUS_API_KEY']}",
"Content-Type": "application/json"
},
json={
"goal": "Find the latest TypeScript documentation for generics",
"max_steps": 3
}
)
Production Status
Currently Deployed:
api.stratus.run has the base size loaded.To use other sizes (small, large, xl, huge), contact support to load additional checkpoint files.Health Check
curl https://api.stratus.run/health
{
"status": "healthy",
"stratus_models_loaded": ["base"],
"llm_providers": ["openai", "anthropic", "openrouter"],
"vault": "connected",
"version": "1.0.0",
"git_sha": "abc1234"
}
Pricing
Pricing varies by:- Stratus size (small < base < large < xl < huge)
- LLM provider (OpenAI vs Anthropic)
- LLM model (mini < standard < opus)
API Reference
Chat Completions
OpenAI-compatible chat endpoint
Embeddings
World model embeddings endpoint
Rollout
Multi-step planning endpoint
Errors
Error codes and handling
⌘I

