For the complete documentation index, see llms.txt. This page is also available as Markdown.

Known limitations

Meta Business Agent is in early access, and we found a number of gaps while testing. This page collects them all in one place so you can plan around them. Each is also flagged inline on the relevant step. We've raised the significant ones with Meta and expect fixes over time — check back for updates.

Platform stability

Gap
What to do

Endpoints intermittently return 4XX or 500 with no obvious cause. The same request that failed succeeds later with no change on your side. Meta is actively debugging this.

Don't treat a one-off 4XX/500 as a permanent failure or a misconfiguration. Retry the call after a few hours — in every case we've seen, it resolved on its own. If it still fails after a day, contact support.

Eligibility & access

Gap
What to do

Eligibility check can return HTTP 500 for a non-eligible or not-yet-enabled number instead of a clean "not eligible." Largely resolved by Meta.

If you see a 500 on agent_eligibility, re-check the number really meets the requirements before treating it as an outage.

API returns 403 until the Meta Business AI Terms are accepted for the WABA.

Accept the terms in Business Manager → WhatsApp Manager → Business AI. Only someone with access to the WABA's owning business can accept. See Enable and accept terms.

Availability was regional during rollout (Brazil first, EU mid-July 2026). The restriction appears lifted.

If a new-region number reads not-eligible, region may still be the cause — re-check after a short wait.

CORS blocks browser calls to Meta's agent endpoints.

Call the API from a backend, not directly from a browser. (With 360dialog, keep your D360-API-KEY server-side anyway.)

Testing

Gap
What to do

agent_test only returns replies when the agent is fully published (rollout enabled and ai_audience = EVERYONE). Under ALLOWLISTED_ONLY it returns an empty response with no_response_reason = ELIGIBILITY_CHECK_FAILED. Raised with Meta; expected to change.

For pre-launch testing on a production number, use ALLOWLISTED_ONLY and message from allowlisted numbers on real WhatsApp. Use agent_test on a dedicated test number set to EVERYONE. See Test your agent.

Each agent_test call starts a fresh conversation unless you pass back a conversation_id; the to field is ignored.

Capture conversation_id from the first response to continue a multi-turn test.

Conversation, handoff & context

Gap
What to do

Once the agent hands off to a human, it stops answering that chat.

Make sure a human handover path is live before launch — otherwise those customers get no reply.

On hand-back, the agent loses earlier conversation context.

Don't assume continuity across a human handoff; re-establish context if needed.

The handoff notice is the fixed message you define — it can't be adapted per customer language.

For multilingual audiences, keep the handoff message simple or language-neutral.

The agent doesn't always reply in the customer's language.

Reinforce language behavior in your skills where it matters.

No API to read who currently holds the conversation (thread owner) — there's no GET for thread control.

Infer control state from webhooks / your own state; a read endpoint has been requested from Meta.

Thread control supports only release (hand back to agent), via the operate endpoint. Your app takes control simply by sending a message.

Use the documented thread-control call to release; see the API reference.

Files

Gap
What to do

File upload fails when a file name is included.

Upload without setting a filename in the multipart part.

CSV files, and tables inside PDFs, error out when read.

Put structured/tabular facts into FAQs or business info instead of files.

The agent can't reliably send files or images out to customers.

Don't design flows that depend on the agent sharing a file.

Uploads are multipart/form-data, max 100 MB.

Keep files within the limit.

Events

Gap
What to do

agent_event (proactive outbound) only works while the agent is on-call (holds the conversation). Status is poll-only (request_received → processing → sent/failed/skipped/success).

Only trigger events when the agent holds the thread; poll for status.

Webhooks — the capture gap

Gap
What to do

The agent's conversation travels on the standby field, which Meta delivers only to a single account-wide destination, not your number's webhook. So today you don't receive the agent's live conversation text (consumer inbound + agent replies) on your own webhook.

messages, messaging_handovers, and bizai delivery statuses do arrive. 360dialog is building routing to deliver standby to your webhook.

The agent's standby conversation was previously not delivered to per-number webhooks. Resolved — 360dialog now routes standby to your number's webhook, re-signed with x-360dialog-signature. See Webhooks.

API response shapes

Gap
What to do

settings, skills, faq, websites, files, and allowlist return bare arrays, not { "data": [ ... ] }. settings is a single-element array.

Parse accordingly.

business_info is a closed six-field object — no custom keys.

Use FAQs/files for anything that doesn't fit the six fields.

Connectors

Gap
What to do

MCP connectors are not available yet (on Meta's roadmap).

Integrate via the REST connector + tool model for now. See Configure your agent.

Billing

Gap
What to do

Since 1 August, Meta has required a client credit line for MBA usage. Meta plans direct credit-card support in September. MBA usage does not appear in standard WhatsApp message billing analytics.

Treat commercial terms as provisional. Check for updates.


Last reviewed: 29 July 2026. This is a moving target during early access — behaviors above may change as Meta ships fixes.

Last updated

Was this helpful?