API reference / Outreach
Write samples of a step
A teammate writes a step whose emails it writes for each lead, for up to 3 people: people in the campaign, else people on its list. Nothing is saved as an email. The samples show what the step says before anyone gets it. Answers 202: poll statusUrl until they are done. Save the steps first.
post
/api/v1/campaigns/{id}/samplesOther ways to call it
CLI
troopy campaigns samplesMCP tool
troopy_write_campaign_samplesRate limit10 calls in 60 seconds, for each key
RetriesSend an
Idempotency-Key header. A retry with the same key gets the first answer back, and the operation runs one time.Path parameters
id*stringA 24-character id
Body
application/jsonstep*integerThe step, from 0
At least 0 · At most 7
Response
202 · application/jsondata*object6 properties
status*enum<string>writing: poll statusUrl every few seconds
nonewritingdonefailed
step*integer | nullThe step they are for, from 0
emails*array<object>7 properties
lead*object3 properties
name*string | nullemail*string | nullcompany*string | nullstep*integersubject*stringbody*stringnote*string | nullused*array<object>3 properties
source*stringurl*string | nullquote*stringflags*array<string>error*string | nullat*string | nullWhen they were asked for
statusUrl*stringErrors
400 invalid_inputFix the field named in detail. Each operation's schema is in /api/v1/openapi.json.
401 unauthorizedSend an API key as `Authorization: Bearer tr_live_...`. Create one in Troopy under Settings.
403 forbiddenThe key lacks a scope this operation needs, or its owner lacks the role. detail says which; create a key with the scope, or ask an organization owner or admin.
404 not_foundCheck the path and any id in it. Every operation is listed in /api/v1/openapi.json.
409 conflictThis Idempotency-Key was used for a different request, or that request is still running. Use a new key for a new request.
429 rate_limitedWait the number of seconds in Retry-After, then retry.