Skip to content
Norbelys
Esc
↑↓navigate↵open⌘Jpreview
On this page

Direct email and sender pools

Send one HTML message directly or choose sender identities for a campaign.

Send a direct message

POST /v1/messages queues a message outside any campaign. from must name an enabled sender identity in your workspace, by its sid_… id or address. Author one html body; Norbelys derives the plain-text MIME alternative.

curl -X POST https://api.norbelys.com/v1/messages \
  -H "Authorization: Bearer $NORBELYS_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: account-notification-1042' \
  -d '{
    "from":"santi@try-arbol.com",
    "to":["ada@example.com"],
    "subject":"Hello {{ variables.company }}",
    "html":"<p>Hello {{ variables.company }}</p>",
    "variables":{"company":"Acme"}
  }'

A 202 response means the message is queued. Poll its Location to follow the state. Reuse the same idempotency key for a retry of the same request. to accepts 1–50 addresses; cc and bcc are optional, with at most 150 distinct recipients total. An optional send_at can schedule the message up to seven days ahead, and expires_at ends its usefulness. Template values and sender details are frozen when the message is created.

Send a campaign variant to one person

Use the same POST /v1/messages endpoint with step_id or variant_id and a person_id. Add to to send that person’s rendered version to a different address for preview. person_ids sends separate messages for up to 100 people and returns one result per person.

Select a campaign’s senders

A campaign’s sender pool names enabled sender identities through senders.identity_ids and/or senders.tags. A new conversation receives a usable sender from the pool; follow-ups keep that sender while it remains in the pool. The campaign’s on_sender_removed choice determines whether a conversation stops or is reassigned when its sender leaves. Connection pacing and daily budgets still apply to every message.

Was this page helpful?