List WhatsApp Business Accounts
/v1/whatsapp/business-accountsfor await (const account of bird.whatsapp.businessAccounts.list()) {
console.log(account.id, account.name, account.status);
}for account in client.whatsapp.business_accounts.list():
print(account.id, account.name, account.status)for account, err := range client.Whatsapp.BusinessAccounts.List(context.Background(), bird.WhatsappBusinessAccountsListParams{}) {
if err != nil {
log.Fatal(err)
}
fmt.Println(account.Id, account.Name, account.Status)
}foreach ($bird->whatsapp->businessAccounts->list() as $account) {
echo $account->getId(), ' ', $account->getName(), ' ', $account->getStatus(), "\n";
}bird whatsapp business-accounts listcurl -X GET "https://us1.platform.bird.com/v1/whatsapp/business-accounts" \
-H "Authorization: Bearer $TOKEN" \
--url-query "sort=created_at" \
--url-query "order=desc" \
--url-query "limit=25"{
"data": [
{
"id": "waa_01krdgeqcxet5s7t44vh8rt9mg",
"waba": "102290129340398",
"name": "Acme Inc",
"status": "active",
"account_review_status": "approved",
"business_verification_status": "verified",
"marketing_messages_onboarding_status": "onboarded",
"portfolio": {
"meta_id": "178563218361309",
"name": "Acme Holdings",
"marketing_messages_onboarding_status": "not_started"
},
"ban": {
"state": "disabled",
"occurred_at": "2026-04-10T09:12:00Z",
"appeal_url": "https://business.facebook.com/business-support-home/178563218361309/102290129340398"
},
"meta_health_status": {
"can_send_message": "blocked",
"entities": [
{
"entity_type": "waba",
"meta_id": "1028574859896003",
"can_send_message": "blocked",
"errors": [
{
"error_code": 141006,
"error_description": "There is an error with the payment method. This will block business initiated conversations.",
"possible_solution": "There was an error with your payment method. Please add a new payment method to the account."
}
]
},
{
"entity_type": "business",
"meta_id": "4392746181043198",
"can_send_message": "limited",
"errors": [
{
"error_code": 141010,
"error_description": "The Business has not passed business verification.",
"possible_solution": "Visit business settings and start or resolve the business verification request."
}
]
},
{
"entity_type": "app",
"meta_id": "497937228432800",
"can_send_message": "available"
}
]
}
}
],
"next_cursor": "eyJ2IjoxLCJzIjoiXCIyMDI2LTA1LTI1VDE0OjAzOjEwWlwiIiwiaSI6IjAxOTJmM2IxLTRjN2UtN2EyYi05ZDYxLThmM2E1YzJlN2I0MCJ9",
"prev_cursor": null,
"refresh_cursor": "eyJ2IjoxLCJzIjoiXCIyMDI2LTA1LTI1VDE2OjQyOjAxWlwiIiwiaSI6IjAxOTJmM2IxLTllMDQtN2NkMy1iODE3LTJhNmY0ZDFjOGUwOSJ9"
}
Returns a paginated list of the WhatsApp Business Accounts your workspace has connected, so you can choose which one a template belongs to. Only accounts whose setup finished are listed: an account appears once WhatsApp has reported its name and at least one of its phone numbers has finished connecting. Page through the full set with the cursors the response returns.
Each account also carries the state WhatsApp last reported for it. That covers
its own status, how far WhatsApp's review of it has got, whether Meta has
verified the business behind it, the Meta business portfolio that owns it, and
ban on an account WhatsApp has banned. These are the same fields
Get a WhatsApp Business Account
returns, and that operation documents them.
Paramètres de requête
sortstringField to sort by.
Possible values: created_at
orderstringSort direction. Defaults to desc, which sorts from newest to oldest or largest to smallest, depending on the selected sort field.
Possible values: asc, desc
limitintegerMaximum number of items to return per page.
starting_afterstringCursor from the next_cursor field of a previous list response. Returns items immediately after the cursor position in the current sort order.
ending_beforestringCursor from the prev_cursor or refresh_cursor field of a previous list response. Returns items immediately before the cursor position in the current sort order. prev_cursor returns the preceding page. refresh_cursor anchors at the first row of that response, which on a newest-first sort is how to fetch the items that have appeared since.
Contenu de la réponse
dataThe WhatsApp Business Accounts your workspace has connected.
Afficher les attributs enfants
data.idUnique identifier for the WhatsApp Business Account.
data.wabaMeta's own identifier for this WhatsApp Business Account. This is the value to send when creating a template on the account.
data.nameThe account's name, as WhatsApp reports it.
data.statusWhatsApp's own state for this account as of meta_synced_at. The status is active until WhatsApp reports otherwise. WhatsApp already considers an account usable if Bird could connect a number under it. The absence of a reading is therefore not evidence of another state.
data.account_review_statusHow far WhatsApp's review of this account had got as of meta_synced_at. Absent until WhatsApp has reported it.
data.business_verification_statusWhether Meta had verified the business behind this account as of meta_synced_at. Absent until Meta has reported it.
data.marketing_messages_onboarding_statusWhether this account can use WhatsApp's Marketing Messages API, as of meta_synced_at. Absent until WhatsApp has reported it. Distinct from the owning portfolio's marketing_messages_onboarding_status (portfolio.marketing_messages_onboarding_status), which Meta gives the same field name but a different vocabulary: this one is the account's own eligibility, that one is the portfolio's Terms-of-Service progress.
data.portfolioThe Meta business portfolio that owns this account. Absent until Meta has reported it. The portfolio is where a messaging limit is set, so every account it owns shares one.
data.banWhatsApp's ban on this account, absent unless Bird was told of one. status is what the account said when Bird last read it; this is what WhatsApp announced, which arrives only on the webhook that announces it and is never re-read.
data.meta_health_statusMeta's own messaging health for this account as of meta_synced_at. Absent until Bird has read it, and absent again when the stored reading did not parse at all. An entity whose verdict falls outside this vocabulary is dropped on its own and the rest of the report still ships, so entities can be shorter than Meta's. A blocked verdict on the waba entity is why template sends fail with Meta's #200 even though the number reads active: for example error_code 141006 names a payment method Meta rejected on the account.
data.meta_synced_atWhen Bird last read this account's state from WhatsApp. status, account_review_status, business_verification_status, marketing_messages_onboarding_status, portfolio and meta_health_status are all that reading rather than live values; Bird re-reads roughly hourly. Absent for an account Bird has never read back.
data.created_atWhen this account was connected.
data.updated_atWhen this account was last changed.
next_cursorCursor for the next page. Pass back as starting_after to advance forward. null when no next page exists.
prev_cursorCursor for the previous page. Pass back as ending_before to step backward. null when no previous page exists.
refresh_cursorRefresh anchor, the first row of this response. Pass back as ending_before to fetch what precedes it in the current sort order. On a newest-first sort those are the items that have appeared since; on any other sort they are the items that sort earlier, so refreshing such a list means re-fetching it instead. Non-null whenever data is non-empty; null only on an empty page. Distinct from prev_cursor.
Ressources associées
Poursuivez avec la documentation, les guides et les exemples sur ce sujet.