Platform

Pricing & limits

Most channels are free: you bring your own token or number, or run on an anonymous sandbox key. A few channels ride Caspian's own network and are billed at cost, drawn from a credit balance. Your first sign-in adds $100 in free credit.

The model

There are two kinds of channel, and the difference is who owns the pipe.

Sign in once and you get $100 in free credit. At the per-message rates below that is tens of thousands of messages before you pay anything. Your sandbox key upgrades in place. See Authentication.

Free vs paid

ChannelCostWhat you bring
EmailfreeNothing: an inbox on our domain, or your own domain
TelegramfreeA @BotFather bot token
DiscordfreeThe shared bot, or your own bot token
SlackfreeOne-click install, or your own app
SMS & WhatsApp (BYO)freeYour own Twilio or Telnyx number (you pay the carrier)
X (Twitter)Sign-in, runs on Caspian's network
WhatsApp (Meta)Sign-in, Caspian's Meta number
iMessageSign-in, runs on Caspian's network

Per-message cost of paid channels

These are the provider costs the gateway passes through, per message. There is no markup and no monthly fee. You are billed only for what you send and receive on a paid channel.

ChannelOutboundInbound
X (Twitter) DM~$0.015~$0.005
WhatsApp (Meta)~$0.005~$0.005
iMessage~$0.01~$0.01
Emailnegligiblenegligible

Rates are approximate and track the underlying provider; they can shift as those providers change their pricing. Free channels never draw from your balance: a Telegram bot or an SMS on your own Twilio number costs Caspian nothing.

Starting free, upgrading later

You do not need an account to build. Mint an anonymous sandbox key and every free channel works immediately:

curl -s -X POST https://api.trycaspianai.com/v1/projects/sandbox \
  -H 'Content-Type: application/json' -d '{"name":"my-agent"}'

Connecting a free channel is one call; a paid channel is the same shape but needs a signed-in key. The handler never changes.

agent.py
from caspian_sdk import CommClient

client = CommClient()                          # reads COMM_API_KEY from env / .env

# Free: works on a sandbox key, no billing
client.connect_email()
client.connect_telegram(bot_token="123:abc")

# Paid: needs a signed-in key; billed at cost from your $100 credit
client.connect_x(
    access_token="...",
    access_secret="...",
    user_id="...",
)
agent.ts
import { CommClient } from "caspian-sdk";

const client = new CommClient();               // reads COMM_API_KEY from env / .env

// Free: works on a sandbox key, no billing
await client.connectEmail();
await client.connectTelegram({ botToken: "123:abc" });

// Paid: needs a signed-in key; billed at cost from your $100 credit
await client.connectX({
  accessToken: "...",
  accessSecret: "...",
  userId: "...",
});

To move from a sandbox key to a signed-in one, run the device sign-in and pass your current key so everything you built carries over. See Authentication for the full flow.

Rate limits

Rate limits are enforced per API key, not per channel or per account. A sandbox key and a signed-in key each get their own budget, so load on one project never throttles another.

!

When a key exceeds its limit the gateway returns 429. listen() already backs off and retries transient errors, so a normal agent loop rides through short bursts without dropping messages. If you are sending high volume, spread it across keys or contact us to raise the limit.

Next steps

Authentication →
Sandbox keys, device sign-in, and the $100 credit.
Channels →
What each channel needs and how to connect it.