Sign inGet started

Navigators

Navigator behaviour may vary according to the country you are sending to and the message type. You can see the preferred kind of SMS channels for each scenario here and check any existing navigator in your workspace via the Navigator TAB in the developer dashboard
Navigators route over SMS, and over the OTT channels you enrol — RCS and WhatsApp. Enrolled OTT channels are attempted ahead of SMS, so a message falls back to SMS when an OTT attempt fails. See OTT channels and fallback.

List Available Navigators

GET
/workspaces/{workspaceId}/navigators
Get list of the navigators configured for a workspace. Navigators are used to select a channel for a message based on its content, type, recipient, etc. The type of the navigator defines how the channel will be selected.
Parameter query
limit
integer
Limits the number of results to return.
pageToken
string
The cursor that keeps track of the current position in the results.
reverse
boolean
Reverses the order in which the results are returned.
type
string
Possible values: messaging, use-case-messaging, otp
useCaseType
string
Possible values: otp, transactional, marketing, conversation
Payload respons
results
array of object
Tampilkan atribut turunan
results.navigatorId
string
wajib
results.workspaceId
string
wajib
results.name
string
wajib
The name of the navigator.
results.type
string
wajib
The type of navigator defines how the navigator selects a channel for a message. * messaging - navigator configured with a pool of channels and performs channel selection based on channel availability and best originator type for a recipient country. The best originator type for a recipient country is determined by the strategy - prioritized list of originator types for each country. At this moment, the default pre-configured strategy (set of country policies) is used see https://docs.bird.com/applications/channels/channels/supported-channels/sms/concepts/choosing-the-right-sender-availability-and-restrictions-by-country
Possible values: messaging, use-case-messaging, otp
results.settings
object
wajib
Tampilkan atribut turunan
results.settings.channels
array of object
wajib
List of channels to be used
Tampilkan atribut turunan
results.settings.channels.channelId
string
wajib
results.settings.channels.countries
array of string
ISO 3166-1 alpha-2 codes this channel may be used for. Omit or leave empty to allow every country. RCS availability is granted per carrier per country, so an RCS channel should always name the countries it covers.
results.settings.preferredChannels
array of object
Channels attempted in this order ahead of anything the country policy yields. Listing a channel here is the opt-in; a channel present only in channels stays policy-gated however its platform routes.
Tampilkan atribut turunan
results.settings.preferredChannels.channelId
string
wajib
results.settings.preferredChannels.countries
array of string
ISO 3166-1 alpha-2 codes this channel may be used for. Omit or leave empty to allow every country. RCS availability is granted per carrier per country, so an RCS channel should always name the countries it covers.
results.createdAt
string
wajib
results.updatedAt
string
nextPageToken
string
The token that can be passed as pageToken in URL to retrieve the next set of results. If missing, no more results to display.
Contoh kode
curl -X GET 'https://api.bird.com/workspaces/{workspaceId}/navigators' \
  -H 'Authorization: AccessKey YOUR_ACCESS_KEY'
By default, each workspace will have 4 navigators.
Please contact our support team if you need a customized navigator added to your workspace. One of our support support agents will coordinate its provisioning
  • Marketing: The primary objective of marketing navigators is to send bulk traffic. They will only attempt delivery via PROMOTIONAL channels, adhering to strict compliance checks, including quiet hours and Opt-Out regulations.
  • Conversation: Conversational navigators consider only two-way CONVERSATIONAL channels, ignoring any one-way channels (such as those using Alphanumeric senders).
  • Transactional: The transactional navigator prioritizes high-quality routes when applying only the minimum required compline check. Transactional navigators will only send traffic from TRANSACTIONAL channels to ensure the best possible Quality of Service.
  • OTP: The 2FA navigator prioritizes deliverability above all. It attempts to send messages via 2FA channels first but will use TRANSACTIONAL channels if none are available, and as a last resort, it will utilize PROMOTIONAL channels.
When sending OTPs, ensure you have either 2FA or transactional channels in your workspace. OTP messages delivered through promotional channels during quiet hours may be delayed until the following day.

Inspect a Navigator

GET
/workspaces/{workspaceId}/navigators/{navigatorId}
Get the navigator by ID
Payload respons
navigatorId
string
wajib
workspaceId
string
wajib
name
string
wajib
The name of the navigator.
type
string
wajib
The type of navigator defines how the navigator selects a channel for a message. * messaging - navigator configured with a pool of channels and performs channel selection based on channel availability and best originator type for a recipient country. The best originator type for a recipient country is determined by the strategy - prioritized list of originator types for each country. At this moment, the default pre-configured strategy (set of country policies) is used see https://docs.bird.com/applications/channels/channels/supported-channels/sms/concepts/choosing-the-right-sender-availability-and-restrictions-by-country
Possible values: messaging, use-case-messaging, otp
settings
object
wajib
Tampilkan atribut turunan
settings.channels
array of object
wajib
List of channels to be used
Tampilkan atribut turunan
settings.channels.channelId
string
wajib
settings.channels.countries
array of string
ISO 3166-1 alpha-2 codes this channel may be used for. Omit or leave empty to allow every country. RCS availability is granted per carrier per country, so an RCS channel should always name the countries it covers.
settings.preferredChannels
array of object
Channels attempted in this order ahead of anything the country policy yields. Listing a channel here is the opt-in; a channel present only in channels stays policy-gated however its platform routes.
Tampilkan atribut turunan
settings.preferredChannels.channelId
string
wajib
settings.preferredChannels.countries
array of string
ISO 3166-1 alpha-2 codes this channel may be used for. Omit or leave empty to allow every country. RCS availability is granted per carrier per country, so an RCS channel should always name the countries it covers.
createdAt
string
wajib
updatedAt
string
Contoh kode
curl -X GET 'https://api.bird.com/workspaces/{workspaceId}/navigators/{navigatorId}' \
  -H 'Authorization: AccessKey YOUR_ACCESS_KEY'

Coverage

Navigators can access as many countries as there are channels available to them. Coverage may vary over time based on channel availability and health.
You can check a navigator coverage and the channel it will use for each country by clicking on it in the navigator set up page
GET
/workspaces/{workspaceId}/navigators/{navigatorId}/coverage
Get the navigator coverage by ID configured for a workspace
Contoh kode
curl -X GET 'https://api.bird.com/workspaces/{workspaceId}/navigators/{navigatorId}/coverage' \
  -H 'Authorization: AccessKey YOUR_ACCESS_KEY'

Sending messages

