Everything an AI agent can do with the Bird API.

A reference guide for building AI agents: every method, how to authenticate, and the permissions each one needs.

Endpoints33
AuthenticationAccess key
Last updated23 June 2026
Orientation

How the Bird API works.

The Bird API is how an app or AI agent works with a Bird workspace: sending an SMS, WhatsApp, or email message over a channel, managing contacts and lists, running a conversation, or sending a one-time passcode to verify someone. Access is granted through an access key tied to a single workspace, and every call is scoped to that workspace. Bird can also push an event to a subscribed endpoint when a message arrives or changes status, so an integration learns about activity without polling.

33Endpoints
6Capability groups
18Read
15Write
11Permissions
Authentication
Bird authenticates calls with an access key, sent in the Authorization header as 'AccessKey' followed by the key. An access key belongs to one workspace and represents that workspace's access; it is not an OAuth token. Bird is the rebrand of MessageBird, and the API surface changed with it, so older MessageBird REST endpoints and keys do not map one-to-one onto the current Bird API.
Permissions
A Bird access key is scoped to a workspace and carries that workspace's access. Bird's API reference does not document a set of granular per-endpoint scopes attached to an access key, so an integration cannot narrow a key to a single method through the API itself. The platform applies role-based limits to people, for example contacts and CRM access is no longer granted by default.
Versioning
Bird does not put a version segment in its API paths; there is a single, continuously updated API rather than dated versions to pin. Dated changes ship through the changelog. This is a change from the legacy MessageBird REST API, which lived on a separate host and is being superseded by the current Bird API.
Data model
Bird is workspace-scoped: most paths begin with the workspace and address a resource under it, like a channel, contact, list, conversation, number, or verification. A message is sent through an active channel created from a connector, and a state change is delivered to a subscribed endpoint as an inbound, outbound, or interaction event.
Connect & authenticate

Connection & authentication methods.

How an app or AI agent connects to Bird determines what it can reach. There is a route for making calls and a route for receiving events, and each is governed by the access key behind it, which is tied to one workspace.

Ways to connect

REST API

The REST API is workspace-scoped and path-based, at https://api.bird.com, with no version segment in the path. A call authenticates with an access key sent in the Authorization header as 'AccessKey '. Most paths begin with /workspaces/{workspaceId}/ and address a resource under it, like a channel, contact, list, conversation, number, or verification. Reporting endpoints sit under /organizations/{organizationId}/ instead.

Best forConnecting an app or AI agent to Bird.
Governed byThe access key and the workspace it belongs to.
Docs ↗

Webhooks

Bird posts events to an endpoint registered through a webhook subscription. A subscription names the service, the event type, the endpoint URL, a signing key used to verify the request, and optional filters like channel id and message status. Event types follow a .inbound, .outbound, and .interaction pattern, for example sms.inbound or email.interaction.

Best forReceiving Bird events at an app or AI agent.
Governed byThe signing key on the subscription.
Docs ↗
Authentication

Access key

An access key authenticates every API call. It is sent in the Authorization header as the word 'AccessKey' followed by a space and the key. An access key belongs to one workspace and represents that workspace's access. Bird's API reference does not document granular per-endpoint scopes on an access key, so a key cannot be narrowed to a single method through the API itself.

TokenWorkspace access key (Authorization: AccessKey ...)
Best forServer-side calls scoped to one Bird workspace.
Docs ↗
Endpoint reference

Every Bird API method.

Filter by method, access, or permission, or search any path. Select a row for version detail, rate limits, the related webhook event, and the source.

MethodEndpointWhat it doesAccessPermissionVersion

Channels & messaging

Methods for creating channels and sending and reading messages over them.8

Requires an active channel. A request must set either body or template, not both. Multiple receivers are only allowed on the email channel.

Acts onmessage
Permission (capability)Channels write
VersionAvailable since the API’s base version
Webhook eventchannel.outbound
Rate limit500 POST req/s per workspace (shared)

Read-only.

Acts onmessage
Permission (capability)Channels read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limit50 GET req/s per workspace (shared)

Read-only.

Acts onmessage
Permission (capability)Channels read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts oninteraction
Permission (capability)Channels read
VersionAvailable since the API’s base version
Webhook eventchannel.interaction
Rate limitStandard limits apply

A connector links the Bird platform to a third-party messaging provider and is the prerequisite for a channel.

Acts onconnector
Permission (capability)Channels write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts onconnector
Permission (capability)Channels read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Removing the connector removes its channel, so an integration can no longer send or receive on it.

Acts onconnector
Permission (capability)Channels write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

