ArgorantDocs

Set up personal lines

puthttps://app.argorant.com/api/v1/campaigns/{campaign_id}/personalization
PUT
/api/v1/campaigns/{campaign_id}/personalization

1 to 5 variables.

The email text the lines go into, up to 10,000 characters (optional; helps whoever writes the lines).

Allow links inside the lines (default false).

Sets the campaign's personal-line variables, each with a name, an instruction for the writer and a fallback that reads well for anyone. Put {{custom_name}} into the emails where the line goes. Everyone without their own line gets the fallback at once, so the campaign can launch at any time.

The limits are 1 to 5 variables per campaign, an instruction of up to 4,000 characters, 20 to 300 characters per line (max_length, 150 by default; the fallback counts too) and a template of up to 10,000 characters. Up to 30 setups an hour per workspace. A line used in the middle of a sentence is saved with a lowercase first letter ("Hiring managers at" becomes "hiring managers at"), while acronyms, names, brands and places (CFOs, AWS, Chicago) stay as written. That is case: "auto", the default: it follows where your emails use the variable, and a line that starts a sentence keeps its first letter. sentence_middle lowercases wherever the variable is used, as_is keeps every line exactly as written. Saving brings lines already saved to the case in use; case_in_use in the answer shows it per variable. The fallback is always kept as you wrote it.

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 PUT "https://app.argorant.com/api/v1/campaigns/7f3a2c1e-9b4d-4e8a-a1c2-5d6e7f8a9b0c/personalization" \  -H "Idempotency-Key: 6f1c2e7a-run-42" \  -H "Content-Type: application/json" \  -d '{    "variables": [      {        "name": "opener",        "instruction": "One sentence about something recent at their company.",        "fallback": "Hope the quarter is going well."      },      {        "name": "buyers",        "instruction": "Who they sell to, 4 to 10 words, e.g. \'restaurants that need payroll help\'.",        "fallback": "businesses like yours",        "max_length": 120,        "case": "sentence_middle"      }    ]  }'
JSON
{  "campaign_id": "7f3a2c1e-9b4d-4e8a-a1c2-5d6e7f8a9b0c",  "personalization": {    "variables": [      {        "name": "custom_opener"      }    ]  },  "progress": {    "total": 1188,    "written": 0,    "fallback": 1188  },  "notes": [    "Renamed to the custom_ form: opener -> custom_opener. Use these names in the emails, e.g. {{custom_opener}}."  ],  "fallbacks_written": 1188,  "summary": "Saved 1 variable: {{custom_opener}}. Put it in the emails where the line goes.",  "limits": {    "variables_per_campaign": 5,    "instruction_characters": 4000,    "line_characters": {      "min": 20,      "max": 300,      "default": 150    },    "template_characters": 10000,    "basis_characters": 200,    "contacts_per_call": 5000,    "contacts_per_status_page": 5000,    "file_rows": 200000,    "file_megabytes": 50,    "file_rows_written_at_once": 5000,    "calls_per_hour": {      "setup": 30,      "write": 300,      "status": 300,      "file": 30    }  }}