# AI assist

Helpers in the dashboard, most of them over the API too: subject lines, a first draft — as HTML, or as blocks in your brand kit — a rewrite of one block, alt text for a picture, subject variants for an A/B test, an explanation of what happened to a message, and a reply to something in your Inbox. They need AI assist to be configured for your account, and they stay off until a team admin switches them on. None of them is on the send path — an email is accepted, rendered and delivered exactly as it was before.

## What it can do

| Surface | Where | What you get |
| --- | --- | --- |
| Suggest subject lines | The templates editor | Up to five subject lines for the draft on screen. |
| Draft with AI | The templates editor | An HTML and plain-text body from a brief you write. |
| Draft as blocks | The visual editor | A whole email in your brand kit, as blocks you can edit, from a brief. |
| Rewrite | A heading, text or button | The same block, shorter, longer, friendlier or as you ask. |
| Suggest alt text | A picture with no alt text | One sentence a screen reader can read aloud. |
| Subject variants | A campaign's subject | Three subject lines, each a different approach, to keep for an A/B test. |
| Diagnose this email | An email's Insights tab | Why a message did what it did, from its delivery data. |
| Draft with AI | The Inbox composer | A reply to the message you are reading, for you to edit before you send it. |

Nothing here publishes or sends. A suggested subject fills the field for you to keep or change; a draft lands in the editor and is saved only when you save it; a diagnosis is a read of what already happened.

**Draft with AI** sits in the Inbox, in the panel that opens when you reply to a conversation. It reads the message you are answering and the few turns before it, writes a short reply into the editor, and stops there — you edit it and press Send yourself, and nothing is sent until you do. It writes no sign-off, because your mailbox's signature is added under it, and it answers only from what is in the conversation: it will ask a question rather than invent a price, a date or a promise. One draft is one credit, the same credits the rest of this page spends, and there is no separate charge for it. It is in the dashboard only — there is no API call for it.

## AI in the editor

In the visual editor, **Draft with AI** sits in the dock and on an empty email. Write a brief, pick what the email is for, a tone and a length, and the draft arrives as ordinary blocks: headings, text, a button, cards. It is laid out in your brand kit — your colours, font and button style, your logo when the kit has one — and ends in a footer with your company details and an unsubscribe link. It uses no pictures from anywhere else. Into an empty email it goes whole; into one you have started, only the new content is added, before your footer. Write the brief in any language and the draft is in that language. A draft costs three credits.

Select a heading, a text block or a button and its settings card offers **Rewrite**: shorter, longer, friendlier, more formal, or your own instruction. You see the new text before anything changes, and accepting replaces that block only — its style, its links and its `{{variables}}` stay as they were. A picture with no alt text offers **Suggest alt text**, which looks at the picture when it is at an https address and otherwise works from what you say it shows. Each costs one credit.

In a campaign, **Variants** beside the subject suggests three subject lines, each a different approach and none the same as yours. **Use this one** puts one in the Subject field; **Use in A/B test** keeps all three on the campaign for an A/B test. A/B sending is not available yet, so kept variants are stored and nothing sends them. One credit.

> Everything the assistant writes is a suggestion until you accept it, and nothing is saved until the editor saves. If the answer does not fit the editor's rules it is asked once to fix it; if it still does not, you get an error and no credit is spent.

## Over the API

The same three helpers are `POST /ai/subject-lines`, `POST /ai/draft` and `POST /emails/{email_id}/diagnose` — and, in the Node client coming soon, `ai.subjectLines`, `ai.draft` and `emails.diagnose` (`ai.subject_lines` in Python). They take a `full_access` key or an OAuth token with `ai:use`, and they answer to the same switch, the same credits and the same rate limit as the dashboard. None of them touches a send: nothing is saved or sent, and there is no AI field on `POST /emails`. The [AI reference](https://www.rasket.com/docs/api-reference/ai) has each call and the order the refusals come in. The editor's helpers are there too: `POST /ai/draft-blocks` answers a block document you can save as a visual template's `design`, and `POST /ai/rewrite`, `POST /ai/alt-text` and `POST /ai/subject-variants` answer a block, a sentence and three subject lines. Keep variants on a campaign with `subject_variants` on `PATCH /broadcasts/{id}`.

## What is sent, and what is not

Requests go to Anthropic's API. The content you ask about is sent to generate the answer, it is not used to train models, and it is not kept by us beyond what is described below.

- **Subject lines and drafts** send the template content on your screen — the subject, the HTML and the plain text — plus the brief you typed.
- **An Inbox reply draft** sends the conversation: the subject, the message you are answering and up to four earlier messages, each cut to a length we cap. Every address in them is removed first, senders’ included — only display names travel.
- **A diagnosis** sends the email's subject, your sending domain and its verification status, each recipient's **domain** with its delivery status and bounce classification, the event timeline, the risk flags and the message size.
- **A recipient's address is never sent.** Only the part after the `@` travels, and every free-text field — a bounce's diagnostic code, an event's message, the subject — has addresses stripped out of it first.
- A message **body** is never sent for a diagnosis, and neither are headers, attachments or anything belonging to another team.

> We store what the request cost — the kind, the model, token counts, how long it took and whether it succeeded — and, for a diagnosis only, the answer itself. We do not store the prompt or the completion text of anything else. These records are kept for 90 days.

## Limits

| Limit | What it means |
| --- | --- |
| Configured for your account | AI assist needs a provider on the account. Where there is none the controls are switched off and every AI request answers 503 — nothing is recorded and no credit is spent. |
| Off by default | A team admin turns it on in Settings → Team, or a full_access key sends PATCH /team with ai_assist_enabled. Nothing runs until then. |
| Monthly credits | An accepted request is one credit, and a draft as blocks is three. When fewer are left than a request costs it answers 422 until the month turns over. |
| Ten a minute | Per team, across every surface. The eleventh answers 429. |

Your plan sets the monthly credits, and Settings → Team shows how many are left. A request that fails on our side or the model's costs nothing: only an accepted answer spends a credit.

A diagnosis is stored against the email, so reopening it costs nothing. Asking again after new events have arrived is a new question about a changed message, and spends a credit.

An email that failed on our mail servers' side is not sent to the model. The answer gives the recorded reason and what you can do, marked `cause: provider_failure`, and costs nothing.

## Help assistant

The help drawer in the dashboard has its own assistant. It answers questions about Rasket and nothing else. Ask it about something else and it says so in one sentence.

- **What it sees:** your question, the dashboard page you asked from, and our public documentation.
- **What it can look up about your account:** your domains and the DNS records they need, your plan and this period’s usage, recent bounces and failures by recipient domain, your API keys by name and permission, your webhook endpoints and their health, and whether receiving is set up. It looks these up only to answer you, it can never change any of them, and it checks at most three of them per answer.
- **What it never sees:** recipient addresses, message bodies, API key values, webhook signing secrets, card details, and anything belonging to another team. Addresses in your question are removed before it is sent, and so is any address in what it looks up — it is told the recipient domain and never the address.
- **Who can use it:** everyone on the team. It does not need the AI assist switch and costs no credits.

> Messages are sent to a model provider to answer them and are never used to train models. We keep the conversation for 90 days so we can improve the answers.

## Check the answer

A model writes plausible text, not verified fact. A subject line is a suggestion, a draft is a starting point, a diagnosis is a reading of the same events you can see on the page yourself, and an Inbox reply is words for you to check before you put your name to them. Nothing it produces is applied to anything until you apply it.
