---
title: "Update a project's support settings"
method: PATCH
path: "/v1/projects/{project}/support/settings"
tags: ["Support Inbox"]
---

# Update a project's support settings

`PATCH /v1/projects/{project}/support/settings`

## Request

- Base URL: `https://api.subscriby.net`
- URL: `https://api.subscriby.net/v1/projects/{project}/support/settings`
- Auth: HTTP bearer

```bash
curl -X PATCH https://api.subscriby.net/v1/projects/$PROJECT_ID/support/settings \
  -H "Authorization: Bearer $SUBSCRIBY_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "relay_mode": "owner_dm",
    "auto_reply": "Thanks, a person will reply within a day."
  }'
```

Answers `200` with the complete settings after the change. **Every field is optional and an omitted one keeps its stored value**, so the request above changes the relay and the auto-reply and leaves `enabled`, `agent_name` and `notify_email` alone. `support.settings.updated` fires only when at least one value actually changed, with the full settings and a `changes` map; a `PATCH` that resends the current values changes nothing and raises nothing.

> **`forum_group` needs a group the bot can post into.** `forum_group` mirrors each member conversation into its own topic of a group with topics enabled. Switching the mode here does not link a group: the creator adds the project bot to such a group as an administrator (with permission to manage topics), the bot records the group itself and confirms by direct message. Until that happens, new member messages reach only the dashboard inbox. The group's id is never exposed by this endpoint.

## Path parameters

- `project` string, uuid, required

## Headers

- `Idempotency-Key` string, uuid, required

## Request body

- UpdateSupportSettingsRequest: The changes to a project's support inbox settings. Every field is optional and an omitted one keeps its stored value.
  - `enabled` boolean: Whether a member's unrecognised message to the bot opens a conversation.
  - `relay_mode` 'owner_dm' | 'forum_group' | 'none': `owner_dm`, `forum_group` or `none`. Switching to `forum_group` does not link a group: the creator adds the project bot to a group with topics enabled as an administrator, the bot records the group itself and confirms; until then new member messages reach only the dashboard inbox.
  - `agent_name` string, nullable: The name outbound replies are prefixed with, up to 60 characters; null or an empty string clears it. Whitespace is trimmed.
  - `auto_reply` string, nullable: The acknowledgement sent on a member's first message in a thread, up to 1,000 characters, well under the platform limit because it is sent with an identity header; null clears it.
  - `notify_email` boolean: Whether the creator is emailed about new support activity.

## Response `200`

The settings, updated.

- object
  - `data` SupportSettingsResource, required: A project's support inbox settings: whether members can open a conversation, how the creator is relayed, the agent name, the auto-reply and email notifications.
    - `project_id` string, required: The project the settings belong to.
    - `enabled` boolean, required: Whether a member's unrecognised message to the bot opens a conversation. Off stops **new** threads reaching the inbox; existing ones are kept.
    - `relay_mode` string, required: `owner_dm` (the platform bot messages the project owner with an inline Reply button), `forum_group` (each conversation mirrored into its own topic of a group the bot administers) or `none` (the dashboard inbox is the only surface).
    - `agent_name` string, nullable, required: The name outbound replies are prefixed with so they read as coming from a person; null falls back to the project's default.
    - `auto_reply` string, nullable, required: Sent to a member on their first message in a thread; null sends nothing.
    - `notify_email` boolean, required: Whether the creator is emailed about new support activity.
    - `updated_at` string, nullable, required: When the project last changed, ISO 8601.

## Other responses

- `400`: `IDEMPOTENCY_KEY_MISSING`: every write needs an `Idempotency-Key` header. Send a fresh UUID per distinct operation.
- `401`: `AUTHENTICATION_REQUIRED`: the request carries no bearer token, or one that is revoked, malformed, or minted for another environment (an `sbt_test_` token on production).
- `403`: `TOKEN_MISSING_ABILITY`: the token is valid but does not carry the ability this endpoint requires; `error.context.required_ability` names the one to grant. An endpoint that also checks who owns a row or which tier the account is on answers `FORBIDDEN`, `TEAM_TIER_REQUIRED` or `CONNECTOR_TIER_REQUIRED` with the same status, and says so in its own description.
- `404`: `RESOURCE_NOT_FOUND`: an id in the path names nothing the token can see. `TENANT_MISMATCH`: the project sits outside the token's `scope:project:` allow-list, or the token carries no team scope. Both answer 404 rather than 403 so that existence outside the token's scope cannot be inferred.
- `409`: `IDEMPOTENCY_KEY_REUSED`: the key was already used in the last 24 hours with a different request body.
- `422`: `VALIDATION_FAILED`: the payload broke a rule, and `error.fields` maps each offending key to its messages. A refusal from the domain, such as a plan that cannot go on sale or a member who cannot be removed, uses the same code with `error.message` saying why and no `fields`. On this endpoint: `VALIDATION_FAILED`: when `relay_mode` is not `owner_dm`, `forum_group` or `none`, `agent_name` exceeds 60 characters, or `auto_reply` exceeds 1,000 characters.
- `425`: `IDEMPOTENCY_REPLAY_IN_PROGRESS`: the first request with this key is still running; retry in a few seconds and the original response is replayed.
- `429`: `RATE_LIMITED`: the token has spent its 300 requests a minute or 10,000 an hour; `Retry-After` says when the next one is accepted.

---

[API](https://skmtc.dev/memberpass/apis/subscriby-rest-api.md) · [All operations](https://skmtc.dev/memberpass/apis/subscriby-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/memberpass/apis/subscriby-rest-api/revisions/59c4df91d764?raw)
