Set up personal lines
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.
| Cost | What it does | Key scopes |
|---|---|---|
| Free | Writes | argorant:manage_lists |
Authorization
BearerAuth 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
The campaign id from create or list.
uuidHeader Parameters
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.
length <= 128Your 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.
^[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
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" } ] }'{ "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 } }}