One contract, no private surface
The API is the whole platform. The console, the CLI and the TypeScript SDK are thin clients over exactly the contract you get — there is nothing the product can do that your own code cannot.
One API for the whole lifecycle of an agent — configure it, version it, give it knowledge and tools, put it in front of people on the channels they already use, and read back what it did and what it cost.
curl -X POST \
"https://api.naturali.ai/v1/projects/$PROJECT/agents/$AGENT/generate" \
-H "Authorization: Bearer $NATURALI_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "messages": [{ "role": "user", "content": "What is our refund window?" }] }'The API is the whole platform. The console, the CLI and the TypeScript SDK are thin clients over exactly the contract you get — there is nothing the product can do that your own code cannot.
Generate on the managed catalog with no vendor account of your own, or bring your credential and keep the relationship. Route across providers with ordered failover, and see the cost of every generation either way.
Guardrails gate what an agent may do, approvals put a human in front of the decisions that need one, and evals score a version against a dataset before it is promoted. Traces are how you read a run back afterwards.
How it works
A model, a prompt, the tools it may call, and the knowledge it answers from — versioned, so a change is a release rather than an edit in place.
Upload files and let an ingestion pass chunk and embed them; connect HTTP or MCP tools; give it memory that survives the conversation.
Bind the agent to WhatsApp or Discord and the platform runs the conversation — routing, sessions and message history included — or call it directly from your own product.
Score the new version against a dataset, read the traces of what it actually did, and check the spend against the quota before it goes to everyone.
Capabilities
Versioned agents, HTTP and MCP tools, durable sessions, transcripts.
Files, documents, ingestion rules, embeddings and knowledge search.
WhatsApp and Discord, per-identifier routing, addresses and erasure.
A managed catalog, your own credentials, and ordered failover routes.
Datasets, scored eval runs, and a readable record of every run.
Gate an action, require a human, and record what the decision changed.
Workflows, tasks, orchestrations, and triggers on a schedule or a hook.
Project quotas, an activity feed, and an audit log of every request.
Clients
The SDK, the CLI and the REST reference are all generated from the same OpenAPI documents the API serves, so none of them can lag behind it.
pnpm add -g @naturali/cli
export NATURALI_TOKEN=nat_sk_...
naturali create-agent-generation \
--project-id "$PROJECT" --agent-id "$AGENT" \
--messages '[{"role":"user","content":"What is our refund window?"}]'import { NaturaliClient } from '@naturali/sdk';
const naturali = new NaturaliClient({ token: process.env.NATURALI_TOKEN });
const { data, error } = await naturali.agents.createAgentGeneration({
path: { project_id: process.env.PROJECT!, agent_id: process.env.AGENT! },
body: {
messages: [{ role: 'user', content: 'What is our refund window?' }],
},
});Pricing
A monthly plan sets what a project can reach: runs, projects, channels, retention and features. A prepaid balance pays for the managed models it uses, spent near cost. Bring your own model credential and the second axis costs nothing — your vendor bills you.
$0forever
Build one agent and prove it works on your data.
$49per month
Put an agent in production with a human in the loop.
$249per month
Volume, a longer record and an audit log of every request.
Customby contract
Your limits, your retention window, an SLA and a DPA.
One run is one agent generation, whether it came from your code, a channel message, a workflow or an orchestration. Billed on the calendar month, prorated on signup. Pay annually and two months are free: $490 for Pro, $2,490 for Business.
Create a project, point an agent at a model and run your first generation — the quickstart is one page.