Update agent settings

Partial update. An empty body is a no-op that returns the current settings. never_say_phrases
replaces the whole list; send [] to clear it.
Setting rollout.enabled to true fails with 400 Cannot enable Meta Business Agent until the
business has a payment method in the Billing Hub, unless ai_audience is ALLOWLISTED_ONLY.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…

Request parameters

ParameterTypeRequiredInDescription
AuthorizationstringYesHeaderPartner app token, sent raw. Bearer <token> is also accepted.
Content-TypestringYesHeaderapplication/json
appIdstring (uuid)YesPathPartner Portal app id. Stands in for Meta's entity_id.
agent_idstringNoQueryAgent id from onboarding. Accepted but currently not applied as a filter. Meta pfbid… id.
rolloutobjectNoBodyWhether the agent is live for consumers.
rollout.enabledbooleanNoBodyTurns the agent on for consumers. Requires a payment method.
handoffobjectNoBodyHand-off to a human agent.
handoff.enabledbooleanNoBodyWhether the agent may hand off to a human.
handoff.messagestringNoBodyMessage sent on hand-off. Used when message_selection is CUSTOM.
handoff.message_selectionstringNoBodyOne of: DEFAULT, AGENT, CUSTOM.
followupobjectNoBodyFollow-up nudge when the consumer goes quiet.
followup.enabledbooleanNoBodyWhether follow-ups are sent.
followup.followup_interval_in_secondsintegerNoBodyOne of: 0, 300, 900, 1800, 3600, 7200, 28800, 86400.
followup.messagestringNoBodyWrite-only; not returned by GET.
ai_audiencestringNoBodyWho the agent answers. ALLOWLISTED_ONLY limits it to the allowlist and needs no payment method. One of: ALLOWLISTED_ONLY, EVERYONE.
never_say_phrasesarray of stringNoBodyPhrases the agent must never use. Replaces the whole list; [] clears it.

Example request

curl --location --request PUT 'https://partner.gupshup.io/partner/app/<appId>/bizai/agent_config/settings' \
  --header 'Authorization: <PARTNER_APP_TOKEN>' \
  --header 'Content-Type: application/json' \
  --data '{
  "rollout": {
    "enabled": true
  },
  "handoff": {
    "enabled": true,
    "message": "Connecting you to a human agent...",
    "message_selection": "CUSTOM"
  },
  "followup": {
    "enabled": true,
    "followup_interval_in_seconds": 3600,
    "message": "Are you still there?"
  },
  "ai_audience": "EVERYONE",
  "never_say_phrases": [
    "phrase1",
    "phrase2"
  ]
}'

Response parameters — 200

ParameterTypeDescription
agent_idstringMeta pfbid… id.
channelstringOne of: email, instagram, line, messenger, sms, tiktok, unknown, webchat, whatsapp.
rolloutobjectWhether the agent is live for consumers.
rollout.enabledbooleanTurns the agent on for consumers. Requires a payment method.
handoffobjectHand-off to a human agent.
handoff.enabledbooleanWhether the agent may hand off to a human.
handoff.messagestringMessage sent on hand-off. Used when message_selection is CUSTOM.
handoff.message_selectionstringOne of: DEFAULT, AGENT, CUSTOM.
followupobjectFollow-up nudge when the consumer goes quiet.
followup.enabledbooleanWhether follow-ups are sent.
followup.followup_interval_in_secondsintegerOne of: 0, 300, 900, 1800, 3600, 7200, 28800, 86400.
followup.messagestringWrite-only; not returned by GET.
ai_audiencestringWho the agent answers. ALLOWLISTED_ONLY limits it to the allowlist and needs no payment method. One of: ALLOWLISTED_ONLY, EVERYONE.
never_say_phrasesarray of stringPhrases the agent must never use. Replaces the whole list; [] clears it.

Example response — 200 OK

{
  "agent_id": "pfbid02At1HHPExampleAgentId",
  "channel": "whatsapp",
  "rollout": {
    "enabled": true
  },
  "never_say_phrases": ["phrase1", "phrase2"],
  "handoff": {
    "enabled": true,
    "message": "Connecting you to a human agent...",
    "message_selection": "CUSTOM"
  },
  "followup": {
    "enabled": true,
    "followup_interval_in_seconds": 3600
  },
  "ai_audience": "EVERYONE"
}

Error responses

400 Bad Request — The app is not live, or WASS does not consider it live.

{
  "message": "App is not live.",
  "status": "error"
}

400 Bad Request — The app has no phone number attached. Checked before the live check.

{
  "message": "Phone id not found for the given App",
  "status": "error"
}

401 Unauthorized — Authorization is missing or invalid, belongs to another app, or appId is unknown or not a UUID.

{
  "status": "error",
  "message": "Unauthorised access to the resource. Please review request parameters and headers and retry"
}

405 Method Not Allowed — Any method other than GET, POST, PUT or DELETE, e.g. PATCH.

{
  "status": "error",
  "message": "Request method 'PATCH' is not supported"
}

429 Too Many Requests — More than 30 /bizai/** requests in 60 seconds for this app. The 31st is rejected.

{
  "status": "error",
  "message": "Too Many Requests"
}
Path Params
uuid
required

Partner Portal app id. Stands in for Meta's entity_id.

Query Params
string
^pfbid

Agent id from onboarding. Accepted but currently not applied as a filter.

Body Params

Partial update; send only the blocks being changed.

rollout
object
handoff
object
followup
object
string
enum

Who the agent answers. ALLOWLISTED_ONLY limits it to the allowlist and needs no payment method.

Allowed:
never_say_phrases
array of strings
never_say_phrases
Responses

429

Per-app rate limit exceeded. Retry after the 60-second window.

Language
Credentials
Header
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json