Changelog · back to all

Record messaging preferences over the API

feature

The messaging preference store is now a public API. Preferences are stated consent grants and opt-outs, keyed by channel and handle (an email address or phone number), and they already decide delivery for every send: an opt-out blocks marketing traffic, and one recorded for all messages blocks transactional traffic too.

What's new

  • GET/POST /v1/preferences and GET/DELETE /v1/preferences/{preference_id} are available to API keys carrying the new preferences scope. Recording a grant with consented_at evidence is also the documented way to resume mailing someone after an unsubscribe.
  • The bird preferences CLI group and matching MCP tools cover the same operations, and all four SDKs gain a preferences resource with typed results.
  • Four webhook event types are now public: preference.granted, preference.revoked, preference.deleted, and whatsapp_suppression.created. Each fires only when a statement actually changes a record.

Statements are ordered by when they were made rather than when they arrive, so an out-of-order write answers applied: false with the surviving statement instead of applying. A statement the recipient made themselves, such as an unsubscribe or a stop keyword, cannot be deleted through the API; it ends only when they opt back in.

Read more in the webhooks guide and the API reference.

Start with one channel.
Add the others when you're ready.

A test API key is yours immediately. Production unlocks when you add a payment method and verify a sender.

Using Claude Code, Cursor, or Codex? Copy a setup prompt and your agent installs the Bird CLI and skills for you. Pick yours:

Cursor