Stop AI agents from burning money in production.

Hard caps enforced before execution. Per-call receipts. Kill switch. Zero API key chaos.

One Saturn key for common agent capabilities — guardrails apply to every call.

Built for production agents — per-agent limits, receipts, and kill switches.

agent session
> saturn.reason({ prompt: 'Summarize Q4 earnings...' })
280 tokens · $0.024
estimated $0.026
charged $0.024
daily used $0.89 of $5.00
policy ALLOW
> saturn.reason({ prompt: 'Analyze 200-page PDF...' })
REJECTED — would exceed daily cap ($5.00)
estimated $4.80
charged $0.00
policy REJECT (DAILY_CAP)

AI agents call APIs autonomously.
That's the problem.

What can go wrong

  • A bug burns $10k overnight
  • Agents loop and retry endlessly
  • No hard stop before execution
  • You discover costs on the invoice (days later)

What Saturn gives you

  • Hard budget caps enforced per-call
  • Calls rejected before touching providers
  • Instant receipts with exact costs
  • Kill switch to stop spend instantly

If your software can spend money, it needs guardrails.

Runtime Enforcement

Financial controls enforced before execution.

Budget checks happen before upstream calls. Over-limit requests fail closed.

Fail closed

Over-budget calls are rejected before touching upstream providers. Your agent gets an error, not a bill.

Atomic billing

Reserve → execute → settle. If upstream fails, credits are refunded. No partial charges.

Per-agent isolation

Each agent has its own key and policy. Compromise doesn't cascade. Kill one without affecting others.

Auditable receipts

Every call returns audit ID, provider, cost, and policy result — queryable by agent and time.

How it works

Add credits. Set limits. Deploy.

Add credits. Define policy. Deploy. Enforcement happens automatically.

01

Add prepaid credits

Pay with card. No subscriptions, no minimums.

02

Set spend limits

Per-call caps, daily budgets, capability restrictions. Enforced before every call.

03

Call any capability

saturn.reason(), .search(), .execute(). Guardrails apply to every call.

04

Get receipts

Every call returns cost, provider, and audit ID. Full visibility.

Integration

Single integration. Enforced everywhere.

Replace provider SDKs with one Saturn SDK. Policy applies to every call.

sdk
const saturn = new Saturn({ apiKey: process.env.SATURN_KEY })
await saturn.reason({ prompt: '...', maxPerCallUsdCents: 50 })
executed · receipt returned
rejected · BUDGET_EXCEEDED (before upstream)
Hard budget caps Over-budget calls rejected instantly.
Estimate cost before you call Cost estimated before execution.
Receipt on every call Cost, provider, and audit ID returned.
Zero API keys in your code One Saturn key. We handle the rest.

Enforcement across the providers you already use.

Same policy. Same receipts. Same guarantees.

Built for production environments.

Agent startups Running autonomous workflows in production
SaaS platforms Per-tenant spend boundaries
Platform / infra teams Centralized policy across providers
Security & compliance Audit trails and runtime controls

FAQ

What happens if my agent exceeds its budget?

The call is rejected before it touches any upstream provider. Your agent gets an error, not a bill.

What happens if Saturn is down?

Fail closed by default. If Saturn is unreachable, calls are rejected. Configurable for sandbox/dev environments.

How does billing work?

Prepaid credits via card. Add credits to your account, agents spend them per-call. Sub-cent pricing, real-time deductions, no surprise invoices.

What's the latency overhead?

Policy checks typically add low-tens of milliseconds — negligible compared to upstream provider latency.

Can I set different limits for different agents?

Yes. Each agent gets its own API key and policy — per-call limits, daily caps, and capability restrictions.

How do you estimate cost before execution?

We estimate based on provider pricing + request shape (model, token count). Settle on actuals after execution. Refund if overestimated.

Do I need to sign up with each provider?

No. Saturn handles all provider credentials. You just use one Saturn API key.

Is there a kill switch?

Yes. One click in the dashboard stops all spend for an agent instantly.

Can I override the default provider?

Yes. Use saturn.reason({ ..., provider: "anthropic" }) to specify your preference.

Can I run Saturn myself?

Yes — you can self-host. Hosted Saturn includes managed routing, pricing, and guardrails. Self-hosting is for teams that want full control. See the GitHub repo.

Capabilities

Common agent capabilities.

Guardrails apply to every call. Use what you need.

reason LLM inference — completions, summarization, extraction openai / anthropic
search Web search — query to ranked results serper / brave
read URL to clean text — articles, docs, pages jina / firecrawl
scrape URL to structured HTML — raw extraction firecrawl / scraperapi
execute Sandboxed code execution — Python, JS, shell coming soon
imagine Text to image — generation, editing replicate
speak Text to speech — natural voice synthesis elevenlabs
transcribe Speech to text — audio transcription deepgram
email Transactional email — send with templates coming soon
sms SMS — programmatic text messages coming soon

Make autonomous software
financially safe.

Add prepaid credits. Define policy. Deploy with guardrails.

Start building