Send a triggered email
Queues one email from a trigger. The trigger must belong to the workspace the API key is scoped to, and must be a triggered (API) trigger.
A 200 means the email is queued, not that the provider accepted it.
Delivery status shows up in the trigger's delivery log.
locale picks the trigger's template for that locale when one is set,
otherwise the trigger's default template. The match is exact and
case-sensitive.
bearerAuthAuthorizationBearer <token>An API key from Workspace → API Keys, starting with snl_.
application/json- body
id?|Trigger id. Either id or campaignId is required; id wins if both are sent.
campaignId?|DeprecatedOlder name of id, still accepted.
to*stringThe recipient. One address per request.
emaildata?Values for the template's merge tags, e.g. { "order": { "total": 42 } } for {{order.total}}.
locale?stringPicks the trigger's template for this locale (e.g. en, de). Exact, case-sensitive match.
subject?stringReplaces the template's subject for this send. Merge tags are resolved in it.
The email is queued.
application/json- response
success*booleanmessage*stringcurl -X POST 'https://senlo.io/api/triggered' \ -H 'Content-Type: application/json' \ -d '{ "id": 12, "to": "customer@example.com", "locale": "en", "data": { "order": { "number": "A-1049", "total": "42.00" } }}'{ "success": true, "message": "Email queued successfully"}Send a contact event POST
Identifies a contact by email, creates or updates it, and starts every active automation whose trigger listens for the event. | Event | Contact must exist | What it does | | --- | --- | --- | | `contact_added` | no | Creates the contact, or updates `name` and replaces `metadata` of an existing one. | | `contact_updated` | yes | Updates `name` and `locale`, merges `metadata` into the contact's metadata. | | `tag_added` | yes | Adds `metadata.tags` to the contact's tags, without duplicates. | | `order_created` | no, created if missing | Starts automations listening for purchases. | | `event_triggered` | no, created if missing | A custom event; carry your own data in `metadata`. |
One-click unsubscribe POST
The address the `List-Unsubscribe` header of every email points at. Mail providers such as Gmail and Yahoo post to it when the recipient clicks their built-in unsubscribe button (RFC 8058). You do not call it yourself. Responses are plain text, not JSON.