Bird API

The current Bird platform API: one REST API for email, SMS, WhatsApp, verification, lookup and Realtime, plus workspaces, organizations, teams, sending domains, dedicated IPs, suppressions, contacts and audiences. 277 operations over 216 paths, described by a first-party OpenAPI 3.1 document Bird publishes at https://bird.com/openapi.json and generates its SDKs from. Bearer API keys prefixed bk_{region}_ or OAuth 2.0 access tokens from platform.bird.com; opt-in Idempotency-Key on every mutating request; IETF RateLimit response headers; a stable, documented error-code catalog; and Standard Webhooks event delivery.

Operations 282

Showing the first 250 of 282. The full set is in the contract, and via get_provider_operations.

GET /v1/docs/search Get documentation search results #
GET /v1/docs/pages Get a documentation page #
GET /v1/workspace Get the current workspace #
GET /v1/realtime/regions List Realtime regions #
POST /v1/realtime/apps Create a Realtime app #
GET /v1/realtime/apps List Realtime apps #
GET /v1/realtime/apps/{realtime_app_id} Get a Realtime app #
PATCH /v1/realtime/apps/{realtime_app_id} Update a Realtime app #
DELETE /v1/realtime/apps/{realtime_app_id} Delete a Realtime app #
POST /v1/realtime/apps/{realtime_app_id}/events Publish a Realtime event #
POST /v1/realtime/apps/{realtime_app_id}/batch-events Publish a batch of Realtime events #
GET /v1/realtime/apps/{realtime_app_id}/channels List Realtime channels #
GET /v1/realtime/apps/{realtime_app_id}/channels/{channel_name} Get a Realtime channel #
GET /v1/realtime/apps/{realtime_app_id}/channels/{channel_name}/members List members on a presence channel #
POST /v1/realtime/apps/{realtime_app_id}/members/{member_id}/disconnect Disconnect a member #
POST /v1/realtime/apps/{realtime_app_id}/members/{member_id}/events Send an event to a member #
GET /v1/realtime/apps/{realtime_app_id}/keys List a Realtime app's keys #
POST /v1/realtime/apps/{realtime_app_id}/keys Create a Realtime app key #
POST /v1/realtime/apps/{realtime_app_id}/keys/{realtime_app_key_id}/revoke Revoke a Realtime app key #
POST /v1/email/messages Create an email message #
GET /v1/email/messages List messages #
POST /v1/email/batches Create a batch of email messages #
GET /v1/email/messages/{message_id} Get a message #
POST /v1/email/messages/{message_id}/cancel Cancel a scheduled message #
GET /v1/email/messages/{message_id}/recipients List recipients of a message #
GET /v1/email/messages/{message_id}/events List events for a message #
GET /v1/email/messages/{message_id}/content Get stored message content #
GET /v1/email/messages/{message_id}/attachments/{attachment_id} Get a message attachment #
POST /v1/email/broadcasts Create a broadcast #
GET /v1/email/broadcasts List broadcasts #
GET /v1/email/broadcasts/export Export broadcasts as CSV #
GET /v1/email/broadcasts/{broadcast_id} Get a broadcast #
PATCH /v1/email/broadcasts/{broadcast_id} Update a broadcast #
DELETE /v1/email/broadcasts/{broadcast_id} Delete a broadcast #
GET /v1/email/broadcasts/{broadcast_id}/counts Get a broadcast's audience counts #
GET /v1/email/broadcasts/{broadcast_id}/send-quota Get how much of a broadcast the send allowance covers #
GET /v1/email/broadcasts/{broadcast_id}/recipients List recipients of a broadcast #
GET /v1/email/broadcasts/{broadcast_id}/recipients/export Export a broadcast's recipients as CSV #
GET /v1/email/broadcasts/{broadcast_id}/events List events for a broadcast #
POST /v1/email/broadcasts/{broadcast_id}/send Send a broadcast #
POST /v1/email/broadcasts/{broadcast_id}/cancel Cancel a broadcast #
POST /v1/contacts Create a contact #
GET /v1/contacts List contacts #
POST /v1/contacts/batch Create or update contacts in bulk #
GET /v1/contacts/{contact_id} Get a contact #
PATCH /v1/contacts/{contact_id} Update a contact #
DELETE /v1/contacts/{contact_id} Delete a contact #
GET /v1/contacts/{contact_id}/preferences List a contact's preferences #
GET /v1/preferences List preferences #
POST /v1/preferences Record a preference #
GET /v1/preferences/{preference_id} Get a preference #
DELETE /v1/preferences/{preference_id} Delete a preference #
POST /v1/contact-properties Create a contact property #
GET /v1/contact-properties List contact properties #
GET /v1/contact-properties/{property_id} Get a contact property #
PATCH /v1/contact-properties/{property_id} Update a contact property #
POST /v1/contact-properties/{property_id}/archive Archive a contact property #
POST /v1/contact-properties/{property_id}/unarchive Unarchive a contact property #
POST /v1/audiences Create an audience #
GET /v1/audiences List audiences #
GET /v1/audiences/{audience_id} Get an audience #
PATCH /v1/audiences/{audience_id} Update an audience #
DELETE /v1/audiences/{audience_id} Delete an audience #
GET /v1/audiences/{audience_id}/contacts List an audience's contacts #
POST /v1/audiences/{audience_id}/contacts Assign contacts to an audience #
POST /v1/audiences/{audience_id}/contacts/remove Unassign contacts from an audience #
DELETE /v1/audiences/{audience_id}/contacts/{contact_id} Unassign a contact from an audience #
POST /v1/sms/messages Create an SMS message #
GET /v1/sms/messages List SMS messages #
POST /v1/sms/batches Create a batch of SMS messages #
GET /v1/sms/messages/{message_id} Get an SMS message #
GET /v1/sms/messages/{message_id}/events List events for an SMS message #
GET /v1/sms/templates List SMS templates #
GET /v1/sms/templates/{template_ref} Get an SMS template #
GET /v1/sms/templates/{template_ref}/versions List an SMS template's versions #
GET /v1/sms/templates/{template_ref}/versions/{version_id} Get an SMS template version #
GET /v1/sms/templates/{template_ref}/versions/{version_id}/languages List an SMS template version's languages #
GET /v1/sms/templates/{template_ref}/versions/{version_id}/languages/{language} Get an SMS template version's language #
GET /v1/sms/suppressions List SMS suppressions #
POST /v1/sms/suppressions Create an SMS suppression #
GET /v1/sms/suppressions/{suppression_id} Get an SMS suppression #
DELETE /v1/sms/suppressions/{suppression_id} Delete an SMS suppression #
GET /v1/sms/keyword-rules List SMS keyword rules #
POST /v1/sms/keyword-rules Create an SMS keyword rule #
GET /v1/sms/keyword-rules/{id} Get an SMS keyword rule #
PATCH /v1/sms/keyword-rules/{id} Update an SMS keyword rule #
DELETE /v1/sms/keyword-rules/{id} Delete an SMS keyword rule #
GET /v1/sms/stats/summary Get aggregate outbound SMS statistics #
GET /v1/sms/stats/daily Get daily outbound SMS statistics #
GET /v1/sms/stats/hourly Get hourly outbound SMS statistics #
GET /v1/sms/stats/originators Get outbound SMS statistics by originator #
GET /v1/sms/stats/countries Get outbound SMS statistics by country #
GET /v1/sms/stats/categories Get outbound SMS statistics by category #
GET /v1/sms/stats/error-codes Get outbound SMS statistics by error code #
GET /v1/sms/stats/carriers Get outbound SMS statistics by carrier #
GET /v1/sms/stats/tags Get outbound SMS statistics by tag #
GET /v1/sms/stats/statuses Get outbound SMS statistics by status #
GET /v1/sms/stats/inbound/summary Get aggregate inbound SMS statistics #
GET /v1/sms/stats/inbound/daily Get daily inbound SMS statistics #
GET /v1/sms/stats/inbound/hourly Get hourly inbound SMS statistics #
GET /v1/sms/stats/inbound/countries Get inbound SMS statistics by country #
GET /v1/sms/stats/inbound/operators Get inbound SMS statistics by operator #
GET /v1/sms/stats/inbound/numbers Get inbound SMS statistics by number #
POST /v1/lookup/phone-number Create a phone number lookup #
GET /v1/lookup/phone-number/{number} Get a phone number lookup by URL #
POST /v1/lookup/email Create an email address lookup #
GET /v1/lookup/email/{address} Get an email address lookup by URL #
POST /v1/verify/verifications Create a verification #
POST /v1/verify/verifications/check Create a verification passcode check #
POST /v1/verify/verifications/next-channel Create the next verification channel attempt #
GET /v1/whatsapp/messages List WhatsApp messages #
POST /v1/whatsapp/messages Send a WhatsApp message #
GET /v1/whatsapp/messages/{message_id} Get a WhatsApp message #
POST /v1/whatsapp/messages/{message_id}/read Mark a WhatsApp message as read #
GET /v1/whatsapp/messages/{message_id}/events List events for a WhatsApp message #
GET /v1/whatsapp/messages/{message_id}/media/{media_id} Get a WhatsApp message's media #
PUT /v1/whatsapp/messages/{message_id}/reaction React to a WhatsApp message #
DELETE /v1/whatsapp/messages/{message_id}/reaction Remove your reaction from a WhatsApp message #
GET /v1/whatsapp/messages/{message_id}/reaction-events List reaction events for a WhatsApp message #
GET /v1/whatsapp/templates List available message templates #
GET /v1/whatsapp/templates/{template_ref} Get a message template #
GET /v1/whatsapp/templates/{template_ref}/versions List a template's versions #
GET /v1/whatsapp/templates/{template_ref}/versions/{version_id} Get a template version #
GET /v1/whatsapp/templates/{template_ref}/versions/{version_id}/languages List a version's languages #
GET /v1/whatsapp/templates/{template_ref}/versions/{version_id}/languages/{language} Get a version's language #
GET /v1/whatsapp/stats/summary Get aggregate outbound WhatsApp statistics #
GET /v1/whatsapp/stats/daily Get daily outbound WhatsApp statistics #
GET /v1/whatsapp/stats/hourly Get hourly outbound WhatsApp statistics #
GET /v1/whatsapp/stats/error-codes Get outbound WhatsApp statistics by error code #
GET /v1/whatsapp/stats/templates Get outbound WhatsApp statistics by template #
GET /v1/whatsapp/stats/template-categories Get outbound WhatsApp statistics by template category #
GET /v1/whatsapp/stats/tags Get outbound WhatsApp statistics by tag #
GET /v1/whatsapp/stats/phone-numbers Get outbound WhatsApp statistics by phone number #
GET /v1/whatsapp/stats/countries Get outbound WhatsApp statistics by country #
GET /v1/whatsapp/stats/inbound/summary Get aggregate inbound WhatsApp statistics #
GET /v1/whatsapp/stats/inbound/daily Get daily inbound WhatsApp statistics #
GET /v1/whatsapp/stats/inbound/hourly Get hourly inbound WhatsApp statistics #
GET /v1/whatsapp/stats/inbound/phone-numbers Get inbound WhatsApp statistics by phone number #
GET /v1/whatsapp/numbers List WhatsApp numbers #
GET /v1/whatsapp/numbers/{number_id} Get a WhatsApp number #
GET /v1/whatsapp/numbers/{number_id}/events List WhatsApp number events #
GET /v1/whatsapp/numbers/{number_id}/profile Get a WhatsApp number's business profile #
GET /v1/whatsapp/business-accounts List WhatsApp Business Accounts #
GET /v1/whatsapp/business-accounts/{business_account_ref} Get a WhatsApp Business Account #
GET /v1/whatsapp/keyword-rules List WhatsApp keyword rules #
POST /v1/whatsapp/keyword-rules Create a WhatsApp keyword rule #
GET /v1/whatsapp/keyword-rules/{id} Get a WhatsApp keyword rule #
PATCH /v1/whatsapp/keyword-rules/{id} Update a WhatsApp keyword rule #
DELETE /v1/whatsapp/keyword-rules/{id} Delete a WhatsApp keyword rule #
GET /v1/email/inbox-insights/placement Get inbox placement for a sending domain #
GET /v1/email/inbox-insights/authentication Get email authentication standing for a sending domain #
GET /v1/email/inbox-insights/complaints Get the Google-reported spam rate for a sending domain #
GET /v1/email/inbox-insights/spam-traps Get spam-trap hits for a sending domain #
GET /v1/email/inbox-insights/blocklists Check whether a sending domain's infrastructure is blocklisted #
GET /v1/email/inbox-insights/benchmarks/industry Get the industry placement benchmark for a sending domain #
GET /v1/email/inbox-insights/domains List sending domains and their Inbox Insights status #
PATCH /v1/email/inbox-insights/domains/{sending_domain} Switch Inbox Insights on or off for a sending domain #
POST /v1/email/inbox-insights/domain-monitoring Switch Inbox Insights on for the workspace's main sending domain #
GET /v1/email/stats/daily Get daily sending statistics #
GET /v1/email/stats/hourly Get hourly sending statistics #
GET /v1/email/stats/tags Get statistics by tag #
GET /v1/email/stats/summary Get aggregate email statistics #
GET /v1/email/stats/sending-ips Get statistics by sending IP #
GET /v1/email/stats/sending-domains Get statistics by sending domain #
GET /v1/email/stats/categories Get statistics by category #
GET /v1/email/stats/mailbox-providers Get statistics by mailbox provider #
GET /v1/email/stats/mailbox-provider-regions Get statistics by mailbox provider region #
GET /v1/email/stats/recipient-domains Get statistics by recipient domain #
GET /v1/email/stats/templates Get statistics by template #
GET /v1/email/stats/locations Get engagement by location #
GET /v1/email/stats/clients Get engagement by email client #
GET /v1/email/stats/bounce-codes Get bounces by SMTP error code #
GET /v1/email/stats/complaint-types Get complaints by type #
GET /v1/email/stats/broadcasts Get statistics by broadcast #
GET /v1/email/health Get sending health and deliverability limits #
POST /v1/email/domains Create a sending domain #
GET /v1/email/domains List sending domains #
PATCH /v1/email/domains/{domain_id} Update a sending domain #
GET /v1/email/domains/{domain_id} Get a sending domain #
DELETE /v1/email/domains/{domain_id} Delete a sending domain #
GET /v1/email/domains/{domain_id}/events List domain events #
POST /v1/email/domains/{domain_id}/verify Verify a domain #
POST /v1/email/domains/{domain_id}/tracking/release Release link tracking configuration #
POST /v1/email/domains/{domain_id}/dns-records/share Share a domain's DNS records by email #
GET /v1/email/suppressions List email suppressions #
POST /v1/email/suppressions Create an email suppression #
GET /v1/email/suppressions/{suppression_id} Get an email suppression #
DELETE /v1/email/suppressions/{suppression_id} Delete an email suppression #
GET /v1/email/competitive/watchlist Get the competitor watchlist with its latest figures #
GET /v1/email/competitive/watchlist/notable Get the notable campaigns across watched brands #
POST /v1/email/competitive/watchlist/brands Add a competitor brand to the watchlist #
GET /v1/email/competitive/watchlist/brands/{watchlist_brand_id} Get a watched brand's figures #
DELETE /v1/email/competitive/watchlist/brands/{watchlist_brand_id} Remove a competitor brand from the watchlist #
GET /v1/email/competitive/watchlist/brands/{watchlist_brand_id}/campaigns Get the campaigns a watched brand sent #
GET /v1/email/competitive/watchlist/brands/{watchlist_brand_id}/campaigns/{campaign_id} Get one campaign a watched brand sent #
GET /v1/email/competitive/watchlist/brands/{watchlist_brand_id}/send-time Get when a watched brand sends #
GET /v1/email/competitive/brands/search Search brands to add to the watchlist #
GET /v1/email/competitive/volume-series Get send volume over time for watched brands #
POST /v1/email/templates Create an email template #
GET /v1/email/templates List email templates #
GET /v1/email/templates/{template_ref} Get an email template #
PATCH /v1/email/templates/{template_ref} Update an email template #
DELETE /v1/email/templates/{template_ref} Delete an email template #
POST /v1/email/templates/{template_ref}/duplicate Duplicate an email template #
POST /v1/email/templates/{template_ref}/preview Get an email template preview #
GET /v1/email/templates/{template_ref}/versions List email template versions #
GET /v1/email/templates/{template_ref}/broadcasts List the broadcasts blocking a template delete #
GET /v1/email/templates/{template_ref}/versions/{version_id} Get an email template version #
DELETE /v1/email/templates/{template_ref}/versions/{version_id} Delete an email template draft #
GET /v1/email/templates/{template_ref}/versions/{version_id}/languages List a version's languages #
GET /v1/email/templates/{template_ref}/versions/{version_id}/languages/{language} Get one language of a version #
PUT /v1/email/templates/{template_ref}/versions/{version_id}/languages/{language} Upsert one language of a draft #
PATCH /v1/email/templates/{template_ref}/versions/{version_id}/languages/{language} Update one language of a draft #
DELETE /v1/email/templates/{template_ref}/versions/{version_id}/languages/{language} Delete one language from a draft #
POST /v1/email/templates/{template_ref}/versions/{version_id}/rollback Roll back an email template #
POST /v1/email/templates/{template_ref}/versions/{version_id}/submit Submit an email template version #
GET /v1/email/inbound-addresses List inbound addresses #
POST /v1/email/inbound-addresses Create an inbound address #
GET /v1/email/inbound-addresses/{inbound_address_id} Get an inbound address #
PATCH /v1/email/inbound-addresses/{inbound_address_id} Update an inbound address #
DELETE /v1/email/inbound-addresses/{inbound_address_id} Delete an inbound address #
GET /v1/email/inbound-messages List received emails #
GET /v1/email/inbound-messages/{inbound_message_id} Get a received email #
GET /v1/email/inbound-messages/{inbound_message_id}/body Get a received email's body #
GET /v1/email/inbound-messages/{inbound_message_id}/raw Get a received email's raw content #
GET /v1/email/inbound-messages/{inbound_message_id}/attachments List a received email's attachments #
GET /v1/email/inbound-messages/{inbound_message_id}/attachments/{attachment_id} Get a received email's attachment #
GET /v1/email/mailboxes List mailboxes #
POST /v1/email/mailboxes Create a mailbox #
GET /v1/email/mailboxes/{mailbox_id} Get a mailbox #
PATCH /v1/email/mailboxes/{mailbox_id} Update a mailbox #
DELETE /v1/email/mailboxes/{mailbox_id} Delete a mailbox #
POST /v1/email/mailboxes/{mailbox_id}/restore Restore a deleted mailbox #
GET /v1/email/mailboxes/{mailbox_id}/stats Get mailbox email statistics #
POST /v1/email/mailboxes/{mailbox_id}/resume Resume a suspended mailbox #
GET /v1/email/mailboxes/{mailbox_id}/receive-rules List receive rules #
POST /v1/email/mailboxes/{mailbox_id}/receive-rules Create a receive rule #
DELETE /v1/email/mailboxes/{mailbox_id}/receive-rules/{rule_id} Delete a receive rule #
GET /v1/email/inbound-routes List inbound routes #
POST /v1/email/inbound-routes Create an inbound route #
GET /v1/email/inbound-routes/{route_id} Get an inbound route #
PATCH /v1/email/inbound-routes/{route_id} Update an inbound route #
DELETE /v1/email/inbound-routes/{route_id} Delete an inbound route #
GET /v1/email/threads List threads #
GET /v1/email/threads/{thread_id} Get a thread #
PATCH /v1/email/threads/{thread_id} Update a thread #
DELETE /v1/email/threads/{thread_id} Delete a thread #
GET /v1/email/threads/{thread_id}/messages List messages in a thread #
GET /v1/email/threads/{thread_id}/messages/{message_id} Get a message in a thread #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/bird-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

