ASI:One Ultra
asi1-ultra is the most capable model in the ASI:One family. It is designed for workloads where reasoning depth and tool budget matter more than speed: long-running agentic tasks, deep research, code audits, and any plan that requires sustaining context across many steps.
If you are unsure whether you need it, start with asi1 and upgrade to asi1-ultra when you find that:
- Your task requires more than a handful of tool calls to complete
- You need the model to reason across long documents or large codebases
- You want the most thorough analysis the family can produce, and you accept a longer response time and higher cost in exchange
For most general workloads, asi1 is the right starting point. See the family comparison below.
Quickstart
- cURL
- Python
- JavaScript
curl -X POST https://api.asi1.ai/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $ASI_ONE_API_KEY" \
-d '{
"model": "asi1-ultra",
"messages": [
{"role": "user", "content": "Audit this 800-line contract and flag the top five risks"}
]
}'
import requests, os
url = "https://api.asi1.ai/v1/chat/completions"
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {os.getenv('ASI_ONE_API_KEY')}"
}
data = {
"model": "asi1-ultra",
"messages": [
{"role": "user", "content": "Audit this 800-line contract and flag the top five risks"}
]
}
response = requests.post(url, headers=headers, json=data)
print(response.json()["choices"][0]["message"]["content"])
import OpenAI from 'openai';
import dotenv from 'dotenv';
dotenv.config();
const client = new OpenAI({
apiKey: process.env.ASI_ONE_API_KEY,
baseURL: 'https://api.asi1.ai/v1',
});
const response = await client.chat.completions.create({
model: 'asi1-ultra',
messages: [
{ role: 'user', content: 'Audit this 800-line contract and flag the top five risks' },
],
});
console.log(response.choices[0].message.content);
Specifications
| Specification | Value |
|---|---|
| Model ID | asi1-ultra |
| Position | Deepest reasoning in the ASI:One family |
| Context Window | 200,000 tokens |
| Max Tool Calls per Turn | Up to 500 |
| Streaming | Supported |
| OpenAI Compatibility | Full SDK |
| APIs | Chat Completions (/v1/chat/completions), Responses (/v1/responses) |
| Rate Limits | See your API dashboard |
The 500-tool-calls-per-turn budget is the headline difference from the rest of the family. It is what makes long agentic flows possible without forcing your application to chunk work into separate turns.
Key Features
Deepest Reasoning
The most thorough analysis the family can produce. Built for multi-step reasoning, deep research, and code or contract audits.
500 Tool Calls / Turn
The largest per-turn tool budget in the family. Single turns can cover work that other models would split across many requests.
Long Agentic Runs
Sustains plans across many steps: searching, evaluating, synthesizing, iterating - without losing the thread.
Full 200K Context
Same context window as the rest of the family. Reasons across long documents and large codebases.
What asi1-ultra is for
Long-running agentic tasks
When an agent has to plan, call multiple tools, evaluate intermediate results, and continue working, the per-turn tool budget becomes the binding constraint. asi1-ultra lets a single turn cover work that other models would need to break across many requests.
Common patterns:
- A research agent that searches the web, reads sources, evaluates credibility, synthesizes findings, and writes a report
- A coding agent that reads a repository, runs tests, edits files, re-runs tests, and iterates until green
- A planning agent that gathers data from multiple services and produces a coherent recommendation
Deep research and synthesis
For multi-hop questions where the answer depends on connecting evidence from several sources, asi1-ultra reasons across longer chains without losing the thread.
Code audits and contract analysis
Static analysis of large code or legal documents benefits from the deepest reasoning mode. asi1-ultra is the right pick when you want the model to catch subtle issues, not skim.
Strategic planning
Multi-constraint planning problems where the answer requires weighing tradeoffs and exploring branches.
When to use a different model
asi1-ultra is not the best choice for every workload.
| If your workload is... | Use this instead |
|---|---|
| Real-time chat, voice, or autocomplete | asi1-mini |
| Classification or routing of short inputs | asi1-mini |
| General-purpose chat and tool calling | asi1 |
| Routine coding assistance | asi1 |
| Short, high-volume requests where cost and latency matter | asi1 or asi1-mini |
The cost and latency profile of asi1-ultra matches its capability. Reach for it when the task warrants it, not by default.
Tool calling with asi1-ultra
asi1-ultra uses the same tool-calling API as the rest of the family. The difference is the per-turn budget.
import requests, os
url = "https://api.asi1.ai/v1/chat/completions"
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {os.getenv('ASI_ONE_API_KEY')}"
}
tools = [
{
"type": "function",
"function": {
"name": "search_documents",
"description": "Search a document store and return matching passages",
"parameters": {
"type": "object",
"properties": {
"query": {"type": "string", "description": "Search query"},
"top_k": {"type": "integer", "description": "Number of results", "default": 10},
},
"required": ["query"],
},
},
},
]
data = {
"model": "asi1-ultra",
"messages": [
{"role": "user", "content": "Find every mention of 'liability cap' across my contracts and summarize"}
],
"tools": tools,
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
For a complete walkthrough of tool calling - schemas, multi-turn flows, parallel calls - see the Function Calling guide.
Migration from asi1
Switching from asi1 to asi1-ultra requires only changing the model field in the request body. The API surface, message format, tool schema, streaming behavior, and SDK compatibility are identical.
{
- "model": "asi1",
+ "model": "asi1-ultra",
"messages": [...]
}
Recommended approach:
- Identify the workloads where you currently retry, chunk, or split requests across multiple turns to fit within tool budget or reasoning depth
- A/B test those workloads against
asi1-ultraand measure quality - Roll out
asi1-ultrafor the workloads where the quality improvement justifies the cost difference - Keep
asi1as the default for everything else
Related
- ASI:One - the adaptive default
- asi1-mini - the speed-optimized counterpart
- Function Calling - tool-calling guide
- Agentic LLM - building autonomous agent flows
Ready to get started? Check out the Quick Start guide or explore OpenAI compatibility for easy integration.