1MSG

Get Settings

GET
/settings

Return channel settings: webhook URL(s), delivery flags, and analytics toggles.

Auto-disable / circuit state matches GET /webhook. Prefer webhookStatuses (one row per configured URL). The breaker is per URL, not per channel.

Channel-level haveDisabledWebhooks is true when at least one URL in webhookUrl is sticky auto-disabled — not "the channel is dead". Live URLs still receive events. Top-level circuitState / reason / fails / trips are a compatibility summary of one URL (first sticky-disabled, else first configured).

This is the same GET /settings endpoint as the REST API (previously missing from MCP).

Authorization

JWT token
querytoken<token>

Response Body

Server response example

application/json
  1. response
webhookUrl?|array<>

HTTP or HTTPS URL for inbound events. A string sets a single URL. An array of up to 5 URLs replaces the stored list. On POST /settings, an empty string, null, or false clears webhooks (an empty array is ignored).

guaranteedHooks?boolean

Retry webhook delivery until acknowledged

ackNotificationsOn?boolean

Include message ACK / delivery status events in webhooks

rawHooks?boolean

Forward raw provider webhook payloads in addition to normalized ones

mm_lite_enabled?boolean

Marketing Messages Lite enabled for the channel

template_analytics_enabled?boolean

WABA template analytics enabled

cta_url_link_tracking_opted_out?boolean

Opt out of CTA URL link tracking on marketing templates

haveDisabledWebhooks?boolean

true when at least one URL in webhookUrl is sticky auto-disabled. Not "the channel is dead": other configured URLs still receive events.

circuitState?string

Compatibility scalar for one URL (first sticky-disabled, else first configured). Prefer webhookStatuses[].circuitState.

Value in"ok""degraded""open""half_open""disabled"
reason?string

Last qualifying fail reason of the summary URL

fails?integer

Diagnostic only (summary URL). Qualifying failures in the rolling ~10 minute breaker window — not lifetime. Prefer webhookStatuses.

trips?integer

Diagnostic only (summary URL). Failed recovery probes (≈15 min → 1 h → 6 h). Sticky disable after 3. Not a blind unblock timer.

disabledAt?integer

Epoch milliseconds when the summary URL became sticky-disabled

firstFailAt?integer

Diagnostic only (summary URL). Epoch ms of the first fail in the current ~10 minute window (pairs with fails).

lastStatus?integer

Last HTTP status from the summary URL, when known

nextProbeAt?integer

Epoch milliseconds of the next half-open probe for the summary URL, if any

disabledWebhooks?array<>

Currently configured URLs that are sticky auto-disabled (subset of webhookUrl)

webhookStatuses?array<>

One entry per currently configured URL. Prefer this over top-level haveDisabledWebhooks / circuitState.

[key: string]?any
curl -X GET 'https://api.1msg.io/123/settings'
{  "webhookUrl": "https://example.com/webhook",  "guaranteedHooks": false,  "ackNotificationsOn": true,  "rawHooks": false,  "haveDisabledWebhooks": false,  "circuitState": "ok",  "disabledWebhooks": [],  "webhookStatuses": [    {      "url": "https://example.com/webhook",      "circuitState": "ok"    }  ]}