Skip to main content
Every Murph conversation is bound to a scope: either your customer account or a single advertiser. The binding is set when the conversation is created and never changes, so a conversation’s context stays stable across turns. Account-scoped conversations are the place for cross-advertiser work; advertiser-scoped conversations keep Murph focused on one advertiser.
These endpoints are available only when Murph is enabled for the caller’s customer account.

Bind a conversation

POST /api/v2/murph/chat The first message of a conversation accepts an optional scope binding. Omit it — or send scopeType: "customer" — for an account-scoped conversation. Send scopeType: "advertiser" with the advertiser’s id in scopeId to bind the conversation to one advertiser.
curl
curl -X POST https://api.interchange.io/api/v2/murph/chat \
  -H "Authorization: Bearer $SCOPE3_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "How are my campaigns pacing?",
    "scopeType": "advertiser",
    "scopeId": "522"
  }'

Request fields

FieldTypeRequiredNotes
scopeType"customer" | "advertiser"NoScope to bind the new conversation to. Defaults to customer when omitted.
scopeIdstringNoThe advertiser id when scopeType is advertiser. Max 120 characters. Not used for customer scope.
The binding is honored only on the first message of a conversation — it is set once at creation and is immutable. Sending scopeType/scopeId on a later turn of an existing conversation has no effect; the stored binding always wins. To work in a different scope, start a new conversation.

Read the binding

GET /api/v2/murph/conversations Every conversation summary carries its scope binding, so you can group or filter conversations by the account or advertiser they belong to. The single-conversation endpoint, GET /api/v2/murph/conversations/{conversationUid}, returns the same fields.

Response (excerpt)

{
  "conversations": [
    {
      "conversationUid": "9b1c…",
      "scopeType": "advertiser",
      "scopeId": "522"
    },
    {
      "conversationUid": "3f0a…",
      "scopeType": "customer",
      "scopeId": null
    }
  ]
}
FieldTypeNotes
scopeType"customer" | "advertiser"The scope the conversation is bound to. Always present.
scopeIdstring | nullThe bound advertiser id when scopeType is advertiser; null for account scope.

Scope and access

Scope binding is contextual: it organizes your conversations and frames Murph’s responses around the chosen node. It does not change what a conversation can access. Every Murph conversation is bound by the customer_id of the authenticated caller, and that account remains the access boundary regardless of the conversation’s scope — binding to an advertiser narrows the conversation’s focus, not its permissions.

Errors

  • 400 VALIDATION_ERRORscopeType is not customer or advertiser, or scopeId exceeds 120 characters.
  • 401 UNAUTHORIZED — missing or invalid bearer token.
  • 403 FORBIDDEN — Murph is not enabled for the caller’s account.
See Errors for the full error contract.

Ask Murph

How Murph works as the in-product assistant.

Murph user preferences

Set Murph’s default language and read display preferences.