> ## Documentation Index
> Fetch the complete documentation index at: https://docs.interchange.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Conversation scope

> Bind a Murph conversation to your account or a single advertiser

Every Murph conversation is bound to a scope: either your **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.

In the Interchange web UI, selecting an advertiser and opening Murph from that
advertiser context starts an advertiser-scoped conversation automatically.
Opening Murph from the organization context starts an account-scoped
conversation. This UI selection does not change direct Buyer API or MCP
campaign calls: those calls continue to use the advertiser or account scope in
their own request and authentication context.

<Info>
  These endpoints are available only when Murph is enabled for the caller's
  account.
</Info>

## 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.

```bash curl theme={null}
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

| Field       | Type                           | Required | Notes                                                                                                  |
| ----------- | ------------------------------ | -------- | ------------------------------------------------------------------------------------------------------ |
| `scopeType` | `"customer"` \| `"advertiser"` | No       | Scope to bind the new conversation to. Defaults to `customer` when omitted.                            |
| `scopeId`   | string                         | No       | The 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)

```json theme={null}
{
  "conversations": [
    {
      "conversationUid": "9b1c…",
      "scopeType": "advertiser",
      "scopeId": "522"
    },
    {
      "conversationUid": "3f0a…",
      "scopeType": "customer",
      "scopeId": null
    }
  ]
}
```

| Field       | Type                           | Notes                                                                               |
| ----------- | ------------------------------ | ----------------------------------------------------------------------------------- |
| `scopeType` | `"customer"` \| `"advertiser"` | The scope the conversation is bound to. Always present.                             |
| `scopeId`   | string \| null                 | The 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_ERROR` — `scopeType` 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](/v2/reference/errors) for the full error contract.

## Related

<CardGroup cols={2}>
  <Card title="Ask Murph" href="/v2/setup/ask-murph" icon="sparkles">
    How Murph works as the in-product assistant.
  </Card>

  <Card title="Murph user preferences" href="/v2/api/murph/user-preferences" icon="languages">
    Set Murph's default language and read display preferences.
  </Card>
</CardGroup>
