Skip to content
Esc
  • OverviewGuidesWhat exists today, and where to start.
  • QuickstartGuidesKey, domain, first send — in that order.
  • AuthenticationGuidesBearer keys, the mandatory User-Agent, and what each refusal means.
  • ErrorsGuidesThe whole vocabulary, with the status each name carries.
  • IdempotencyGuidesRetry a send without sending it twice.
  • PaginationGuidesCursors are item IDs, not page numbers.
  • Rate limitsGuidesTen a second per team, and the headers that tell you where you are.
  • EventsGuidesEvery event a webhook can carry, with one real payload each.
  • DomainsGuidesThe records, where they go at each registrar, and what the page does while you wait.
  • TrackingGuidesOpens and clicks: one record, two toggles, and what an open really means.
  • ReceivingGuidesInbound mail, and the Inbox: a webhook fires, you read it, you answer it.
  • InboxGuidesChannels, personal mailboxes and seats: who sees what, and where a reply goes.
  • Node SDKGuidesThe rasket package: typed from the API's own document, retries only what is safe.
  • Python SDKGuidesThe rasket package on PyPI: the Node client's methods, in snake_case, over httpx.
  • MCP serverGuidesConnect Claude, ChatGPT or any MCP client: your scopes, no key.
  • AI assistGuidesSubject lines, drafts and diagnosis — in the dashboard and over the API, off until you allow it.
  • AgentsGuidesLet an AI agent set Rasket up: the skill, the rules file, MCP, and the recipe they share.
  • OAuthGuidesLet another app act for a team: register, authorize with PKCE, exchange, refresh.
  • Single sign-onGuidesOIDC login for your team, a domain proved by DNS, enforcement and break-glass.
  • IntegrationsGuidesVercel, Netlify and Cloudflare, plus Zapier and n8n for workflows without code.
  • SMTPGuidesSend from anything that speaks SMTP: settings, setup guides, limits and replies.
  • ZapierGuidesSend email, add contacts and react to email events from a Zap, with no code.
  • n8nGuidesThe Rasket node and trigger for n8n workflows: install, connect, every operation.
  • EmailsAPI referenceSend, batch, retrieve, list, reschedule, cancel, attachments.
  • DomainsAPI referenceAdd a domain, publish its records, verify it.
  • API keysAPI referenceCreate, list, rename and revoke credentials.
  • WebhooksAPI referencePayloads, signature verification, retries and replay.
  • SuppressionsAPI referenceAddresses we will not send to, and why.
  • LogsAPI referenceEvery request made with this team's credentials.
  • MetricsAPI referenceDelivery, bounce, complaint and engagement counts.
  • TemplatesAPI referenceVersioned email content with typed variables, addressed by ID or alias.
  • ContactsAPI referenceYour audience: contacts, their typed properties, segments and topic choices.
  • SegmentsAPI referenceAudiences defined by a filter, by hand, or both.
  • TopicsAPI referenceWhat contacts subscribe to, and the preference page's list.
  • CampaignsAPI referenceCampaigns, at /broadcasts: one message to a segment, from draft to results.
  • ImportsAPI referenceCSV uploads: column mapping, conflicts and counts.
  • AutomationsAPI referenceWorkflows that run per contact: the graph, its versions, and every run.
  • Custom eventsAPI referenceThe names your product fires, and what starts a workflow.
  • ReceivingAPI referenceMail sent to you: the message, its attachments, its raw source.
  • OAuthAPI referenceClient registration, the token endpoint, and the grants a team has given.
  • TeamAPI referenceThe team a credential belongs to: its plan, sender identity, AI flag and members.
  • BillingAPI referencePlan, usage, invoices and add-ons, and the hosted pages where a customer pays.
  • AI helpersAPI referenceSubject lines, a first draft, and why an email did what it did.

GuidesIntegrations

Integrations

Rasket on Vercel, Netlify and Cloudflare, and in Zapier and n8n. There is no hosting marketplace listing to install today; there are two routes that work on every one of those hosts.

No hosting marketplace listing, yet

A one-click Vercel Marketplace integration is deliberately deferred. A native listing is billed through the hosting provider — a second billing system beside the Stripe checkout and portal your plan already uses — and it needs a partner review that only a launched product can pass. Meanwhile, a connectable integration is just an OAuth client, which already works. So until the listing exists, pick one of the two routes below.

The two routes

  • An API key in the environment. For your own app, deployed to your own project. Create a key in the dashboard under API keys, store it as a secret environment variable, and send from server code.
  • An OAuth app. For a product that connects other people's Rasket teams — an integration you build and publish. Register it once through POST /oauth/register with a fixed redirect URI on your own host, and follow the OAuth flow. Each customer approves it for one team, and can revoke it from Settings → Team → Authorized apps.

Whichever route, the credential stays on the server. Never put a key or a token in a variable your framework exposes to the browser.

Vercel

1. Create the credential

An API key — ideally sending_access, restricted to the one domain this project sends from — or, for an integration, a registered OAuth client.

2. Add it to the project

In the project's settings, under environment variables, add RASKET_API_KEY as a sensitive variable for the environments that send. Redeploy: variables are read when a deployment is built.

3. Send from a route handler or server action

export async function sendEmail(message) {
  const response = await fetch("https://api.rasket.com/emails", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.RASKET_API_KEY}`,
      "User-Agent": "acme-billing/1.0",
      "Content-Type": "application/json",
    },
    body: JSON.stringify(message),
  });
  return response.json();
}

Send the User-Agent yourself — a request with no User-Agent is refused.

Coming soon: the rasket package is not published yet.

Netlify

1. Create the credential

As for Vercel: a narrowly scoped API key, or a registered OAuth client.

2. Add it to the site

In the site's configuration, under environment variables, add RASKET_API_KEY and mark it secret. Scope it to Functions so it never reaches a build log or the client bundle, then trigger a new deploy.

3. Send from a function

In a Netlify Function, process.env.RASKET_API_KEY holds the key, and the code above works unchanged.

Cloudflare

1. Create the credential

As above: a narrowly scoped API key, or a registered OAuth client.

2. Store it as a Worker secret

npx wrangler secret put RASKET_API_KEY

On Pages, add it as an encrypted environment variable in the project's settings instead.

3. Send from the Worker

A Worker reads secrets from env, not process.env. Plain fetch is the simplest client there — send the User-Agent yourself:

export default {
  async fetch(request, env) {
    const response = await fetch("https://api.rasket.com/emails", {
      method: "POST",
      headers: {
        Authorization: `Bearer ${env.RASKET_API_KEY}`,
        "User-Agent": "acme-billing/1.0",
        "Content-Type": "application/json",
      },
      body: JSON.stringify(message),
    });
    // …
  },
};

Zapier

To connect Rasket to other apps without code, use the Rasket app for Zapier: send email and templates, add contacts, and start a Zap when an email is delivered, bounces or is opened, when mail arrives, or when a contact is added. It connects with a Full access API key. The Zapier guide covers every step.

n8n

To use Rasket in n8n workflows, install the Rasket nodes: the Rasket node sends email and manages contacts, segments and campaigns, and the Rasket Trigger starts a workflow on Rasket's webhook events. They connect with a Full access API key. The n8n guide covers installing them and every operation.

If you are building the integration

An OAuth app has no client secret to hide, but it does have a registration access token (rkor_…), shown once, that can change its redirect URIs or delete it — and deleting a client revokes it on every team that connected it. Keep that token in your own secret store, never in the integration's shipped code.

Ask for the fewest scopes the integration needs; a customer sees each one on the consent screen before approving.