# API: Settings

| Method | Path | What it does | Scope |
|---|---|---|---|
| GET | `/v1/settings/ai` | Model routing per task, bring-your-own key status, outbound switch | `settings:read` |
| PUT | `/v1/settings/ai` | Update model routing, your own Anthropic key, or the outbound switch (owner) | `settings:write` |
| GET | `/v1/settings/ai-disclosure` | The line added to emails an agent sends on its own (EU AI Act Art. 50); emails a person approves don't carry it | `settings:read` |
| PUT | `/v1/settings/ai-disclosure` | Turn the disclosure on or off, or reword it (owners; it must still say an AI wrote the message) | `settings:write` |
| GET | `/v1/settings/crm` | CRM settings, e.g. who may add custom fields | `settings:read` |
| PUT | `/v1/settings/crm` | Update CRM settings (owner) | `settings:write` |
| GET | `/v1/settings/notifications` | Organization notification defaults | `settings:read` |
| PUT | `/v1/settings/notifications` | Update organization notification defaults (owner) | `settings:write` |
| PUT | `/v1/settings/session-replay` | Turn session replay on or off for the organization (owners). It's off by default; turning it off deletes the organization's recordings (web app only) | — |
| GET | `/v1/usage/llm` | Model usage and estimated cost this calendar month (UTC) | `billing:read` |

## Examples

### GET /v1/settings/ai

Model routing per task, bring-your-own key status, outbound switch

```bash
curl -s "https://api.closefinch.com/v1/settings/ai" \
  -H "Authorization: Bearer $RA_API_KEY"
```

```js
const res = await fetch(`https://api.closefinch.com/v1/settings/ai`, {
  method: "GET",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}` },
});
const data = await res.json();
```

### PUT /v1/settings/ai

Update model routing, your own Anthropic key, or the outbound switch (owner)

```bash
curl -s -X PUT "https://api.closefinch.com/v1/settings/ai" \
  -H "Authorization: Bearer $RA_API_KEY" \
  -H "content-type: application/json" \
  -d '{}'
```

```js
const res = await fetch(`https://api.closefinch.com/v1/settings/ai`, {
  method: "PUT",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}`, "content-type": "application/json" },
  body: JSON.stringify({}), // fields: see the OpenAPI schema
});
const data = await res.json();
```

### GET /v1/settings/ai-disclosure

The line added to emails an agent sends on its own (EU AI Act Art. 50); emails a person approves don't carry it

```bash
curl -s "https://api.closefinch.com/v1/settings/ai-disclosure" \
  -H "Authorization: Bearer $RA_API_KEY"
```

```js
const res = await fetch(`https://api.closefinch.com/v1/settings/ai-disclosure`, {
  method: "GET",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}` },
});
const data = await res.json();
```

### PUT /v1/settings/ai-disclosure

Turn the disclosure on or off, or reword it (owners; it must still say an AI wrote the message)

```bash
curl -s -X PUT "https://api.closefinch.com/v1/settings/ai-disclosure" \
  -H "Authorization: Bearer $RA_API_KEY" \
  -H "content-type: application/json" \
  -d '{}'
```

```js
const res = await fetch(`https://api.closefinch.com/v1/settings/ai-disclosure`, {
  method: "PUT",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}`, "content-type": "application/json" },
  body: JSON.stringify({}), // fields: see the OpenAPI schema
});
const data = await res.json();
```

### GET /v1/settings/crm

CRM settings, e.g. who may add custom fields

```bash
curl -s "https://api.closefinch.com/v1/settings/crm" \
  -H "Authorization: Bearer $RA_API_KEY"
```

```js
const res = await fetch(`https://api.closefinch.com/v1/settings/crm`, {
  method: "GET",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}` },
});
const data = await res.json();
```

### PUT /v1/settings/crm

Update CRM settings (owner)

```bash
curl -s -X PUT "https://api.closefinch.com/v1/settings/crm" \
  -H "Authorization: Bearer $RA_API_KEY" \
  -H "content-type: application/json" \
  -d '{}'
```

```js
const res = await fetch(`https://api.closefinch.com/v1/settings/crm`, {
  method: "PUT",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}`, "content-type": "application/json" },
  body: JSON.stringify({}), // fields: see the OpenAPI schema
});
const data = await res.json();
```

### GET /v1/settings/notifications

Organization notification defaults

```bash
curl -s "https://api.closefinch.com/v1/settings/notifications" \
  -H "Authorization: Bearer $RA_API_KEY"
```

```js
const res = await fetch(`https://api.closefinch.com/v1/settings/notifications`, {
  method: "GET",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}` },
});
const data = await res.json();
```

### PUT /v1/settings/notifications

Update organization notification defaults (owner)

```bash
curl -s -X PUT "https://api.closefinch.com/v1/settings/notifications" \
  -H "Authorization: Bearer $RA_API_KEY" \
  -H "content-type: application/json" \
  -d '{}'
```

```js
const res = await fetch(`https://api.closefinch.com/v1/settings/notifications`, {
  method: "PUT",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}`, "content-type": "application/json" },
  body: JSON.stringify({}), // fields: see the OpenAPI schema
});
const data = await res.json();
```

### GET /v1/usage/llm

Model usage and estimated cost this calendar month (UTC)

```bash
curl -s "https://api.closefinch.com/v1/usage/llm" \
  -H "Authorization: Bearer $RA_API_KEY"
```

```js
const res = await fetch(`https://api.closefinch.com/v1/usage/llm`, {
  method: "GET",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}` },
});
const data = await res.json();
```

Request and response schemas: [https://www.closefinch.com/openapi.json](https://www.closefinch.com/openapi.json). All resources: [API reference](https://www.closefinch.com/docs/api).