A-Sync : this will start a background process that may require some time to complete. A Get call may be required to to retrieve the final result .
The Navigators POST request follows the same schema and requires the same body as the channels POST request
POST
/workspaces/{workspaceId}/navigators/{navigatorId}/messages
Send a message to a channel using the navigator. Channel webhooks will provide status updates, so each channel the navigator uses should have webhooks configured. Data returned via webhooks will have navigator metadata, including navigator ID and navigator message ID.
Payload permintaan
sender
object
Tampilkan parameter turunan
sender.connector
object
wajib
The sender of the message. For email messages, the sender is used to override the default sender username.
Tampilkan parameter turunan
sender.connector.identifierValue
string
wajib
The identifier value of the sender.
sender.connector.annotations
object
Annotations are used to add additional information to a message. For email messages, it can be used to specify a custom sender name.
Tampilkan parameter turunan
sender.connector.annotations.name
string
receiver
object
wajib
Tampilkan parameter turunan
receiver.contacts
array of object
Tampilkan parameter turunan
receiver.contacts.id
string
The ID of the receiver. This is a reference to a contact.
receiver.contacts.identifierKey
string
The identifier key for finding the contact. For WhatsApp channels with BSUID support, use whatsappbsuid to send to a contact by their Business-Scoped User ID without needing to know the channel's portfolio ID.
receiver.contacts.identifierValue
string
The identifier value for finding the contact.
receiver.contacts.type
string
The type of the receiver.
Possible values: cc, bcc, to
receiver.contacts.identifiers
array of object
Tampilkan parameter turunan
receiver.contacts.identifiers.identifierKey
string
wajib
The identifier key for finding the contact.
receiver.contacts.identifiers.identifierValue
string
wajib
The identifier value for finding the contact.
receiver.contacts.platformAddress
string
The value that is used to send the message to the platform.
receiver.contacts.platformAddressSelector
string
An expression that defines how we resolve the platform address (e.g. phone number or email address) from a contact. This is an optional override for the default resolution logic (i.e. sending to the first identifier key-value pair for the relevant platform).
reference
string
A reference to the message. This can be used to identify the message in the channel.
template
object
wajib
Tampilkan parameter turunan
template.name
string
The platform name of the template.
template.projectId
string
the ID of the project from the project from Studio
template.version
string
The version of the template.
template.locale
string
template.attachments
array of object
Tampilkan parameter turunan
template.attachments.mediaUrl
string
wajib
The URL of the attachment.
template.attachments.filename
string
wajib
The filename of the attachment.
template.attachments.inline
boolean
template.shortLinks
object
SMS link shortening options.
Tampilkan parameter turunan
template.shortLinks.enabled
boolean
Enables link shortening for SMS messages.
template.shortLinks.domain
string
The domain to use when shortening links. When set to default, uses the default link shortening domain for the workspace.
template.variables
object
Deprecated: Use parameters instead (string parameter for variables). This property is maintained for backward compatibility but will be removed in a future version.
Tampilkan parameter turunan
template.variables.default
string
template.utmParameters
array of object
The list of UTM parameters.
Tampilkan parameter turunan
template.utmParameters.key
string
wajib
The name of the parameter in the query string.
template.utmParameters.value
string
wajib
The static value of the parameter. Mutually exclusive with Reference.
template.parameters
array of object
Tampilkan parameter turunan
template.parameters.type
string
wajib
Possible values: string
template.parameters.key
string
wajib
template.parameters.value
string
template.settings
object
Tampilkan parameter turunan
template.settings.disallowMmLite
boolean
This is specific for WhatsApp marketing templates and requires MM Lite to be disabled for the WABAID.
meta
object
Tampilkan parameter turunan
meta.extraInformation
object
Free-form metadata. The useCase key (marketing, otp, transactional, or conversation) classifies the message and affects handling such as routing, frequency capping, email deliverability, and the messaging type/tag used on Meta channels (Messenger, Instagram).
meta.referral
object
Tampilkan parameter turunan
meta.referral.source
string
meta.referral.title
string
meta.referral.text
string
meta.referral.group
string
meta.referral.metadata
object
Tampilkan parameter turunan
meta.referral.metadata.source_id
string
meta.referral.metadata.source_url
string
meta.referral.metadata.media_url
string
meta.referral.metadata.tracking_id
string
meta.order
object
The order object contains information about the purchase order.
Tampilkan parameter turunan
meta.order.products
array of object
Tampilkan parameter turunan
meta.order.products.externalCatalogId
string
The platform-specific catalog ID of the product.
meta.order.products.externalProductId
string
The platform-specific product ID.
meta.order.products.quantity
integer
The number of items purchased.
meta.order.products.price
object
The price of the product.
Tampilkan parameter turunan
meta.order.products.price.amount
integer
meta.order.products.price.exponent
integer
meta.order.products.price.currencyCode
string
meta.referredProduct
object
Referred product in an incoming message.
Tampilkan parameter turunan
meta.referredProduct.externalCatalogId
string
The platform-specific catalog ID of the product.
meta.referredProduct.externalProductId
string
The platform-specific product ID.
meta.email
object
Tampilkan parameter turunan
meta.email.subject
string
meta.email.headers
object
meta.email.from
object
Tampilkan parameter turunan
meta.email.from.username
string
meta.email.from.displayName
string
meta.sms
object
Tampilkan parameter turunan
meta.sms.smartEncoding
boolean
When enabled, attempts to transliterate Unicode characters to GSM-7 equivalents. If the resulting text is fully GSM-7 compatible, fewer message segments may be required. The original message body is preserved; transliteration is only applied when sending.
meta.pushNotifications
object
Tampilkan parameter turunan
meta.pushNotifications.gatewayTypeOverride
string
Possible values: apns, firebase, web
meta.navigatorId
string
meta.navigatorMessageId
string
meta.flow
object
Tampilkan parameter turunan
meta.flow.id
string
meta.flow.name
string
meta.flow.stepId
string
meta.flow.runId
string
meta.journey
object
Tampilkan parameter turunan
meta.journey.id
string
meta.journey.name
string
meta.journey.stepId
string
meta.journey.runId
string
meta.campaign
object
Tampilkan parameter turunan
meta.campaign.id
string
meta.campaign.name
string
replyTo
object
Tampilkan parameter turunan
replyTo.id
string
wajib
The ID of the message that is being replied to.
replyTo.order
integer
The order of the message in the conversation.
replyTo.type
string
wajib
Possible values: message, click, referrals
notification
object
Tampilkan parameter turunan
notification.url
string
A custom webhook url to send events to. Note: you should have a created webhook subscription. Refer to the Notifications API to learn how to create a webhook subscription.
capFrequency
boolean
If set to true, the frequency capping settings of the platform will be used to either allow or reject the message to a contact. Can only be set to true if the message is sent to a contact and .meta.extraInformation.useCase is marketing.
enableLinkTracking
boolean
If set to true and message is a test/campaign message, web tracking parameters will be appended to the links in the message.
ignoreQuietHours
boolean
If set to true, quiet hours settings will be ignored and the message will be sent as soon as possible.
ignoreGlobalHoldout
boolean
Do not check if the recipient is part of global holdout. To be used to send transactional messages.
tags
array of string
Tags to associate with the message. Tags are converted to lower case and tags that do not exist are automatically created. You can view your created tags in the UI. You can specify up to 10 tags per message.
shortLinks
object
SMS link shortening options. Must be included in the request for SMS channels when enableLinkTracking is set to true. When using templates, please refer to the template level shortLinks instead.
Tampilkan parameter turunan
shortLinks.domain
string
wajib
The domain to use when shortening links. When set to default, uses the default link shortening domain for the workspace.
scheduledFor
string
Scheduled time to send message at. Must be formated as RFC3339 timestamp. When set, the message status will be scheduled until it's sent. Messages scheduled for a time in the past or within 10 minutes of the request may be sent immediately. Messages scheduled farther than 35 days will be rejected.
validity
integer
Validity determines for how many seconds a message is valid. If none is provided, the channel message type will be used to determine it. A promotional, conversational or transactional channel message is valid for 36 hours (129600 seconds). A message sent from a 2FA channel is valid for 10 minutes (600 seconds).
Payload respons
body
object
Tampilkan atribut turunan
body.text
object
wajib
Tampilkan atribut turunan
body.text.actions
array of object
Tampilkan atribut turunan
body.text.actions.link
object
wajib
Tampilkan atribut turunan
body.text.actions.link.metadata
object
Tampilkan atribut turunan
body.text.actions.link.metadata.description
object
Tampilkan atribut turunan
body.text.actions.link.metadata.description.label
string
wajib
body.text.actions.link.text
string
wajib
body.text.actions.link.url
string
wajib
body.text.actions.type
string
wajib
Possible values: link
body.text.attachments
array of object
Tampilkan atribut turunan
body.text.attachments.content
string
body.text.attachments.contentId
string
body.text.attachments.contentType
string
body.text.attachments.filename
string
wajib
body.text.attachments.inline
boolean
body.text.attachments.mediaUrl
string
wajib
body.text.metadata
object
Tampilkan atribut turunan
body.text.metadata.apple
object
Tampilkan atribut turunan
body.text.metadata.apple.appClipPreview
boolean
body.text.metadata.apple.appClipRegion
string
body.text.metadata.apple.summaryText
string
body.text.metadata.headers
object
body.text.metadata.line
object
Tampilkan atribut turunan
body.text.metadata.line.emoji
object
Tampilkan atribut turunan
body.text.metadata.line.emoji.items
array of object
Tampilkan atribut turunan
body.text.metadata.line.emoji.items.emojiId
string
wajib
body.text.metadata.line.emoji.items.index
integer
wajib
body.text.metadata.line.emoji.items.length
integer
body.text.metadata.line.emoji.items.productId
string
wajib
body.text.metadata.paymentDetails
object
Tampilkan atribut turunan
body.text.metadata.paymentDetails.amount
string
wajib
body.text.metadata.paymentDetails.currency
string
wajib
body.text.metadata.paymentDetails.sessionIdentifier
string
body.text.metadata.paymentDetails.state
string
wajib
body.text.metadata.subject
string
body.text.metadata.telegram
object
Tampilkan atribut turunan
body.text.metadata.telegram.parseMode
string
body.text.metadata.whatsapp
object
Tampilkan atribut turunan
body.text.metadata.whatsapp.callPermissionExpiration
string
body.text.metadata.whatsapp.callPermissionResponse
string
Possible values: accept, reject
body.text.metadata.whatsapp.previewUrl
boolean
wajib
body.text.metadata.whatsapp.sharedContacts
array of object
Tampilkan atribut turunan
body.text.metadata.whatsapp.sharedContacts.origin
string
wajib
body.text.metadata.whatsapp.sharedContacts.phones
array of object
Tampilkan atribut turunan
body.text.metadata.whatsapp.sharedContacts.phones.phone
string
wajib
body.text.metadata.whatsapp.sharedContacts.phones.type
string
wajib
body.text.metadata.whatsapp.sharedContacts.phones.waId
string
wajib
body.text.metadata.whatsapp.sharedContacts.vcard
string
body.text.text
string
wajib
body.type
string
wajib
Possible values: text
bodyId
string
bodyStorage
object
Tampilkan atribut turunan
bodyStorage.type
string
wajib
Possible values: s3
bodyStorage.s3
object
wajib
Tampilkan atribut turunan
bodyStorage.s3.bucketArn
string
wajib
bodyStorage.s3.encryptionKey
string
wajib
bodyStorage.s3.key
string
wajib
channelId
string
wajib
chargeableUnits
integer
context
object
Tampilkan atribut turunan
context.id
string
context.tagIds
array of string
context.type
string
createdAt
string
wajib
details
string
This field is used to store additional information related to the message status.
direction
string
Possible values: incoming, outgoing
failure
object
Tampilkan atribut turunan
failure.code
integer
omni channel interpretation of the failure to categorise the nature of message error
failure.description
string
human readable description of the error
failure.source
object
Tampilkan atribut turunan
failure.source.code
string
numerical, text or alphanumeric code that indicates the error or issue while delivering the message in the last step
failure.source.name
string
Possible values: pre-processing, accounting, contact, touchpoint, sms-messagebird, sms-twilio, email-messagebird, whatsapp, facebook, instagram, line, telegram, apple-business-chat, viber, chat, google-business-messages, voice, smtp-messagebird, rcs-google, service
id
string
wajib
ignorePersistedEventhooks
boolean
lastStatusAt
string
wajib
meta
object
Tampilkan atribut turunan
meta.campaign
object
Tampilkan atribut turunan
meta.campaign.id
string
meta.campaign.name
string
meta.campaignId
string
meta.chargeOnceDelivered
boolean
meta.email
object
Tampilkan atribut turunan
meta.email.from
object
Tampilkan atribut turunan
meta.email.from.displayName
string
meta.email.from.username
string
meta.email.headers
object
meta.email.subject
string
meta.extraInformation
object
meta.flow
object
Tampilkan atribut turunan
meta.flow.id
string
meta.flow.name
string
meta.flow.runId
string
meta.flow.scheduleExecutionId
string
meta.flow.stepId
string
meta.formResponse
object
Tampilkan atribut turunan
meta.formResponse.id
string
wajib
meta.formResponse.jsonResponse
string
wajib
meta.formResponse.requestIdentifier
string
wajib
meta.formResponse.selections
array of object
Tampilkan atribut turunan
meta.formResponse.selections.items
array of object
Tampilkan atribut turunan
meta.formResponse.selections.items.identifier
string
wajib
meta.formResponse.selections.items.title
string
wajib
meta.formResponse.selections.items.type
string
wajib
meta.formResponse.selections.items.value
string
wajib
meta.formResponse.selections.pageIdentifier
string
wajib
meta.formResponse.selections.subtitle
string
wajib
meta.formResponse.selections.title
string
wajib
meta.formResponse.sessionIdentifier
string
wajib
meta.formResponse.template
string
wajib
meta.formResponse.version
string
wajib
meta.ignoreGlobalHoldout
boolean
meta.ignoreQuietHours
boolean
meta.journey
object
Tampilkan atribut turunan
meta.journey.id
string
meta.journey.name
string
meta.journey.runId
string
meta.journey.scheduleExecutionId
string
meta.journey.stepId
string
meta.longToShortLinks
object
meta.metaThreadId
string
meta.navigatorId
string
meta.navigatorMessageId
string
meta.order
object
The order object contains information about the purchase order associated with the message.
Tampilkan atribut turunan
meta.order.products
array of object
Tampilkan atribut turunan
meta.order.products.externalCatalogId
string
The platform-specific catalog ID of the product.
meta.order.products.externalProductId
string
wajib
The platform-specific product ID.
meta.order.products.price
object
wajib
Tampilkan atribut turunan
meta.order.products.price.amount
integer
wajib
meta.order.products.price.currencyCode
string
wajib
meta.order.products.price.exponent
integer
wajib
meta.order.products.quantity
integer
wajib
The number of items purchased.
meta.pushNotifications
object
Tampilkan atribut turunan
meta.pushNotifications.gatewayTypeOverride
string
Possible values: firebase, apns, web
meta.referral
object
Tampilkan atribut turunan
meta.referral.group
string
meta.referral.metadata
object
Tampilkan atribut turunan
meta.referral.metadata.caption
string
meta.referral.metadata.mediaType
string
meta.referral.metadata.mediaUrl
string
meta.referral.metadata.sourceId
string
wajib
meta.referral.metadata.sourceUrl
string
meta.referral.metadata.timestamp
string
meta.referral.metadata.trackingId
string
meta.referral.metadata.username
string
meta.referral.source
string
wajib
meta.referral.text
string
meta.referral.title
string
meta.referredProduct
object
Referred product in an incoming message (e.g. a product shared in a WhatsApp catalog message).
Tampilkan atribut turunan
meta.referredProduct.externalCatalogId
string
The platform-specific catalog ID of the product.
meta.referredProduct.externalProductId
string
wajib
The platform-specific product ID.
meta.renderedContentBlocks
array of string
meta.shortToLongLinks
object
meta.skipThisMessage
string
Possible values: campaignHoldout, globalHoldout, journeyHoldout
meta.sms
object
Tampilkan atribut turunan
meta.sms.gatewayId
integer
meta.sms.registeredDelivery
string
Possible values: final, intermediate, all, noDlr
meta.sms.smartEncoding
boolean
When enabled, attempts to transliterate Unicode characters to GSM-7 equivalents. If the resulting text is fully GSM-7 compatible, fewer message segments may be required. The original message body is preserved; transliteration is only applied when sending.
meta.sms.smpp
object
Tampilkan atribut turunan
meta.sms.smpp.segments
array of object
Tampilkan atribut turunan
meta.sms.smpp.segments.id
string
wajib
meta.sms.smpp.segments.registeredDelivery
string
wajib
Possible values: final, intermediate, all, noDlr
meta.sms.smpp.userId
string
wajib
meta.sms.validity
string
meta.useFallback
boolean
parts
array of object
Tampilkan atribut turunan
parts.id
string
parts.order
integer
parts.platformReferenceId
string
parts.platformStatusAt
string
parts.rawBody
string
parts.reason
string
parts.status
string
Possible values: accepted, processing, sent, sending_failed, delivered, delivery_failed, deleted, scheduled, skipped, rejected
parts.statusAt
string
platformId
string
platformReferenceId
string
previousMessages
array of object
Tampilkan atribut turunan
previousMessages.id
string
wajib
previousMessages.useCaseType
string
wajib
Possible values: unspecified, marketing, otp, transactional, conversation, test
reason
string
receiver
object
wajib
Tampilkan atribut turunan
receiver.connector
object
Tampilkan atribut turunan
receiver.connector.annotations
object
Annotations add extra information to a sender or receiver. For email messages, the name annotation overrides the display name.
Tampilkan atribut turunan
receiver.connector.annotations.name
string
receiver.connector.id
string
wajib
receiver.connector.identifierValue
string
The identifier value of the sender or receiver connector (e.g. email address or phone number).
receiver.connector.types
array of string
receiver.contacts
array of object
Tampilkan atribut turunan
receiver.contacts.contactAnnotation
object
Annotations add extra information to a sender or receiver. For email messages, the name annotation overrides the display name.
Tampilkan atribut turunan
receiver.contacts.contactAnnotation.name
string
receiver.contacts.countryCode
string
receiver.contacts.id
string
The ID of the contact.
receiver.contacts.identifierKey
string
The identifier key for finding the contact (e.g. emailaddress, phonenumber). For WhatsApp channels with BSUID support, use whatsappbsuid to send to a contact by their Business-Scoped User ID.
receiver.contacts.identifierValue
string
The identifier value for finding the contact.
receiver.contacts.identifiers
array of object
Additional identifiers to augment the contact during resolution.
Tampilkan atribut turunan
receiver.contacts.identifiers.identifierKey
string
wajib
The identifier key for finding the contact (e.g. emailaddress, phonenumber).
receiver.contacts.identifiers.identifierValue
string
wajib
The identifier value for finding the contact.
receiver.contacts.platformAddress
string
The resolved platform address used to deliver the message (e.g. phone number or email address).
receiver.contacts.platformAddressSelector
string
An expression that defines how we resolve the platform address from a contact. Optional override for the default resolution logic.
receiver.contacts.receiverExpression
string
receiver.contacts.receiverValue
string
receiver.contacts.type
string
The type of the receiver (e.g. to, cc, bcc for email).
receiver.device
object
Tampilkan atribut turunan
receiver.device.gateway
string
wajib
Possible values: firebase, apns, web
receiver.device.id
string
wajib
receiver.device.identifierValue
string
wajib
receiver.inbox
object
Tampilkan atribut turunan
receiver.inbox.emailRecipientType
string
receiver.inbox.id
string
wajib
receiver.inbox.identifierKey
string
wajib
receiver.inbox.identifierValue
string
wajib
receiver.inbox.type
string
wajib
Possible values: user, group
receiver.userContacts
array of object
Tampilkan atribut turunan
receiver.userContacts.id
string
wajib
receiver.userContacts.identifierKey
string
wajib
receiver.userContacts.identifierValue
string
wajib
receiver.userContacts.type
string
reference
string
A reference to the message. This can be used to identify the message in the channel.
replyTo
object
Tampilkan atribut turunan
replyTo.id
string
The ID of the message that is being replied to.
replyTo.order
integer
The order of the message part in the conversation.
replyTo.platformReference
string
replyTo.type
string
Possible values: message, click
schedule
object
Tampilkan atribut turunan
schedule.reason
string
wajib
schedule.scheduledAt
string
wajib
scheduledFor
string
Scheduled message send time (RFC3339). Messages scheduled within 10 minutes may be sent immediately; messages scheduled more than 35 days out will be rejected.
sendAt
string
sender
object
wajib
Tampilkan atribut turunan
sender.connector
object
Tampilkan atribut turunan
sender.connector.annotations
object
Annotations add extra information to a sender or receiver. For email messages, the name annotation overrides the display name.
Tampilkan atribut turunan
sender.connector.annotations.name
string
sender.connector.id
string
wajib
sender.connector.identifierValue
string
The identifier value of the sender or receiver connector (e.g. email address or phone number).
sender.connector.types
array of string
sender.contact
object
Tampilkan atribut turunan
sender.contact.contactAnnotation
object
Annotations add extra information to a sender or receiver. For email messages, the name annotation overrides the display name.
Tampilkan atribut turunan
sender.contact.contactAnnotation.name
string
sender.contact.countryCode
string
sender.contact.id
string
The ID of the contact.
sender.contact.identifierKey
string
The identifier key for finding the contact (e.g. emailaddress, phonenumber). For WhatsApp channels with BSUID support, use whatsappbsuid to send to a contact by their Business-Scoped User ID.
sender.contact.identifierValue
string
The identifier value for finding the contact.
sender.contact.identifiers
array of object
Additional identifiers to augment the contact during resolution.
Tampilkan atribut turunan
sender.contact.identifiers.identifierKey
string
wajib
The identifier key for finding the contact (e.g. emailaddress, phonenumber).
sender.contact.identifiers.identifierValue
string
wajib
The identifier value for finding the contact.
sender.contact.platformAddress
string
The resolved platform address used to deliver the message (e.g. phone number or email address).
sender.contact.platformAddressSelector
string
An expression that defines how we resolve the platform address from a contact. Optional override for the default resolution logic.
sender.contact.receiverExpression
string
sender.contact.receiverValue
string
sender.contact.type
string
The type of the receiver (e.g. to, cc, bcc for email).
sender.inbox
object
Tampilkan atribut turunan
sender.inbox.emailRecipientType
string
sender.inbox.id
string
wajib
sender.inbox.identifierKey
string
wajib
sender.inbox.identifierValue
string
wajib
sender.inbox.type
string
wajib
Possible values: user, group
sender.userContact
object
Tampilkan atribut turunan
sender.userContact.id
string
wajib
sender.userContact.identifierKey
string
wajib
sender.userContact.identifierValue
string
wajib
sender.userContact.type
string
shortLinks
object
Tampilkan atribut turunan
shortLinks.domain
string
wajib
The domain to use when shortening links. When set to default, uses the default link shortening domain for the workspace.
status
string
wajib
Possible values: accepted, processing, sent, sending_failed, delivered, delivery_failed, deleted, scheduled, skipped, rejected
tagIds
array of string
tags
array of string
Tags to associate with the message. Tags are converted to lower case and automatically created if they don't exist. Up to 10 tags per message.
template
object
Tampilkan atribut turunan
template.attachments
array of object
Tampilkan atribut turunan
template.attachments.content
string
template.attachments.contentType
string
template.attachments.filename
string
wajib
template.attachments.inline
boolean
wajib
template.attachments.mediaUrl
string
wajib
template.deployment
object
template.locale
string
wajib
template.name
string
The platform name of the template.
template.parameters
array of object
Tampilkan atribut turunan
template.parameters.key
string
wajib
template.parameters.sourceUrl
object
Tampilkan atribut turunan
template.parameters.sourceUrl.fullyReplaced
boolean
wajib
template.parameters.sourceUrl.value
string
wajib
template.parameters.type
string
wajib
Possible values: string, timeslotList, productSections, productList, number, boolean, sectionList, shippingMethodList, lineItemList, whatsappProductSections, whatsappProductItems, shortLink, object, carouselCards, appleFormPageItems
template.parameters.value
object or array or string or number or boolean
wajib
template.projectId
string
wajib
The ID of the project from Studio.
template.settings
object
Tampilkan atribut turunan
template.settings.disallowMmLite
boolean
template.shortLinks
object
Tampilkan atribut turunan
template.shortLinks.domain
string
wajib
The domain to use when shortening links. When set to default, uses the default link shortening domain for the workspace.
template.shortLinks.enabled
boolean
wajib
Enables link shortening for SMS messages.
template.templateBody
object
Tampilkan atribut turunan
template.templateBody.text
object
wajib
Tampilkan atribut turunan
template.templateBody.text.actions
array of object
Tampilkan atribut turunan
template.templateBody.text.actions.link
object
wajib
Tampilkan atribut turunan
template.templateBody.text.actions.link.metadata
object
Tampilkan atribut turunan
template.templateBody.text.actions.link.metadata.description
object
Tampilkan atribut turunan
template.templateBody.text.actions.link.metadata.description.label
string
wajib
template.templateBody.text.actions.link.text
string
wajib
template.templateBody.text.actions.link.url
string
wajib
template.templateBody.text.actions.type
string
wajib
Possible values: link
template.templateBody.text.attachments
array of object
Tampilkan atribut turunan
template.templateBody.text.attachments.content
string
template.templateBody.text.attachments.contentId
string
template.templateBody.text.attachments.contentType
string
template.templateBody.text.attachments.filename
string
wajib
template.templateBody.text.attachments.inline
boolean
template.templateBody.text.attachments.mediaUrl
string
wajib
template.templateBody.text.metadata
object
Tampilkan atribut turunan
template.templateBody.text.metadata.apple
object
Tampilkan atribut turunan
template.templateBody.text.metadata.apple.appClipPreview
boolean
template.templateBody.text.metadata.apple.appClipRegion
string
template.templateBody.text.metadata.apple.summaryText
string
template.templateBody.text.metadata.headers
object
template.templateBody.text.metadata.line
object
Tampilkan atribut turunan
template.templateBody.text.metadata.line.emoji
object
Tampilkan atribut turunan
template.templateBody.text.metadata.line.emoji.items
array of object
Tampilkan atribut turunan
template.templateBody.text.metadata.line.emoji.items.emojiId
string
wajib
template.templateBody.text.metadata.line.emoji.items.index
integer
wajib
template.templateBody.text.metadata.line.emoji.items.length
integer
template.templateBody.text.metadata.line.emoji.items.productId
string
wajib
template.templateBody.text.metadata.paymentDetails
object
Tampilkan atribut turunan
template.templateBody.text.metadata.paymentDetails.amount
string
wajib
template.templateBody.text.metadata.paymentDetails.currency
string
wajib
template.templateBody.text.metadata.paymentDetails.sessionIdentifier
string
template.templateBody.text.metadata.paymentDetails.state
string
wajib
template.templateBody.text.metadata.subject
string
template.templateBody.text.metadata.telegram
object
Tampilkan atribut turunan
template.templateBody.text.metadata.telegram.parseMode
string
template.templateBody.text.metadata.whatsapp
object
Tampilkan atribut turunan
template.templateBody.text.metadata.whatsapp.callPermissionExpiration
string
template.templateBody.text.metadata.whatsapp.callPermissionResponse
string
Possible values: accept, reject
template.templateBody.text.metadata.whatsapp.previewUrl
boolean
wajib
template.templateBody.text.metadata.whatsapp.sharedContacts
array of object
Tampilkan atribut turunan
template.templateBody.text.metadata.whatsapp.sharedContacts.origin
string
wajib
template.templateBody.text.metadata.whatsapp.sharedContacts.phones
array of object
Tampilkan atribut turunan
template.templateBody.text.metadata.whatsapp.sharedContacts.phones.phone
string
wajib
template.templateBody.text.metadata.whatsapp.sharedContacts.phones.type
string
wajib
template.templateBody.text.metadata.whatsapp.sharedContacts.phones.waId
string
wajib
template.templateBody.text.metadata.whatsapp.sharedContacts.vcard
string
template.templateBody.text.text
string
wajib
template.templateBody.type
string
wajib
Possible values: text
template.utmParameters
array of object
Tampilkan atribut turunan
template.utmParameters.key
string
wajib
template.utmParameters.value
string
wajib
template.variables
object
template.version
string
wajib
The version of the template.
updatedAt
string
wajib
templates
object
navigatorData
object
Tampilkan atribut turunan
navigatorData.attempts
array of object
Tampilkan atribut turunan
navigatorData.attempts.channelId
string
wajib
navigatorData.attempts.messageId
string
wajib
navigatorData.attempts.platformId
string
navigatorData.attempts.sender
string
navigatorData.attempts.attempt
integer
wajib
navigatorData.attempts.createdAt
string
wajib
navigatorData.attempts.status
string
wajib
Possible values: accepted, processing, sent, sending_failed, delivered, delivery_failed, deleted, scheduled, skipped, rejected
navigatorData.attempts.failure
object
Tampilkan atribut turunan
navigatorData.attempts.failure.code
integer
omni channel interpretation of the failure to categorise the nature of message error
navigatorData.attempts.failure.description
string
human readable description of the error
navigatorData.attempts.failure.source
object
Tampilkan atribut turunan
navigatorData.attempts.failure.source.code
string
numerical, text or alphanumeric code that indicates the error or issue while delivering the message in the last step
navigatorData.attempts.failure.source.name
string
Possible values: pre-processing, accounting, contact, touchpoint, sms-messagebird, sms-twilio, email-messagebird, whatsapp, facebook, instagram, line, telegram, apple-business-chat, viber, chat, google-business-messages, voice, smtp-messagebird, rcs-google, service
Contoh kode
curl -X POST 'https://api.bird.com/workspaces/{workspaceId}/navigators/{navigatorId}/messages' \
  -H 'Authorization: AccessKey YOUR_ACCESS_KEY'