The subscription names the service, event type, endpoint URL, a signing key, and optional filters like channel id and status.

Acts onwebhook_subscription
Permission (capability)Channels write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Contacts & lists

Methods for managing contacts and the lists they belong to.10

A contact can carry multiple identifiers, like an email address and a phone number.

Acts oncontact
Permission (capability)Contacts write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only. Reaches every contact stored in the workspace.

Acts oncontact
Permission (capability)Contacts read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts oncontact
Permission (capability)Contacts read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

A core write to a customer record.

Acts oncontact
Permission (capability)Contacts write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Permanently removes the contact record.

Acts oncontact
Permission (capability)Contacts write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

A list groups contacts for targeting and messaging.

Acts onlist
Permission (capability)Contacts write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts onlist
Permission (capability)Contacts read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts onlist
Permission (capability)Contacts read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Returns how many contacts were processed; a lower count than supplied means some were not added.

Acts onlist
Permission (capability)Contacts write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts onlist
Permission (capability)Contacts read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Conversations

Methods for working with conversations and the messages inside them.5

A conversation threads messages with a contact across channels.

Acts onconversation
Permission (capability)Conversations write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only. Returns at most 100 per page, default 10, paged with pageToken.

Acts onconversation
Permission (capability)Conversations read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts onconversation
Permission (capability)Conversations read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

The sending participant type is one of accessKey, flow, or contact, with accessKey the common case.

Acts onconversation_message
Permission (capability)Conversations write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts onconversation_message
Permission (capability)Conversations read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Numbers

Methods for searching, buying, and looking up phone numbers.5

Read-only; lists numbers in stock, not numbers the workspace owns.

Acts onnumber_stock_item
Permission (capability)Numbers read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Buying a number spends real money on the workspace account.

Acts onnumber
Permission (capability)Numbers write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts onnumber
Permission (capability)Numbers read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts onnumber
Permission (capability)Numbers read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only. A batch variant exists at /network-lookup/batch.

Acts onnetwork_lookup
Permission (capability)Numbers read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Verify (OTP)

Methods for sending and checking one-time passcodes.2

Requires an active channel. The code defaults to 6 digits and the length is configurable.

Acts onverification
Permission (capability)Verify write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Confirms whether the code the person entered matches the one that was sent.

Acts onverification
Permission (capability)Verify write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Reporting

Methods for requesting and retrieving organization-level reports.3

Reporting endpoints are scoped to the organization, not a single workspace.

Acts onreport
Permission (capability)Reporting write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only. Supports filtering by date range and pagination.

Acts onreport
Permission (capability)Reporting read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts onreport
Permission (capability)Reporting read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply
No endpoints match those filters.
Webhooks

Webhook events.

Bird can notify an app when something happens on a channel, like an inbound message arriving, a sent message changing status, or a customer reading or clicking a message. It posts the event to a subscribed endpoint, so an integration learns about activity without polling.

EventWhat it signalsTriggered by
.inboundAn inbound message arrived on a channel, for example sms.inbound. The message is created with a delivered status.In-app only
.outboundA message sent by the app changed status, moving through accepted, processing, sent, delivered, or a failure like sending_failed or delivery_failed./workspaces/{workspaceId}/channels/{channelId}/messages
.interactionA customer interacted with a message, like reading it, clicking a link, or adding a reaction, for example email.interaction./workspaces/{workspaceId}/channels/{channelId}/messages/{messageId}/interactions
No events match that search.
Rate limits & pagination

Rate limits, pagination & request size.

Bird limits how fast an app can call, by a per-second request rate measured separately for reads and writes across a workspace, with individual channels also bounded by their downstream carrier.

Request rate

Bird meters requests by a per-second rate across a workspace, measured separately for reads and writes. The default ceilings across all channels in a workspace are 50 GET requests per second and 500 POST requests per second. Going over returns HTTP 429 Too Many Requests, and Bird confirms the rejected request was not processed, so it can be retried safely. An individual channel can also be throttled by its downstream carrier below the workspace ceiling; when that happens Bird accepts and buffers the extra traffic and retries a buffered message up to 10 times with an exponential delay. Higher limits are arranged through support.

Pagination

List endpoints page with a limit and a pageToken. For example, listing conversations returns at most 100 per page, with a default of 10, and pageToken fetches the next page.

Request size

A verification code defaults to 6 digits and the length is configurable. Sending to multiple recipients in one request is only supported on the email channel; other channels reject a request with more than one receiver.

Errors

Status codes & error handling.

The status codes an agent should handle, and what to do about each.

