Update channel settings
Updates your brand’s editable settings.
Behavior
- An absent field keeps its current value; send only what you mean to change.
bump_policy_versionis the one explicit act: a version bump re-notifies customers and never happens as a side effect.- Business hours are one setting spelled in two keys: send either
business_hoursorhours_timezoneand the other falls back to what is stored; the merged pair is validated whole and written whole, so a refusal leaves the stored week untouched. Clear both together with"business_hours": {}and"hours_timezone": "". - Returns the updated view, exactly as
GET /v1/settingswould. escalation_handlingis the optional opt-in for having us run escalation (managed); every brand starts asself_managed. The field’s own documentation carries the full contract and what thechat.trigger_wordevent looks like in each mode.
Errors
- HTTP 422
code1021:escalation_handlingis neithermanagednorself_managed. - HTTP 409
code2019: we hold your brand onmanagedescalation and the update named a differing value; re-sending the stored value still succeeds as a no-op. - HTTP 413
code1073: the hours document exceeds 4,096 bytes. - HTTP 422:
business_hours_invalid(wrong shape: an unknown weekday key, a range that is not["HH:MM","HH:MM"], a time outside00:00–24:00),business_hours_end_not_after_start,business_hours_overlap,business_hours_never_open,hours_timezone_invalid, andrequiredwhen hours arrive without a zone or a zone without hours.
Body ParametersJSON
Switch your AI agent on or off; see agent_enabled on the response for
what the pause does and does not cover. Absent leaves it as it is; there
is no other way to spell “unchanged” for a boolean, so a settings update
that omits this can never switch your agent off by accident.
true increments policy_version: the explicit act that re-notifies
customers of a policy change. NEVER implicit: editing a URL alone does not
bump, because an accidental bump re-messages every customer.
Your opening times: a LIST of ["HH:MM","HH:MM"] ranges per lowercase
weekday key. Absent keeps the stored document; {} together with
hours_timezone: "" CLEARS the hours, which is how “we do not publish
hours” is spelled.
business_hours and hours_timezone are ONE SETTING: send either and the
other falls back to what is stored, and the merged pair is validated
whole. Hours without a zone are refused (422 required on
/hours_timezone) and a zone without hours is refused the same way on
/business_hours, so clearing means sending BOTH empty, not one.
THE WRITER IS STRICTER THAN THE READER, in three ways worth knowing before
you compose a week (each has its own code, listed on the operation):
end must come AFTER start: a range that reads back as crossing
midnight is refused on write, and the message names the split-shift
spelling to use instead; two ranges on one weekday may not share a minute
(they may touch); and the week must open somewhere.
The IANA zone your hours are stated in (America/New_York). Absent keeps
the stored zone; "" alongside an empty business_hours clears the pair.
Local is refused (422 hours_timezone_invalid); it resolves to the
serving container’s zone, not yours.
Absolute https URL, at most 2048 characters, or "" to unset. http is refused (400 invalid_url): these URLs are rendered to customers.
Update channel settings
curl https://messages.api.linqapp.com/v1/settings \
-X PUT \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $LINQ_AMB_API_KEY" \
-d '{}'{
"brand_id": "biz_9f2c1a",
"display": "CurbFare",
"privacy_policy_url": "https://example.com/privacy",
"terms_of_use_url": "https://example.com/terms",
"policy_version": 3,
"support_contact": "[email protected]",
"richlink_default_image_att_id": "",
"agent_enabled": true,
"escalation_handling": "managed",
"escalation_handling_locked": false,
"consent_mode": "linq_managed",
"business_hours": {
"mon": [
[
"09:00",
"12:00"
],
[
"13:00",
"17:00"
]
],
"sat": [
[
"10:00",
"14:00"
]
]
},
"hours_timezone": "America/New_York",
"business_id": "a884eddf-b0ad-4be4-9c0e-071531638768",
"link_origin": "connect",
"managed": [
{
"name": "apple_pay_merchant",
"value": "not configured",
"managed_by": "linq",
"set": false,
"source": "platform"
},
{
"name": "app_extensions",
"value": "none registered",
"managed_by": "linq",
"set": false,
"source": "platform"
},
{
"name": "oauth",
"value": "configured",
"managed_by": "linq",
"set": true,
"source": "brand"
}
],
"app_extensions": {
"apps": {}
}
}{
"brand_id": "biz_9f2c1a",
"display": "CurbFare",
"privacy_policy_url": "https://example.com/privacy",
"terms_of_use_url": "https://example.com/terms",
"policy_version": 4,
"support_contact": "[email protected]",
"richlink_default_image_att_id": "",
"agent_enabled": true,
"escalation_handling": "self_managed",
"escalation_handling_locked": false,
"consent_mode": "linq_managed",
"business_hours": {
"mon": [
[
"09:00",
"12:00"
],
[
"13:00",
"17:00"
]
],
"sat": [
[
"10:00",
"14:00"
]
]
},
"hours_timezone": "America/New_York",
"business_id": "a884eddf-b0ad-4be4-9c0e-071531638768",
"link_origin": "connect",
"managed": [
{
"name": "apple_pay_merchant",
"value": "not configured",
"managed_by": "linq",
"set": false,
"source": "platform"
},
{
"name": "app_extensions",
"value": "none registered",
"managed_by": "linq",
"set": false,
"source": "platform"
},
{
"name": "oauth",
"value": "configured",
"managed_by": "linq",
"set": true,
"source": "brand"
}
],
"app_extensions": {
"apps": {}
}
}Returns Examples
{
"brand_id": "biz_9f2c1a",
"display": "CurbFare",
"privacy_policy_url": "https://example.com/privacy",
"terms_of_use_url": "https://example.com/terms",
"policy_version": 3,
"support_contact": "[email protected]",
"richlink_default_image_att_id": "",
"agent_enabled": true,
"escalation_handling": "managed",
"escalation_handling_locked": false,
"consent_mode": "linq_managed",
"business_hours": {
"mon": [
[
"09:00",
"12:00"
],
[
"13:00",
"17:00"
]
],
"sat": [
[
"10:00",
"14:00"
]
]
},
"hours_timezone": "America/New_York",
"business_id": "a884eddf-b0ad-4be4-9c0e-071531638768",
"link_origin": "connect",
"managed": [
{
"name": "apple_pay_merchant",
"value": "not configured",
"managed_by": "linq",
"set": false,
"source": "platform"
},
{
"name": "app_extensions",
"value": "none registered",
"managed_by": "linq",
"set": false,
"source": "platform"
},
{
"name": "oauth",
"value": "configured",
"managed_by": "linq",
"set": true,
"source": "brand"
}
],
"app_extensions": {
"apps": {}
}
}{
"brand_id": "biz_9f2c1a",
"display": "CurbFare",
"privacy_policy_url": "https://example.com/privacy",
"terms_of_use_url": "https://example.com/terms",
"policy_version": 4,
"support_contact": "[email protected]",
"richlink_default_image_att_id": "",
"agent_enabled": true,
"escalation_handling": "self_managed",
"escalation_handling_locked": false,
"consent_mode": "linq_managed",
"business_hours": {
"mon": [
[
"09:00",
"12:00"
],
[
"13:00",
"17:00"
]
],
"sat": [
[
"10:00",
"14:00"
]
]
},
"hours_timezone": "America/New_York",
"business_id": "a884eddf-b0ad-4be4-9c0e-071531638768",
"link_origin": "connect",
"managed": [
{
"name": "apple_pay_merchant",
"value": "not configured",
"managed_by": "linq",
"set": false,
"source": "platform"
},
{
"name": "app_extensions",
"value": "none registered",
"managed_by": "linq",
"set": false,
"source": "platform"
},
{
"name": "oauth",
"value": "configured",
"managed_by": "linq",
"set": true,
"source": "brand"
}
],
"app_extensions": {
"apps": {}
}
}