The navigator message will contain navigator metadata, including.
providing UUID relevant to both the navigator objection and the navigator message objects
Contoh kode
    "meta": {
        "navigatorId": "5f40c7f0-5904-4d68-8840-a1a5dc3e36c3",
        "navigatorMessageId": "5ec65d4f-53b0-45f8-8f83-b177f976b3e3"
    },

Attempts

Navigator may attempt to send messages via more than one channel. attempts will list and providing information about all channels a navigator used when handling a given message
Contoh kode
    "navigatorData": {
        "attempts": [
            {
                "channelId": "6f50cd25-d416-44d3-bf63-de88a60129d0",
                "messageId": "3ecadc0d-cf7c-4b2a-90bc-fed5a3f6a26e",
                "attempt": 1,
                "status": "accepted",
                "createdAt": "2024-07-18T14:04:18.214Z"
            }
You can get messages sent to a navigator by making a request to the channel endpoint that accepted the message based on the response above

Check Navigators Messages Status Reports

To receive status reports about messages, you will need webhook subscriptions. You can create the via UI

Configure Webhook Subscriptions

We recommend subscribing at least to navigator.outbound. Navigator event will provide you information about any fallback as well the status of your navigator messages.
Note: Navigator message status reflects the final outcome of all delivery attempts made by the Navigator. For example, if a WhatsApp delivery fails but the fallback via SMS succeeds, the navigator message status will be marked as "Delivered."
For the payload field by field, the events available per channel, and a worked example of monitoring an RCS send that falls back to SMS, see OTT channels and fallback.
Contoh kode
{"service": "channels",
  "event": "navigator.outbound",
  "payload": {
    "id": "00000000-0000-0000-0000-100000000000",
    "navigatorId": {navigatorI},
    "reference": "",
"attempts": [
            {
                "channelId": {channelId},
                "platformId": "rcs-google",
                "messageId": "00000000-0000-0000-0000-000000000000",
                "attempt": 1,
                "status": "sending_failed",
                "createdAt": "2024-12-24T09:52:54.524Z"
            },
            {
                "channelId": {channelId},
                "platformId": "whatsapp",
                "messageId": "00000000-0000-0000-0000-000000000001",
                "attempt": 2,
                "status": "sending_failed",
                "createdAt": "2024-12-24T09:52:54.524Z",
                "failure": {
                    "code": 12006,
                    "description": "Invalid message",
                    "source": {
                        "name": "pre-processing"
                    }
                }
            },
            {
                "channelId": {channelId},
                "platformId": "sms-messagebird",
                "messageId": "00000000-0000-0000-0000-000000000002",
                "attempt": 3,
                "status": "delivered",
                "createdAt": "2024-12-24T09:52:54.524Z"
            }
        ],
    "status": "delivered",
    "createdAt": "2024-12-24T09:52:54.524Z",
    "updatedAt": "2024-12-24T09:52:55.855Z"
  }
}
Optional: channel Webhooks
If you are interested in diving deep on specific attempts status you can also subscribe to sms.outbound and one for whatsapp.outbound . When doing so you will be able to retrieve the navigator ID and navigator message id in the meta field.
Contoh kode
 "meta": {
      "navigatorId": "91af46ab-70ba-5152-a611-812cad0fbd71",
      "navigatorMessageId": "defe9d3b-9cea-4585-9f67-2a4f1d93101a"
    }

Check Incoming Messages

If you've only sent SMS messages before—especially if you haven’t operated in the U.S.—you’ve likely only used a one-way channel. WhatsApp, however, is a two-way channel by design, so users may try to contact you there. When using a Navigator to send both SMS and r WhatsApp traffic, it’s essential to monitor incoming messages to avoid missing user inquiries. Ignoring users can lead to frustration and could result in them reporting your channel to Meta, potentially causing suspension.

Programmatically

You can subscribe to sms.inbound and whatsapp.inbound event to capture all incoming messages in your workspace
NOTE incoming messages will not be linked to a navigator and will nto have the navigator information in the meta field

Via UI

If you navigate to the customer service section of our side panel you can find all incoming conversations in the entry corresponding to yours SMS or WhatsApp channels.

GET
/workspaces/{workspaceId}/channels/{channelId}/messages/{messageId}
Get a channel message
Payload respons
body
object
Tampilkan atribut turunan
body.text
object
wajib
Tampilkan atribut turunan
body.text.actions
array of object
Tampilkan atribut turunan
body.text.actions.link
object
wajib
Tampilkan atribut turunan
body.text.actions.link.metadata
object
Tampilkan atribut turunan
body.text.actions.link.metadata.description
object
Tampilkan atribut turunan
body.text.actions.link.metadata.description.label
string
wajib
body.text.actions.link.text
string
wajib
body.text.actions.link.url
string
wajib
body.text.actions.type
string
wajib
Possible values: link
body.text.attachments
array of object
Tampilkan atribut turunan
body.text.attachments.content
string
body.text.attachments.contentId
string
body.text.attachments.contentType
string
body.text.attachments.filename
string
wajib
body.text.attachments.inline
boolean
body.text.attachments.mediaUrl
string
wajib
body.text.metadata
object
Tampilkan atribut turunan
body.text.metadata.apple
object
Tampilkan atribut turunan
body.text.metadata.apple.appClipPreview
boolean
body.text.metadata.apple.appClipRegion
string
body.text.metadata.apple.summaryText
string
body.text.metadata.headers
object
body.text.metadata.line
object
Tampilkan atribut turunan
body.text.metadata.line.emoji
object
Tampilkan atribut turunan
body.text.metadata.line.emoji.items
array of object
Tampilkan atribut turunan
body.text.metadata.line.emoji.items.emojiId
string
wajib
body.text.metadata.line.emoji.items.index
integer
wajib
body.text.metadata.line.emoji.items.length
integer
body.text.metadata.line.emoji.items.productId
string
wajib
body.text.metadata.paymentDetails
object
Tampilkan atribut turunan
body.text.metadata.paymentDetails.amount
string
wajib
body.text.metadata.paymentDetails.currency
string
wajib
body.text.metadata.paymentDetails.sessionIdentifier
string
body.text.metadata.paymentDetails.state
string
wajib
body.text.metadata.subject
string
body.text.metadata.telegram
object
Tampilkan atribut turunan
body.text.metadata.telegram.parseMode
string
body.text.metadata.whatsapp
object
Tampilkan atribut turunan
body.text.metadata.whatsapp.callPermissionExpiration
string
body.text.metadata.whatsapp.callPermissionResponse
string
Possible values: accept, reject
body.text.metadata.whatsapp.previewUrl
boolean
wajib
body.text.metadata.whatsapp.sharedContacts
array of object
Tampilkan atribut turunan
body.text.metadata.whatsapp.sharedContacts.origin
string
wajib
body.text.metadata.whatsapp.sharedContacts.phones
array of object
Tampilkan atribut turunan
body.text.metadata.whatsapp.sharedContacts.phones.phone
string
wajib
body.text.metadata.whatsapp.sharedContacts.phones.type
string
wajib
body.text.metadata.whatsapp.sharedContacts.phones.waId
string
wajib
body.text.metadata.whatsapp.sharedContacts.vcard
string
body.text.text
string
wajib
body.type
string
wajib
Possible values: text
bodyId
string
bodyStorage
object
Tampilkan atribut turunan
bodyStorage.type
string
wajib
Possible values: s3
bodyStorage.s3
object
wajib
Tampilkan atribut turunan
bodyStorage.s3.bucketArn
string
wajib
bodyStorage.s3.encryptionKey
string
wajib
bodyStorage.s3.key
string
wajib
channelId
string
wajib
chargeableUnits
integer
context
object
Tampilkan atribut turunan
context.id
string
context.tagIds
array of string
context.type
string
createdAt
string
wajib
details
string
This field is used to store additional information related to the message status.
direction
string
Possible values: incoming, outgoing
failure
object
Tampilkan atribut turunan
failure.code
integer
omni channel interpretation of the failure to categorise the nature of message error
failure.description
string
human readable description of the error
failure.source
object
Tampilkan atribut turunan
failure.source.code
string
numerical, text or alphanumeric code that indicates the error or issue while delivering the message in the last step
failure.source.name
string
Possible values: pre-processing, accounting, contact, touchpoint, sms-messagebird, sms-twilio, email-messagebird, whatsapp, facebook, instagram, line, telegram, apple-business-chat, viber, chat, google-business-messages, voice, smtp-messagebird, rcs-google, service
id
string
wajib
ignorePersistedEventhooks
boolean
lastStatusAt
string
wajib
meta
object
Tampilkan atribut turunan
meta.campaign
object
Tampilkan atribut turunan
meta.campaign.id
string
meta.campaign.name
string
meta.campaignId
string
meta.chargeOnceDelivered
boolean
meta.email
object
Tampilkan atribut turunan
meta.email.from
object
Tampilkan atribut turunan
meta.email.from.displayName
string
meta.email.from.username
string
meta.email.headers
object
meta.email.subject
string
meta.extraInformation
object
meta.flow
object
Tampilkan atribut turunan
meta.flow.id
string
meta.flow.name
string
meta.flow.runId
string
meta.flow.scheduleExecutionId
string
meta.flow.stepId
string
meta.formResponse
object
Tampilkan atribut turunan
meta.formResponse.id
string
wajib
meta.formResponse.jsonResponse
string
wajib
meta.formResponse.requestIdentifier
string
wajib
meta.formResponse.selections
array of object
Tampilkan atribut turunan
meta.formResponse.selections.items
array of object
Tampilkan atribut turunan
meta.formResponse.selections.items.identifier
string
wajib
meta.formResponse.selections.items.title
string
wajib
meta.formResponse.selections.items.type
string
wajib
meta.formResponse.selections.items.value
string
wajib
meta.formResponse.selections.pageIdentifier
string
wajib
meta.formResponse.selections.subtitle
string
wajib
meta.formResponse.selections.title
string
wajib
meta.formResponse.sessionIdentifier
string
wajib
meta.formResponse.template
string
wajib
meta.formResponse.version
string
wajib
meta.ignoreGlobalHoldout
boolean
meta.ignoreQuietHours
boolean
meta.journey
object
Tampilkan atribut turunan
meta.journey.id
string
meta.journey.name
string
meta.journey.runId
string
meta.journey.scheduleExecutionId
string
meta.journey.stepId
string
meta.longToShortLinks
object
meta.metaThreadId
string
meta.navigatorId
string
meta.navigatorMessageId
string
meta.order
object
The order object contains information about the purchase order associated with the message.
Tampilkan atribut turunan
meta.order.products
array of object
Tampilkan atribut turunan
meta.order.products.externalCatalogId
string
The platform-specific catalog ID of the product.
meta.order.products.externalProductId
string
wajib
The platform-specific product ID.
meta.order.products.price
object
wajib
Tampilkan atribut turunan
meta.order.products.price.amount
integer
wajib
meta.order.products.price.currencyCode
string
wajib
meta.order.products.price.exponent
integer
wajib
meta.order.products.quantity
integer
wajib
The number of items purchased.
meta.pushNotifications
object
Tampilkan atribut turunan
meta.pushNotifications.gatewayTypeOverride
string
Possible values: firebase, apns, web
meta.referral
object
Tampilkan atribut turunan
meta.referral.group
string
meta.referral.metadata
object
Tampilkan atribut turunan
meta.referral.metadata.caption
string
meta.referral.metadata.mediaType
string
meta.referral.metadata.mediaUrl
string
meta.referral.metadata.sourceId
string
wajib
meta.referral.metadata.sourceUrl
string
meta.referral.metadata.timestamp
string
meta.referral.metadata.trackingId
string
meta.referral.metadata.username
string
meta.referral.source
string
wajib
meta.referral.text
string
meta.referral.title
string
meta.referredProduct
object
Referred product in an incoming message (e.g. a product shared in a WhatsApp catalog message).
Tampilkan atribut turunan
meta.referredProduct.externalCatalogId
string
The platform-specific catalog ID of the product.
meta.referredProduct.externalProductId
string
wajib
The platform-specific product ID.
meta.renderedContentBlocks
array of string
meta.shortToLongLinks
object
meta.skipThisMessage
string
Possible values: campaignHoldout, globalHoldout, journeyHoldout
meta.sms
object
Tampilkan atribut turunan
meta.sms.gatewayId
integer
meta.sms.registeredDelivery
string
Possible values: final, intermediate, all, noDlr
meta.sms.smartEncoding
boolean
When enabled, attempts to transliterate Unicode characters to GSM-7 equivalents. If the resulting text is fully GSM-7 compatible, fewer message segments may be required. The original message body is preserved; transliteration is only applied when sending.
meta.sms.smpp
object
Tampilkan atribut turunan
meta.sms.smpp.segments
array of object
Tampilkan atribut turunan
meta.sms.smpp.segments.id
string
wajib
meta.sms.smpp.segments.registeredDelivery
string
wajib
Possible values: final, intermediate, all, noDlr
meta.sms.smpp.userId
string
wajib
meta.sms.validity
string
meta.useFallback
boolean
parts
array of object
Tampilkan atribut turunan
parts.id
string
parts.order
integer
parts.platformReferenceId
string
parts.platformStatusAt
string
parts.rawBody
string
parts.reason
string
parts.status
string
Possible values: accepted, processing, sent, sending_failed, delivered, delivery_failed, deleted, scheduled, skipped, rejected
parts.statusAt
string
platformId
string
platformReferenceId
string
previousMessages
array of object
Tampilkan atribut turunan
previousMessages.id
string
wajib
previousMessages.useCaseType
string
wajib
Possible values: unspecified, marketing, otp, transactional, conversation, test
reason
string
receiver
object
wajib
Tampilkan atribut turunan
receiver.connector
object
Tampilkan atribut turunan
receiver.connector.annotations
object
Annotations add extra information to a sender or receiver. For email messages, the name annotation overrides the display name.
Tampilkan atribut turunan
receiver.connector.annotations.name
string
receiver.connector.id
string
wajib
receiver.connector.identifierValue
string
The identifier value of the sender or receiver connector (e.g. email address or phone number).
receiver.connector.types
array of string
receiver.contacts
array of object
Tampilkan atribut turunan
receiver.contacts.contactAnnotation
object
Annotations add extra information to a sender or receiver. For email messages, the name annotation overrides the display name.
Tampilkan atribut turunan
receiver.contacts.contactAnnotation.name
string
receiver.contacts.countryCode
string
receiver.contacts.id
string
The ID of the contact.
receiver.contacts.identifierKey
string
The identifier key for finding the contact (e.g. emailaddress, phonenumber). For WhatsApp channels with BSUID support, use whatsappbsuid to send to a contact by their Business-Scoped User ID.
receiver.contacts.identifierValue
string
The identifier value for finding the contact.
receiver.contacts.identifiers
array of object
Additional identifiers to augment the contact during resolution.
Tampilkan atribut turunan
receiver.contacts.identifiers.identifierKey
string
wajib
The identifier key for finding the contact (e.g. emailaddress, phonenumber).
receiver.contacts.identifiers.identifierValue
string
wajib
The identifier value for finding the contact.
receiver.contacts.platformAddress
string
The resolved platform address used to deliver the message (e.g. phone number or email address).
receiver.contacts.platformAddressSelector
string
An expression that defines how we resolve the platform address from a contact. Optional override for the default resolution logic.
receiver.contacts.receiverExpression
string
receiver.contacts.receiverValue
string
receiver.contacts.type
string
The type of the receiver (e.g. to, cc, bcc for email).
receiver.device
object
Tampilkan atribut turunan
receiver.device.gateway
string
wajib
Possible values: firebase, apns, web
receiver.device.id
string
wajib
receiver.device.identifierValue
string
wajib
receiver.inbox
object
Tampilkan atribut turunan
receiver.inbox.emailRecipientType
string
receiver.inbox.id
string
wajib
receiver.inbox.identifierKey
string
wajib
receiver.inbox.identifierValue
string
wajib
receiver.inbox.type
string
wajib
Possible values: user, group
receiver.userContacts
array of object
Tampilkan atribut turunan
receiver.userContacts.id
string
wajib
receiver.userContacts.identifierKey
string
wajib
receiver.userContacts.identifierValue
string
wajib
receiver.userContacts.type
string
reference
string
A reference to the message. This can be used to identify the message in the channel.
replyTo
object
Tampilkan atribut turunan
replyTo.id
string
The ID of the message that is being replied to.
replyTo.order
integer
The order of the message part in the conversation.
replyTo.platformReference
string
replyTo.type
string
Possible values: message, click
schedule
object
Tampilkan atribut turunan
schedule.reason
string
wajib
schedule.scheduledAt
string
wajib
scheduledFor
string
Scheduled message send time (RFC3339). Messages scheduled within 10 minutes may be sent immediately; messages scheduled more than 35 days out will be rejected.
sendAt
string
sender
object
wajib
Tampilkan atribut turunan
sender.connector
object
Tampilkan atribut turunan
sender.connector.annotations
object
Annotations add extra information to a sender or receiver. For email messages, the name annotation overrides the display name.
Tampilkan atribut turunan
sender.connector.annotations.name
string
sender.connector.id
string
wajib
sender.connector.identifierValue
string
The identifier value of the sender or receiver connector (e.g. email address or phone number).
sender.connector.types
array of string
sender.contact
object
Tampilkan atribut turunan
sender.contact.contactAnnotation
object
Annotations add extra information to a sender or receiver. For email messages, the name annotation overrides the display name.
Tampilkan atribut turunan
sender.contact.contactAnnotation.name
string
sender.contact.countryCode
string
sender.contact.id
string
The ID of the contact.
sender.contact.identifierKey
string
The identifier key for finding the contact (e.g. emailaddress, phonenumber). For WhatsApp channels with BSUID support, use whatsappbsuid to send to a contact by their Business-Scoped User ID.
sender.contact.identifierValue
string
The identifier value for finding the contact.
sender.contact.identifiers
array of object
Additional identifiers to augment the contact during resolution.
Tampilkan atribut turunan
sender.contact.identifiers.identifierKey
string
wajib
The identifier key for finding the contact (e.g. emailaddress, phonenumber).
sender.contact.identifiers.identifierValue
string
wajib
The identifier value for finding the contact.
sender.contact.platformAddress
string
The resolved platform address used to deliver the message (e.g. phone number or email address).
sender.contact.platformAddressSelector
string
An expression that defines how we resolve the platform address from a contact. Optional override for the default resolution logic.
sender.contact.receiverExpression
string
sender.contact.receiverValue
string
sender.contact.type
string
The type of the receiver (e.g. to, cc, bcc for email).
sender.inbox
object
Tampilkan atribut turunan
sender.inbox.emailRecipientType
string
sender.inbox.id
string
wajib
sender.inbox.identifierKey
string
wajib
sender.inbox.identifierValue
string
wajib
sender.inbox.type
string
wajib
Possible values: user, group
sender.userContact
object
Tampilkan atribut turunan
sender.userContact.id
string
wajib
sender.userContact.identifierKey
string
wajib
sender.userContact.identifierValue
string
wajib
sender.userContact.type
string
shortLinks
object
Tampilkan atribut turunan
shortLinks.domain
string
wajib
The domain to use when shortening links. When set to default, uses the default link shortening domain for the workspace.
status
string
wajib
Possible values: accepted, processing, sent, sending_failed, delivered, delivery_failed, deleted, scheduled, skipped, rejected
tagIds
array of string
tags
array of string
Tags to associate with the message. Tags are converted to lower case and automatically created if they don't exist. Up to 10 tags per message.
template
object
Tampilkan atribut turunan
template.attachments
array of object
Tampilkan atribut turunan
template.attachments.content
string
template.attachments.contentType
string
template.attachments.filename
string
wajib
template.attachments.inline
boolean
wajib
template.attachments.mediaUrl
string
wajib
template.deployment
object
template.locale
string
wajib
template.name
string
The platform name of the template.
template.parameters
array of object
Tampilkan atribut turunan
template.parameters.key
string
wajib
template.parameters.sourceUrl
object
Tampilkan atribut turunan
template.parameters.sourceUrl.fullyReplaced
boolean
wajib
template.parameters.sourceUrl.value
string
wajib
template.parameters.type
string
wajib
Possible values: string, timeslotList, productSections, productList, number, boolean, sectionList, shippingMethodList, lineItemList, whatsappProductSections, whatsappProductItems, shortLink, object, carouselCards, appleFormPageItems
template.parameters.value
object or array or string or number or boolean
wajib
template.projectId
string
wajib
The ID of the project from Studio.
template.settings
object
Tampilkan atribut turunan
template.settings.disallowMmLite
boolean
template.shortLinks
object
Tampilkan atribut turunan
template.shortLinks.domain
string
wajib
The domain to use when shortening links. When set to default, uses the default link shortening domain for the workspace.
template.shortLinks.enabled
boolean
wajib
Enables link shortening for SMS messages.
template.templateBody
object
Tampilkan atribut turunan
template.templateBody.text
object
wajib
Tampilkan atribut turunan
template.templateBody.text.actions
array of object
Tampilkan atribut turunan
template.templateBody.text.actions.link
object
wajib
Tampilkan atribut turunan
template.templateBody.text.actions.link.metadata
object
Tampilkan atribut turunan
template.templateBody.text.actions.link.metadata.description
object
Tampilkan atribut turunan
template.templateBody.text.actions.link.metadata.description.label
string
wajib
template.templateBody.text.actions.link.text
string
wajib
template.templateBody.text.actions.link.url
string
wajib
template.templateBody.text.actions.type
string
wajib
Possible values: link
template.templateBody.text.attachments
array of object
Tampilkan atribut turunan
template.templateBody.text.attachments.content
string
template.templateBody.text.attachments.contentId
string
template.templateBody.text.attachments.contentType
string
template.templateBody.text.attachments.filename
string
wajib
template.templateBody.text.attachments.inline
boolean
template.templateBody.text.attachments.mediaUrl
string
wajib
template.templateBody.text.metadata
object
Tampilkan atribut turunan
template.templateBody.text.metadata.apple
object
Tampilkan atribut turunan
template.templateBody.text.metadata.apple.appClipPreview
boolean
template.templateBody.text.metadata.apple.appClipRegion
string
template.templateBody.text.metadata.apple.summaryText
string
template.templateBody.text.metadata.headers
object
template.templateBody.text.metadata.line
object
Tampilkan atribut turunan
template.templateBody.text.metadata.line.emoji
object
Tampilkan atribut turunan
template.templateBody.text.metadata.line.emoji.items
array of object
Tampilkan atribut turunan
template.templateBody.text.metadata.line.emoji.items.emojiId
string
wajib
template.templateBody.text.metadata.line.emoji.items.index
integer
wajib
template.templateBody.text.metadata.line.emoji.items.length
integer
template.templateBody.text.metadata.line.emoji.items.productId
string
wajib
template.templateBody.text.metadata.paymentDetails
object
Tampilkan atribut turunan
template.templateBody.text.metadata.paymentDetails.amount
string
wajib
template.templateBody.text.metadata.paymentDetails.currency
string
wajib
template.templateBody.text.metadata.paymentDetails.sessionIdentifier
string
template.templateBody.text.metadata.paymentDetails.state
string
wajib
template.templateBody.text.metadata.subject
string
template.templateBody.text.metadata.telegram
object
Tampilkan atribut turunan
template.templateBody.text.metadata.telegram.parseMode
string
template.templateBody.text.metadata.whatsapp
object
Tampilkan atribut turunan
template.templateBody.text.metadata.whatsapp.callPermissionExpiration
string
template.templateBody.text.metadata.whatsapp.callPermissionResponse
string
Possible values: accept, reject
template.templateBody.text.metadata.whatsapp.previewUrl
boolean
wajib
template.templateBody.text.metadata.whatsapp.sharedContacts
array of object
Tampilkan atribut turunan
template.templateBody.text.metadata.whatsapp.sharedContacts.origin
string
wajib
template.templateBody.text.metadata.whatsapp.sharedContacts.phones
array of object
Tampilkan atribut turunan
template.templateBody.text.metadata.whatsapp.sharedContacts.phones.phone
string
wajib
template.templateBody.text.metadata.whatsapp.sharedContacts.phones.type
string
wajib
template.templateBody.text.metadata.whatsapp.sharedContacts.phones.waId
string
wajib
template.templateBody.text.metadata.whatsapp.sharedContacts.vcard
string
template.templateBody.text.text
string
wajib
template.templateBody.type
string
wajib
Possible values: text
template.utmParameters
array of object
Tampilkan atribut turunan
template.utmParameters.key
string
wajib
template.utmParameters.value
string
wajib
template.variables
object
template.version
string
wajib
The version of the template.
updatedAt
string
wajib
Contoh kode
curl -X GET 'https://api.bird.com/workspaces/{workspaceId}/channels/{channelId}/messages/{messageId}' \
  -H 'Authorization: AccessKey YOUR_ACCESS_KEY'

Create a Customize Navigator

If you want to limit the selection of channels a navigator can access, you can create a customized one.
POST
/workspaces/{workspaceId}/navigators
Create a new navigator for the workspace.
Payload permintaan
name
string
wajib
The name of the navigator.
type
string
wajib
The type of navigator defines how the navigator selects a channel for a message. * messaging - navigator configured with a pool of channels and performs channel selection based on channel availability and best originator type for a recipient country. The best originator type for a recipient country is determined by the strategy - prioritized list of originator types for each country. At this moment, the default pre-configured strategy (set of country policies) is used see https://docs.bird.com/applications/channels/channels/supported-channels/sms/concepts/choosing-the-right-sender-availability-and-restrictions-by-country
Possible values: messaging
settings
object
wajib
Tampilkan parameter turunan
settings.channels
array of object
wajib
List of channels to be used
Tampilkan parameter turunan
settings.channels.channelId
string
wajib
settings.channels.countries
array of string
ISO 3166-1 alpha-2 codes this channel may be used for. Omit or leave empty to allow every country. RCS availability is granted per carrier per country, so an RCS channel should always name the countries it covers.
settings.preferredChannels
array of object
Channels attempted in this order ahead of anything the country policy yields. Listing a channel here is the opt-in; a channel present only in channels stays policy-gated however its platform routes.
Tampilkan parameter turunan
settings.preferredChannels.channelId
string
wajib
settings.preferredChannels.countries
array of string
ISO 3166-1 alpha-2 codes this channel may be used for. Omit or leave empty to allow every country. RCS availability is granted per carrier per country, so an RCS channel should always name the countries it covers.
Payload respons
navigatorId
string
wajib
workspaceId
string
wajib
name
string
wajib
The name of the navigator.
type
string
wajib
The type of navigator defines how the navigator selects a channel for a message. * messaging - navigator configured with a pool of channels and performs channel selection based on channel availability and best originator type for a recipient country. The best originator type for a recipient country is determined by the strategy - prioritized list of originator types for each country. At this moment, the default pre-configured strategy (set of country policies) is used see https://docs.bird.com/applications/channels/channels/supported-channels/sms/concepts/choosing-the-right-sender-availability-and-restrictions-by-country
Possible values: messaging, use-case-messaging, otp
settings
object
wajib
Tampilkan atribut turunan
settings.channels
array of object
wajib
List of channels to be used
Tampilkan atribut turunan
settings.channels.channelId
string
wajib
settings.channels.countries
array of string
ISO 3166-1 alpha-2 codes this channel may be used for. Omit or leave empty to allow every country. RCS availability is granted per carrier per country, so an RCS channel should always name the countries it covers.
settings.preferredChannels
array of object
Channels attempted in this order ahead of anything the country policy yields. Listing a channel here is the opt-in; a channel present only in channels stays policy-gated however its platform routes.
Tampilkan atribut turunan
settings.preferredChannels.channelId
string
wajib
settings.preferredChannels.countries
array of string
ISO 3166-1 alpha-2 codes this channel may be used for. Omit or leave empty to allow every country. RCS availability is granted per carrier per country, so an RCS channel should always name the countries it covers.
createdAt
string
wajib
updatedAt
string
Contoh kode
curl -X POST 'https://api.bird.com/workspaces/{workspaceId}/navigators' \
  -H 'Authorization: AccessKey YOUR_ACCESS_KEY'

Update a Navigator

You can add or remove channels from a navigator
PATCH
/workspaces/{workspaceId}/navigators/{navigatorId}
Update a navigator by ID
Payload permintaan
name
string
wajib
The name of the navigator.
type
string
wajib
The type of navigator defines how the navigator selects a channel for a message. * messaging - navigator configured with a pool of channels and performs channel selection based on channel availability and best originator type for a recipient country. The best originator type for a recipient country is determined by the strategy - prioritized list of originator types for each country. At this moment, the default pre-configured strategy (set of country policies) is used see https://docs.bird.com/applications/channels/channels/supported-channels/sms/concepts/choosing-the-right-sender-availability-and-restrictions-by-country
Possible values: messaging, use-case-messaging, otp
settings
object
Tampilkan parameter turunan
settings.channels
array of object
wajib
List of channels to be used
Tampilkan parameter turunan
settings.channels.channelId
string
wajib
settings.channels.countries
array of string
ISO 3166-1 alpha-2 codes this channel may be used for. Omit or leave empty to allow every country. RCS availability is granted per carrier per country, so an RCS channel should always name the countries it covers.
settings.preferredChannels
array of object
Channels attempted in this order ahead of anything the country policy yields. Listing a channel here is the opt-in; a channel present only in channels stays policy-gated however its platform routes.
Tampilkan parameter turunan
settings.preferredChannels.channelId
string
wajib
settings.preferredChannels.countries
array of string
ISO 3166-1 alpha-2 codes this channel may be used for. Omit or leave empty to allow every country. RCS availability is granted per carrier per country, so an RCS channel should always name the countries it covers.
Contoh kode
curl -X PATCH 'https://api.bird.com/workspaces/{workspaceId}/navigators/{navigatorId}' \
  -H 'Authorization: AccessKey YOUR_ACCESS_KEY'

Delete a Navigator

DELETE
/workspaces/{workspaceId}/navigators/{navigatorId}
Delete the navigator by ID
Contoh kode
curl -X DELETE 'https://api.bird.com/workspaces/{workspaceId}/navigators/{navigatorId}' \
  -H 'Authorization: AccessKey YOUR_ACCESS_KEY'

Check Logs & Insight

You can check SMS and Log insight separately via the relevant SMS and WhatsApp tabs in our developer view, you can also use the dedicated Navigator logs, which does allow the tracking of attempts and fallbacks