connector_id path parameter and the tool_id query parameter on Connectors. The reference page showed plain numeric examples for both, and for the id field returned when a connector is created or listed, but the endpoints expect the id value exactly as the API returns it. Pass that value through unchanged when reading, updating, or deleting a connector, when configuring its credentials, and when filtering connector logs to a single tool. Only the documentation changed — the endpoints have always behaved this way. The page also now states the request budget of 1000 requests per hour.skill_id path parameter on Agent Skills. The reference page described skill_id as a UUID and showed a UUID example, but the endpoints expect the id value exactly as the API returns it, and a UUID is not accepted. Pass the returned id through unchanged when reading, updating, or deleting a skill. Only the documentation changed — the endpoints have always behaved this way. The page also now states the request budget of 1000 requests per hour, and that listing skills returns one complete list rather than a page, so there is no cursor to follow.active path. A number that has not moved to versioned configuration lists nothing and has no active version.reason. Without it, the server records a move back to a configuration the number served before as a rollback, and any other move as a clone. Send expected_active_version_id to make the change conditional on the configuration you believe is active.409 Conflict response to the write operations on
Agent instructions and skills.
A request gets this response when another write changes the same phone number
at the same time. Nothing is saved when it happens, so retry the request as it
was sent.release and take now includes a request_id next to messaging_product. Include it when you contact support about a specific call.entry_id path parameter on Agent Allowlist. The reference page showed a plain numeric example for entry_id and for the id field returned when an entry is added or listed, but the endpoint expects the id value exactly as the API returns it. Pass that value through unchanged when removing an entry. Only the documentation changed — the endpoint has always behaved this way.error_message field previously returned internal_server_error for every failure, including expected ones you can act on. It now returns consumer_not_in_agent_audience, agent_not_enabled, thread_not_owned_by_agent, event_content_rejected, billing_not_configured, or agent_temporarily_unavailable where one of those applies, and keeps internal_server_error for anything else. For example, an event addressed to a consumer who is not on your allowlist while ai_audience is ALLOWLISTED_ONLY now returns consumer_not_in_agent_audience.product_id path parameter on Agent Knowledge Catalog. The reference page showed a plain numeric example for product_id and for the id field returned when an entry is created or listed, but the endpoints expect the id value exactly as the API returns it. Pass that value through unchanged when reading, updating, or deleting a catalog product entry. Only the documentation changed — the endpoints have always behaved this way. These endpoints remain deprecated; new integrations should use Commerce Manager. The page also now states the request budget of 1000 requests per hour.website_id path parameter on Agent Knowledge Websites. The reference page showed a plain numeric example for website_id and for the id field returned when a crawl entry is created or listed, but the endpoints expect the id value exactly as the API returns it. Pass that value through unchanged when reading, updating, or deleting a website crawl entry. Only the documentation changed — the endpoints have always behaved this way. The page also now states the request budget of 1000 requests per hour.faq_id path parameter on Agent Knowledge FAQs. The reference page showed a plain numeric example for faq_id and for the id field returned when an entry is created or listed, but the endpoints expect the id value exactly as the API returns it. Pass that value through unchanged when reading, updating, or deleting an FAQ entry. Only the documentation changed — the endpoints have always behaved this way. The page also now states the request budget of 1000 requests per hour.file_id path parameter on Agent Knowledge Files. The reference page showed a plain numeric example for file_id and for the id field returned when a file is uploaded or listed, but the endpoints expect the id value exactly as the API returns it. Pass that value through unchanged when reading or deleting a file. Only the documentation changed — the endpoints have always behaved this way. The page also now states the request budget of 1000 requests per hour.tool_id and connector_id path parameters on Connector Tools. The reference page showed plain numeric examples for both, and for the id field returned when a tool is created or listed, but the endpoints expect the id value exactly as the API returns it. Pass that value through unchanged when reading, updating, deleting, or running a tool. Only the documentation changed — the endpoints have always behaved this way. The page also now states the request budget of 1000 requests per hour.resolve_location and check_stock connector tool pair for stock that varies by location, and the catalog-to-inventory drift modes that fail silently. The agent_config/catalog endpoint is deprecated; new integrations should use Commerce Manager.request_passcode, verify_passcode, and refresh tools, marking downstream tools as requiring authentication, and the security rules that keep the exchange from leaking whether an identifier exists.handoff_reason, no_response_reason, quick_replies, and product_variant_ids on a test response; inspecting the LLM_CALL and TOOL_CALL steps behind a turn with Conversation Turns; submitting and polling scored eval runs; and monitoring tool health after launch. A Try to break it section covers adversarial testing — unanswerable and out-of-scope questions, conflicting instructions and never_say_phrases, connector timeouts and empty results, unexpected input, long conversations, and deliberately tripping the rate, allowlist, and budget limits.vehicle-rentals skill routes billing disputes, damage claims, and accidents to your team, but never covered how to make that route exist. The new section pairs the handoff policy on Agent settings with the transfer itself through Thread control (Cloud API), including passing control back when the case is closed.entity_id, and to 10,000 per hour for each app on the endpoint. Exceeding either limit returns 429 Too Many Requests.400 Bad Request, with the current maximum in the error detail. Adding, listing, and removing entries are each rate limited to 1,000 requests per hour for each app.scenario_version field for each evaluation case. Use it to distinguish cases retained from different published scenario suites; older cases return null.WHATSAPP_PHONE_NUMBER baseline, verification scoping, user_auth_required), coordinate-aware search_vehicles with semantic-search guidance, visual components (vehicle carousels, date-capture flows, checkout links), modify_reservation and cancel_reservation tools, checkout-link booking completion with regional payment guidance, post-booking tracking and follow-up, and production hardening (backend idempotency, async confirmation, Insights measurement). Every section that describes an API operation now carries a runnable request example, including the request_definition envelope, a verify_renter_code tool, the vehicle carousel and date-capture UI skills, the cta_url checkout link, an add-on lookup, and a per-tool connector log query.search_trip_options returns options for every component, price_trip returns one total plus a quote id, and book_trip commits the whole quote in a single write. It also explains why the total must come from the quote tool rather than being added up by the agent, why the booking call should be idempotent on the quote id, and how to handle a component that becomes unavailable between quoting and booking. For agent instructions, knowledge, and connector setup, the guide links to the reference pages and to a full end-to-end walkthrough.POST /{entity_id}/agent_config/skillsskill field for the instruction textwhatsapp_business_messaging and whatsapp_business_management permissions, the Business Integration System User (BISU) token option for Solution Partners and Tech Providers calling on behalf of a client’s WhatsApp Business account, and the X-API-Version: 2.0.0 header required on every request.catalog_id field on
Onboarding to WhatsApp.
Pass the catalog you want the agent to sell from when you onboard a WhatsApp Business phone number,
and it is linked to the agent and indexed so product questions can be answered from it. The field
previously applied only to Instagram and returned 400 Catalog not supported for a WhatsApp phone
number. Omit it to leave the phone number’s existing catalog association unchanged. An unknown
catalog, or one the caller cannot manage, returns 400 or 403 as it already does for Instagram.user_phone_number parameter of
Conversation Turns. The
parameter already accepted either a digits-only phone number or a BSUID, but only the phone number
was described. Use the BSUID for any consumer who has ever adopted a WhatsApp username — their phone
number may not be on file for your business, so a phone-number lookup can return Consumer not found
even after the consumer deletes the username, while the BSUID resolves for any consumer who has
messaged your business. The behavior is unchanged; only the documentation is.WHATSAPP_PHONE_NUMBER_NATIONAL macro to the parameter binding options on
Connector Tools. Bind a
parameter to it when your API rejects E.164 numbers and expects the number as a local subscriber
would dial it: the country code is removed and the national trunk prefix is kept for regions that
use one, so +60123456789 is sent as 0123456789. Regions without a trunk prefix, such as
Singapore, are unaffected by the prefix rule and simply lose the country code. The existing
WHATSAPP_PHONE_NUMBER macro is unchanged and still sends the full E.164 number.status field to Agent skills. It is returned by every skill create, read, update, and list response, and reports whether the agent is applying the skill: active once the skill has passed the automated content review, pending_review while the review is still running, and blocked if the skill did not pass. A blocked skill is stored and readable but the agent never applies it, most often because the text asks for or refers to sensitive personal information such as a date of birth or a national ID. Edit the skill to remove that content and the review runs again.201 Created, which made it look as though the skill had never been saved. Blocked skills now appear in the list with status set to blocked, so you can find them and edit them. This does not change which skills the agent applies.take and
release calls and what happens outside staffed hours.404 Not Found response on the create and run operations of
Connector Tools. Both
already returned 404 when the connector or tool in the path does not exist, but the response was
missing from the reference page, so it was easy to miss when writing error handling. The behavior is
unchanged — only the documentation is.bizai_ig_enterprise_api_3p_access capability. Approved apps can now create, list, retrieve, update, delete, and run tools for Instagram agents.fbtrace_id field identifying the request that failed. The same
value is returned in the X-FB-Request-ID response header on every response, including responses
with no body, and is exposed to cross-origin callers. Include it when you contact support so the
specific call can be located. See
Troubleshooting.user_phone_number parameter on
Conversation Turns and
the for field on
Thread Control. Send the
number as digits only — country code included, with no leading +, spaces, or separators, for
example 15551234567. Both pages previously showed the E.164 form +15551234567, which returns a
Consumer not found error.message_id field to
Conversation Turns.
It identifies the customer message that started the turn and matches the ID delivered in the
messages webhook, enabling response-to-webhook correlation. Historical turns may omit the field
when the identifier is unavailable.conversation_id. Billing, app subscriptions, webhook fields,
and turning the agent on for WhatsApp users remain in
Get started.component_type — cta_url, image, interactive_list, interactive_reply_buttons, location, location_request, carousel_url, carousel_quick_reply, and flow — and lists the data elements you describe in each skill’s free-form instruction.ai_audience set to ALLOWLISTED_ONLY no longer requires a payment method on your
Business Agent account. An allowlisted-only agent responds only to the consumers on your channel
allowlist, so you can enable it and test end to end before you set up billing. Turning the agent on
for EVERYONE, or expanding an already-enabled allowlisted-only agent to EVERYONE, still requires a
payment method and returns a 400 until one is attached.crawl_status on
Website Knowledge
to describe the crawl itself rather than what was extracted from it. A site we crawled successfully
now reports completed, or the new completed_no_data value when the crawl worked but the site had
nothing we could extract. failed is now reserved for crawls that fetched no pages at all.
Previously a healthy site with no FAQ or business information page could report failed.crawl_error field to the same responses. When crawl_status is failed, it carries a
readable explanation such as a site being unreachable or blocked by its own robots.txt, so you can
tell a site-side problem from one you need to report. It is empty while a crawl is running and for
crawls that fetched pages.ai_audience setting is set to ALLOWLISTED_ONLY. The default is EVERYONE, where the agent responds to all consumers and the allowlist is ignored. Get started now covers the required call sequence, and Capabilities notes the dependency.search_vehicles, create_reservation, and check_reservation_status connector tools, including binding the renter phone number with the WHATSAPP_PHONE_NUMBER macro. Each step also explains how the API applies to other date-range rental scenarios such as equipment hire and boat rental.POST /business/whatsapp/phone_numbers/{phone_number_id}/thread_control either releases a thread back to Meta Business Agent as the automatic responder, or takes control from the current owner so your own application can respond. Requires the whatsapp_business_messaging permission.