Connect the account
1
Create a Resend API key
At
resend.com/api-keys, create a key with sending permission. It starts re_.2
Add the integration
In the dashboard, go to Integrations, press + Add integration, choose Resend, give it a name and paste the key.The key is stored as a workspace secret — by default under the name
RESEND_API_KEY, or a suffixed variant if that name is already taken — and the integration keeps a {{secrets.NAME}} reference to it. You can also paste an existing reference instead of a raw key.3
Check it is active
A batch will only accept an integration whose
provider is resend and whose status is active. An integration in disabled, needs_reconnect or error is refused at create, and a live batch that hits one stops.POST /v1/integrations:
Sender verification is domain-level
Resend verifies domains, not addresses. Onceyourdomain.com is verified, any local part on it sends — hello@, priya@, no-reply@ — and there is no list of addresses anywhere to enumerate or approve.
That is why the sender endpoint returns domains:
from_email whose domain is not in that list right now is refused in three places:
The check is a live call to Resend each time, so it costs a round trip and it is worth it: “that domain is not verified” is a sentence you can act on while you are standing there, and fifty failed rows twenty minutes later is not.
What “verified” means on Resend’s side
Adding a domain in Resend is not the same as verifying it. Resend hands you a set of DNS records to publish — an MX and a TXT record for the return path and SPF, a TXT record carrying the DKIM key, and a CNAME for open and click tracking — and then watches for them. Resend reports one of these states for a domain:GET /v1/email/senders returns only domains Resend reports as verified and whose sending capability is not disabled — nothing else. A domain sitting at partially_verified will not appear, even though part of it is verified, so finish verification on Resend before you create the batch.
A domain can drop out of that list without anyone touching Talqing. If your DNS records stop resolving, Resend moves the domain to
temporary_failure, and from that moment every create, patch and send press against it is refused until the records come back.Choosing the sender
Three fields on a batch describe who the email is from:string
required
The default sending address. Its domain must be verified on the connected account right now. Whitespace is trimmed.
string | null
Optional display name, at most 200 characters. With a name the header is
Name <address>; without one it is the bare address.string | null
Optional, and where replies land. It is not validated against your verified domains — only that it parses as an address. Talqing does not read replies. There is no inbox, no reply parsing and no reply webhook; whatever you put here is a mailbox you own and read yourself.
from_email, from_name and reply_to for that call alone, which is how one list gets worked through from more than one address. The batch’s own defaults are untouched, so the next press starts from them again. See reviewing and sending.
One account per batch
The Resend account is not overridable per send, and there is no field onPATCH that moves a batch to a different one. A different account is a different credential, a different rate limit and a different suppression list — which makes it a different batch.
The same is true of the task: a batch’s task_id and integration_id are fixed for its whole life.
If the integration is deleted while a batch is live, the batch’s integration_id goes null, integration_name reads as disconnected, and the next send stops the batch with a message saying the account has been disconnected.
Resend as an agent tool is a different thing
The same Resend integration can also be attached to an agent or a task as an MCP server, which gives the model Resend’s own tools to call. That is unrelated to batches, and the two never meet. A batch never asks a model to send an email. Sending happens after the human review gate, from our backend, over Resend’s REST API, with an idempotency key, a pace and a retry policy — none of which a model’s tool call can be made to have. See the integrations catalog for the tool side.Create a batch
The list, the column space, and everything refused at create.
Connecting integrations
Credentials, secrets, and connecting from the dashboard or the API.