Message streams
Every email sends on a message stream. Streams come in two types:
| Type | For | Unsubscribes |
|---|---|---|
transactional |
One-to-one mail: receipts, resets, notifications | Not applied: always delivers |
broadcast |
One-to-many marketing | Applied: unsubscribed recipients are blocked |
Teams get a default stream of each type automatically. Sends without a stream_id use the
default transactional stream; broadcasts ride a broadcast stream, so
unsubscribed contacts are skipped without any work on your side.
The type is the point: unsubscribes only block broadcast-stream mail: someone who opted out of your newsletter still gets their password reset. Bounce, complaint, and manual suppressions block every stream.
Managing streams
Section titled “Managing streams”Create additional streams to separate traffic classes (and report on them independently):
curl https://api.sendsignal.dev/streams \ -H "Authorization: Bearer ss_..." -H "Content-Type: application/json" \ -d '{"name": "Digest", "stream_type": "broadcast", "description": "Weekly digest"}'GET /streams/GET /streams/{id}: list and inspect (type, default flag, archived state).PATCH /streams/{id}: rename, change description, or assign a dedicated IP pool (ip_pool_id; empty string clears it).POST /streams/{id}/archiveand/unarchive: retire a stream without deleting history.
Send on a specific stream by passing its id as stream_id on
POST /emails, and slice reporting per stream with
GET /emails?stream_id=… and GET /stats/emails?stream_id=….