messagebird-bird-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Bird API
  version: 1.0.0
  description: |
    The Bird API: one REST API for email, SMS, WhatsApp, verification, and
    Realtime. Manage workspaces, organizations, teams, sending domains,
    dedicated IPs, suppressions, contacts and audiences, and outbound message
    delivery across every channel.

    Setting a `User-Agent` header is recommended but not required. Official Bird
    SDKs set it automatically (format: `bird-<language>/<version>`). The header is
    used for operational logging and customer-support diagnostics; the API never
    rejects requests that omit it.

    Rate limits are advertised on every response from a rate-limited endpoint as
    IETF `RateLimit` and `RateLimit-Policy` headers (Structured Fields per RFC
    9651; spec draft-ietf-httpapi-ratelimit-headers-11). On 429 responses, a
    `Retry-After` header in seconds is also returned. Clients should pace
    themselves against the `r` (remaining) and `t` (seconds until reset) params
    in the `RateLimit` header rather than only reacting to 429s.

    The full API reference is at https://bird.com/docs/api, and the guides and
    official SDKs at https://bird.com/docs.
servers:
  - url: https://{region}.platform.bird.com
    description: |
      Regional API endpoint. Use the host for the region your organization is hosted in. Official Bird SDKs and the CLI select it automatically from your API key, so you rarely need to set it by hand.
    variables:
      region:
        default: us1
        enum:
          - us1
          - eu1
        description: The region your organization's data is hosted in.
  - url: https://platform.bird.com
    description: Region-independent endpoint for authentication and account administration.
  - url: http://localhost:8080
    description: Local development.
