docs

Let your assistant send

Start, approve and resume campaigns from an assistant or a script. Every send needs a key you allowed to send, a card you saw, and a 10-minute wait you can undo.

An assistant or a script can start a campaign, approve people's emails, resume a paused campaign and send you a test. It can only do that with a key you allowed to send, and only after it shows you a card. Then nothing happens for 10 minutes, so you can change your mind.

Allow a key to send

Open Settings, then Developers, and tick Can send email on the key. A key without the tick can still build drafts, but every send answers "This key can't send email". The scope behind the tick is finder:send.

Assistants you connected with the Connect and Allow button, such as Claude.ai or ChatGPT, never send. To let an assistant send, connect it with a key instead.

A test key never sends.

The card

Every send asks twice. The first call sends nothing and returns a card: a summary of exactly what will happen. It says:

  • how many people, and how many emails over how many days
  • which mailbox they come from
  • when the first one goes out, in your time zone
  • the daily limit
  • how many people your do-not-contact and removal lists left out
  • what the app's review screen would show you, such as the main-domain warning

The assistant should show you the card as it is. If you say yes, it calls again with the card's preview_token.

A token works once, for 15 minutes, for the same key and the same request. If an email changes after the card, the token stops working and the assistant gets a fresh card to show you. You never approve words you didn't see.

The 10-minute wait

After your yes, nothing happens for 10 minutes. This is the hold. Until it ends, recruit_undo (or POST /agent-actions/{id}/undo) pulls it back, and nothing is sent. After the hold, pause or stop the campaign instead.

When the hold ends, the send runs through the same steps as the buttons in the app. Your sending hours, your daily limit, your do-not-contact list and anyone who asked to be removed all still apply to every email.

A test send to your own address isn't held. It goes to you alone, marked [Test].

What an assistant can send

WhatAPIAssistant tool
Start a campaign (approves it and says yes to everyone on the card)POST /campaigns/{id}/launchrecruit_launch_campaign
Approve a campaign's emailsPOST /campaigns/{id}/approverecruit_approve_campaign
Resume a paused campaignPOST /campaigns/{id}/resumerecruit_resume_campaign
Approve some people's emailsPOST /campaigns/{id}/approve-peoplerecruit_approve_people
Approve everyone still waitingPOST /campaigns/{id}/approve-remainingrecruit_approve_remaining
Approve a weekly batchPOST /campaigns/{id}/batch/approverecruit_approve_batch
Add people to a started campaignPOST /campaigns/{id}/late-addrecruit_late_add
Send yourself the first emailPOST /campaigns/{id}/test-sendrecruit_send_test
Finish a start that waited for a mailboxPOST /campaigns/{id}/finish-startrecruit_finish_start
Start campaigns held while your plan or mailbox was awayPOST /campaigns/restartrecruit_restart_held
Undo inside the holdPOST /agent-actions/{id}/undorecruit_undo
See what your assistant sentGET /agent-actionsrecruit_agent_actions

Pause and stop only ever send less, so they need no card and no tick: Draft campaigns from your assistant.

When a send is refused

CodeWhat it means
send_scope_requiredThe key doesn't have Can send email ticked.
card_missingThe call had no preview_token. The answer is the card.
card_changedSomething on the card changed since you saw it. The answer has the new card.
card_usedThat card was already used. Ask for a fresh one to do it again.
card_expiredThe card is more than 15 minutes old. The answer has a fresh one.
send_not_queuedThe send couldn't be queued, so nothing will go out. Try again in a minute.

Was this page helpful?