StatusCodeMeaningWhat to do
400error.detailedThe request was malformed or invalid. The body carries a code, a message, and a details object.Read the code and message, fix the request, and resend. The request is not retryable as-is.
401unauthenticatedThe access key was missing or invalid.Send a valid access key in the Authorization header as 'AccessKey '.
403forbiddenThe access key is valid but not allowed to perform this request.Confirm the key belongs to the right workspace and has access to the resource.
404error.detailedThe requested resource does not exist or is not visible to this key. The body carries a code, a message, and a details object.Verify the workspace, channel, or resource id in the path.
422error.validationThe request failed validation. The body carries a code, a message, and a details object mapping each invalid field path to a list of problems.Use the details map to fix the named fields, then resend.
429too_many_requestsThe workspace rate limit was exceeded. Bird confirms the request was not processed.Back off and retry; the rejected request can be sent again safely.
Versioning & freshness

Version history.

Bird does not put a version number in its API paths. There is a single, continuously updated API, and dated changes ship through the changelog.

Version history

What changed, and when

Latest versionCurrent
CurrentCurrent version
Continuously updated Bird API

Bird does not put a version number in its API paths; there is a single, continuously updated API rather than dated versions to pin. Dated changes ship through the changelog. The current Bird API supersedes the legacy MessageBird REST API, which lived on a separate host.

What changed
  • Workspace-scoped, path-based endpoints under /workspaces/{workspaceId}/, authenticated with an access key.
  • Covers Channels and Messaging, Contacts and Lists, Conversations, Numbers, Verify, and Reporting.
2026-03-05Feature update
User management redesign

User management was redesigned with improved role assignments and workspace access controls in Organization Settings.

2026-01-05Feature update
Contacts and CRM access no longer default

Contacts and CRM access permissions changed and are no longer included by default for the Developer role, so a person needs a specific role to reach that data.

2025-12-22Feature update
Developer app visibility restricted

Visibility of the developer app was restricted to users with a developer or workspace admin role.

There is no version to pin; track the changelog for changes.

Bird changelog ↗
Questions

Bird API, answered.

How does an app authenticate to the Bird API?+
Every call carries an access key in the Authorization header, written as the word 'AccessKey', a space, then the key, for example 'Authorization: AccessKey AbCdEf...'. An access key belongs to one workspace and represents that workspace's access. There is no OAuth flow for first-party calls.
Is the Bird API the same as the old MessageBird API?+
No. Bird is the rebrand of MessageBird, and the API surface changed with it. The current Bird API is workspace-scoped and path-based at api.bird.com, while the legacy MessageBird REST API lived on a separate host. Older MessageBird endpoints and credentials do not map one-to-one onto the current Bird API, so an integration built against MessageBird may need to be reworked.
Can an access key be limited to specific endpoints or scopes?+
Bird's API reference does not document a set of granular per-endpoint scopes attached to an access key. A key is scoped to a workspace and carries that workspace's access, so it cannot be narrowed to a single method through the API itself. The platform applies role-based limits to people instead, for example contacts and CRM access is no longer granted by default.
How does an app receive inbound messages and status updates?+
Bird posts events to an endpoint registered through a webhook subscription. The subscription names the service, the event type, the endpoint URL, a signing key, and optional filters. Event types follow a .inbound, .outbound, and .interaction pattern, for example sms.inbound for an incoming SMS or email.interaction for a click.
What are the rate limits and what happens when one is hit?+
The default ceilings across all channels in a workspace are 50 GET requests per second and 500 POST requests per second. Going over returns HTTP 429 Too Many Requests, and the rejected request is not processed, so it can be retried safely. An individual channel can also be throttled by its carrier; when that happens Bird buffers the extra traffic and retries a buffered message up to 10 times with an exponential delay.
Which channels can the Verify API send a one-time passcode over?+
Verify supports SMS, WhatsApp, and email. Creating a verification sends a code, which defaults to 6 digits and is configurable, and a second call checks the code the person entered. Bird recommends sending the code through a navigator rather than picking a single channel directly.
Related

More communication API guides for agents

What is Bollard AI?

Control what every AI agent can do in Bird.

Bollard AI sits between a team's AI agents and Bird. Grant each agent exactly the access it needs, read or write, area by area, and every call is checked and logged.

  • Set read, write, or full access per agent, never a shared Bird access key.
  • Denied by default, so an agent reaches only what has been explicitly allowed.
  • Every call recorded in plain English: who, what, where, and the decision.
Bird
Messaging Agent
Send SMS and WhatsApp ActionOffReadFull use
Read conversations ResourceOffReadFull use
Buy phone numbers ActionOffReadFull use
Per-agent access, set in Bollard AI, not in Bird