security:
  - BearerAuth: []
tags:
  - name: workspaces
    description: Workspace management.
  - name: realtime-apps
    description: Realtime app management.
  - name: realtime-events
    description: |
      Publish events to a Realtime app's channels from your server (the data plane). Sending to several channels at once broadcasts to all of them.
  - name: email-messages
    description: |
      Send emails to recipients you address explicitly in `to`, `cc`, and `bcc`. Use this for transactional sends (receipts, password resets, alerts) and for marketing sends where you already have the recipient addresses on hand. The same endpoint accepts every content type. Set `category` to control suppression policy.
  - name: email-broadcasts
    description: |
      Send one email to a stored audience. Create a broadcast as a draft, then send it immediately or schedule it for later; scheduled and in-progress broadcasts can be canceled. The audience's contacts at send time become the recipient set after suppressions are applied. The recipients endpoint returns each recipient's delivery state.
  - name: email-contacts
    description: |
      Contacts are the people you send broadcasts to. Each contact is unique by email address within a workspace and carries optional name fields and custom properties for personalization. Custom properties are defined once per workspace via the contact properties API and then set per contact.
  - name: email-audiences
    description: |
      Audiences are the recipient lists broadcasts are sent to. An audience holds a set of contacts that you manage through the API. The contacts in the audience at send time become the broadcast's recipients after suppressions are applied. A contact can belong to multiple audiences.
  - name: email-stats
    description: Email analytics, including daily and hourly delivery statistics, tag breakdowns, and a KPI summary.
  - name: sms-messages
    description: |
      Send SMS messages to recipients you address by phone number, and read their delivery status and lifecycle events. Each message is one recipient and one body; set `category` to control opt-out policy and per-country compliance.
  - name: sms-templates
    description: Create and publish multilingual workspace SMS templates and browse built-in templates. Published workspace versions preserve their language content; built-in versions reflect the current catalogue.
  - name: sms-stats
    description: SMS analytics, including daily and hourly lifecycle counts, dimension breakdowns, and a KPI summary.
  - name: verify-verifications
    description: |
      Send a one-time passcode to a recipient and check the code they enter. Create a verification to send a passcode over email or SMS, then submit the recipient's code to verify it.
  - name: whatsapp-messages
    description: |
      Send WhatsApp messages, whether a template, free-form content, or interactive content the recipient can tap, and read the messages your workspace sent and received, including their current delivery status and lifecycle events.
  - name: whatsapp-templates
    description: |
      Browse the WhatsApp message templates available to your workspace, approved by Meta and ready to send.
  - name: whatsapp-stats
    description: WhatsApp analytics, including daily and hourly delivery statistics and a KPI summary.
  - name: domains
    description: Sending domain management and DNS verification.
  - name: email-suppressions
    description: Email suppression list management.
  - name: email-templates
    description: |
      Reusable email templates and their versions, with stored subject, HTML, and plain-text content you manage and reference when sending.
  - name: email-inbound-addresses
    description: |
      Addresses generated for receiving mail. Forward a mailbox to an inbound address to parse each message into a received email.
  - name: email-inbound-messages
    description: |
      Emails received on your behalf, including each parsed message, its body, raw MIME content, and attachments.
  - name: email-mailboxes
    description: |
      Durable mailbox identities for agents. A mailbox owns an address, applies receive policy through allow/block rules, and remembers conversations for its retention tier.
  - name: email-inbound-routes
    description: |
      Routing rules that direct inbound mail on your domains into mailboxes, or drop it, in priority order.
  - name: email-threads
    description: |
      Conversations in a mailbox. Threads group related inbound and outbound messages and carry read state, labels, and participants.
  - name: email-smtp-configs
    description: |
      Default IP pool, category, tags, and open and click tracking settings for messages submitted over SMTP with a given API key.
  - name: webhooks
    description: Webhook endpoint management.
  - name: numbers
    description: Phone number catalog and purchasing.
  - name: docs
    description: Search our developer documentation.
  - name: voice-calls
    description: Call records (CDR) for the workspace, in flight and completed.
  - name: whatsapp-numbers
    description: |
      Connect phone numbers from Meta's embedded signup flow and check their WhatsApp setup status.
  - name: whatsapp-business-accounts
    description: |
      Read the WhatsApp Business Accounts your workspace has connected, so a template can be created on the account you choose.
  - name: sms-keyword-rules
    description: |
      Manage the response when someone sends a keyword to one of your numbers. Each supported country starts with opt-out, opt-in, and help keywords. Create a rule to replace a default response or add campaign keywords.
  - name: lookup
    description: |
      Inspect a recipient before sending. Phone-number lookups return carrier, portability, number type, reachability, roaming, SIM-change, and fraud-risk data when requested. Email lookups return deliverability, confidence, failure reasons, and suggested corrections for likely misspellings.
  - name: sms-suppressions
    description: Sender and subscriber pairs that block SMS delivery.
  - name: email-competitive
    description: |
      Watch competitor brands and see how their email compares with yours. Figures about a competitor are estimates from an email panel, which observes a sample of real inboxes; figures about your own sending are counted rather than estimated wherever that is possible.
  - name: preferences
    description: Stated messaging preferences (consent grants and opt-outs) recorded per handle across email, SMS, and WhatsApp, with causally ordered writes.
  - name: email-inbox-insights
    description: |
      Inbox placement, seed tests, and sending reputation for the workspace's
      own sending domains, measured from a panel of real mailboxes.

      Rates here are percentages carrying a `_percent` suffix (`87.4`).
      Competitive Insights reports the same kind of figure as a fraction
      (`0.874`), so a client reading both products scales one of them.


# --- truncated at 32 KB (4697 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/bird/refs/heads/main/openapi/messagebird-bird-api-openapi.yml