Changelog
हाल ही में शिप किया गया।
पृष्ठ 2
feature
Verify: send the passcode on another channel when it never arrives
When a user tells your app the passcode never arrived, you can now move them to another channel on demand. POST /v1/verify/verifications/next-channel advances a live verification to the next channel in its plan and sends a fresh code there, without waiting out the resend cooldown a second create would honour.
Until now the only way onto the next channel was to let Verify get there itself, after a send failed or a delivery report came back terminal. Neither helps the common case: the message was accepted, nothing came back to say otherwise, and the user is still staring at an empty inbox. This is the endpoint behind an "I didn't receive my code" button.
What's new
- One call, keyed by the recipient. Pass the same
toyou created the verification with, exactly as you do for a check. There is still no verification id to store. - No cooldown, no lost codes. A deliberate channel switch sends immediately, and every code already sent stays valid, so a message that turns up late still verifies.
- The response tells you where it went. You get the verification back with
last_channelnaming the channel the new passcode was sent on. - On every surface. The SDKs expose it as
Verify.Verifications.NextChannel(Go),verify.verifications.nextChannel(TypeScript), andverify.verifications.next_channel(Python), the CLI asbird verify verifications next-channel, and the MCP server as theverify_verifications_next_channeltool.
A verification whose channel plan has no further channel answers 422 with NoNextChannel; fall back to calling create again to resend on the current channel. Send the code on another channel covers the flow and the rest of the error cases.
feature
Broadcasts: send to a stored audience, now available to all workspaces
Bird's dashboard now has broadcasts. Pick a stored audience and a published email template, and Bird resolves the audience's current members into a recipient list at send time, so reaching everyone in it takes naming the audience rather than listing addresses yourself.
Getting started
What's available
- A three-step composer: pick the audience and sender in Recipients, the published template in Content, and the category, tracking, and tags in Review. Submitting only ever creates or saves a draft; sending is a separate, explicit step.
- Send now or schedule ahead: schedule up to 365 days out, and reschedule a scheduled broadcast right up until it starts sending.
- Per-broadcast delivery tracking: recipients, sent, delivered, bounced, complained, opens, and clicks on the broadcast's own detail page, plus a per-recipient timeline and event view.
- Clear failure reasons: a failed broadcast names why on its detail page, from an empty audience to a template that no longer renders, so you know what to fix before you resend.
Broadcasts is a dashboard feature today, with no public API, CLI, or SDK surface.
feature
Agent Mailboxes: programmable two-way email for AI agents
Agent Mailboxes give your AI agents a durable email address they can own, read, and reply from. Every inbound message lands in a conversation thread with parsed body text and attachment metadata; your agent reads it and replies in one API call. No mail server to run, no domain to verify.
Getting started
- Create an API key in the dashboard — under the Email group, enable the
mailboxscope. - Agent Mailboxes quickstart: claim an address, receive your first message, and send a reply in under five minutes.
- Agent Mailboxes guide: full API reference, receive rules, retention, and webhook payloads.
What's available
- Claim an address: omit the local part and Bird generates a unique address (
abc123@inbox.ai) at no extra cost. On paid plans, choose your own handle (support@inbox.ai) or use your own inbound-enabled domain. Each mailbox has a receive policy (open,replies_only,allowlist,drop), per-sender allow/block rules, and a 30-day retention window. - Read conversations: inbound mail groups into threads automatically. Each message carries quote-stripped
extracted_text— the new content only, without the history your agent would otherwise have to parse. Threads have placement labels (inbox,archive,spam,blocked, plus any custom label), unread state, and alast_directionfield so your agent always knows whether the last move was theirs. - Reply and compose: reply to a message in one call — the reply folds into the existing thread and sends from the mailbox address. To start a fresh outbound conversation, compose from the mailbox; the response carries a thread ID for tracking replies.
- Webhooks: subscribe to
email_mailbox.message_received,email_mailbox.thread_created,email_mailbox.message_sent,email_mailbox.message_delivered, andemail_mailbox.message_failed. Only inbox-placement mail fires webhooks — spam and blocked mail is stored silently.
Available on every surface
- REST API:
/v1/email/mailboxes+/v1/email/threads— newmailboxandmailbox_managementAPI key scopes. - TypeScript SDK:
bird.mailbox,bird.mailboxThread,bird.mailboxThreadMessage. - Python SDK:
client.mailbox,client.mailbox_thread,client.mailbox_thread_message. - Go SDK:
client.Mailbox,client.MailboxThread,client.MailboxThreadMessage. - CLI:
bird email mailboxes·bird email threads·bird email threads messages. - MCP: full tool set —
email_mailboxes_*,email_threads_*,email_threads_messages_*.
feature
WhatsApp is now a Verify channel
You can now deliver one-time passcodes over WhatsApp, alongside SMS and email. WhatsApp OTPs are sent from the shared Bird Authifly sender — the same "Authifly" brand you already see on our shared email sender — using the built-in authentication template, so there's no template or sender setup required. Support for your own dedicated senders is following shortly.
What's new
- Enable WhatsApp per country from the Verify → Countries settings in the dashboard.
- Automatic failover: if the primary channel can't deliver, Verify falls back through your configured channels before giving up.
- API & SDK:
whatsappis now a valid value for a verification'schannel, and country routes accept awhatsappkey in their per-channel settings. This is additive — no breaking change.
Default routing change
Existing phone verifications now default to SMS → WhatsApp → email: SMS stays primary, with WhatsApp as an automatic fallback before email. Countries you've already customized are left untouched.
feature
WhatsApp events can now be delivered as webhooks
WhatsApp lifecycle events are no longer poll-only. Subscribe to any whatsapp.* event type from the dashboard's Webhooks page or with POST /v1/webhooks, and Bird pushes the same accepted, sent, delivered, read, and failed events you'd otherwise fetch from GET /v1/whatsapp/messages/{message_id}/events. Each delivery carries whatsapp_id, workspace_id, the message direction, from/to addresses (phone number and/or Meta business-scoped user ID), and the tags and metadata from the original send; failed messages include an error object with a Bird-stable failure code. See WhatsApp events.
Also in this release:
- Inbound email messages (get, list) now return an
authenticationfield (pass,fail, orunknown) giving a single verdict on whether the sender's identity was verified, alongside the existing SPF/DKIM/DMARC flags. - New guide: Plan changes & renewals spells out exactly when plan upgrades, downgrades, and cancellations take effect, and the day-by-day sequence for a failed renewal payment. It also documents that overage on paid plans is capped at 5x your plan's included email volume per period, with sends rejected past that ceiling until the period resets; the Free plan has no overage at all.