ArgorantDocs

Write the emails

posthttps://app.argorant.com/api/v1/campaigns/{campaign_id}/emails
POST
/api/v1/campaigns/{campaign_id}/emails

The emails in order.

Save placeholders as written. Only when the user wants them sent like that.

Replaces the sequence. The first email needs a subject. Follow-ups stay in the same thread by default and wait delay_days after the previous email. Use {{first_name}}, {{last_name}}, {{company}}, {{company_normalized}} (the name people say), {{title}} and any column you sent with the people, such as {{city}}. A person without a value for a variable never gets the email with a blank. That person waits at that email (status pending, with a hold) until the value exists. Give a variable a default for people without one: {{company_normalized|your team}} sends the value, or the words "your team" when there is none, and {{city|}} sends nothing in its place. A default is one plain line of up to 80 characters, without braces or a second |. variable_coverage in the answer counts, per variable, the people without a value. Write {a|b} to vary a phrase per person. Leftover placeholders such as [link] or TBD come back in warnings, and a launch waits until they are gone. variants adds other versions of an email, sent in turn.

CostWhat it doesKey scopes
FreeWritesargorant:manage_lists

Authorization

BearerAuth
AuthorizationBearer <token>

Your API key from app.argorant.com/profile, sent as Authorization: Bearer <key>. A connector sign-in token (ag_mcp_...) works the same way.

In: header

Path Parameters

campaign_id*string

The campaign id from create or list.

Formatuuid

Header Parameters

Idempotency-Key?string

Any unique text up to 128 characters. A retry with the same key and the same body within 24 hours returns the first answer (with the header Idempotent-Replayed: true) instead of doing the work twice. The same key with another body answers 409 idempotency_conflict.

Lengthlength <= 128
X-Request-Id?string

Your own id for this request, 8 to 64 letters, digits, dot, dash or underscore. Returned as X-Request-Id; one is made for you when you send none.

Match^[A-Za-z0-9._-]{8,64}$

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

Shell
curl -X POST "https://app.argorant.com/api/v1/campaigns/7f3a2c1e-9b4d-4e8a-a1c2-5d6e7f8a9b0c/emails" \  -H "Idempotency-Key: 6f1c2e7a-run-42" \  -H "Content-Type: application/json" \  -d '{    "emails": [      {        "subject": "Quick question, {{first_name}}",        "body": "Hi {{first_name}},\\n\\nsaw {{company_normalized}} is hiring in finance. Worth a 10 minute call?\\n\\nBest"      },      {        "body": "Bumping this up in case it got buried.",        "delay_days": 3,        "same_thread": true      }    ]  }'

JSON
{  "emails": [    {      "step": 1,      "subject": "Quick question, {{first_name}}",      "delay_days": 0,      "variants": 1    },    {      "step": 2,      "subject": "Re: Quick question, {{first_name}}",      "delay_days": 3,      "variants": 1    }  ]}