---
title: "Update an agent integration"
method: PATCH
path: "/v1/agents/{identifier}/integrations/{agentIntegrationId}"
tags: ["Agents"]
---

# Update an agent integration

`PATCH /v1/agents/{identifier}/integrations/{agentIntegrationId}`

Update which integration a link points to (by integration **identifier**, not the internal _id).

## Path parameters

- `identifier` string, required
- `agentIntegrationId` string, required

## Headers

- `idempotency-key` string

## Request body

- UpdateAgentIntegrationRequestDto
  - `integrationIdentifier` string, required — The integration identifier this link should point to (not the internal document _id).

## Response `200`

OK

- AgentIntegrationResponseDto
  - `_id` string, required — Agent–integration link document id.
  - `_agentId` string, required
  - `integration` AgentIntegrationResponseIntegrationDto, required
    - `_id` string, required — Integration document _id.
    - `identifier` string, required — The integration identifier (matches the integration store), not the internal MongoDB _id.
    - `name` string, required
    - `providerId` string, required
    - `channel` 'in_app' | 'email' | 'sms' | 'chat' | 'push' | 'tool' — Channel type through which the message is sent
    - `active` boolean, required
    - `sharedInboundAddress` string — The Novu shared inbox address for this agent. Set whenever the cloud shared-inbox feature is enabled. The dashboard uses this as the headline inbound address and to render the shared inbox row in the inbox list.
    - `defaultSenderName` string — Default email From display name for this agent (NovuAgent integrations only). Falls back to the agent name when not explicitly stored on the integration credentials.
    - `sharedInboxDisabled` boolean — When true, the worker drops inbound mail addressed to this agent on the shared `agentconnect.sh` domain. Custom-domain routes still deliver. Meaningful on cloud-enabled NovuAgent integrations; on self-hosted it is set defensively at provisioning time and is effectively redundant.
  - `_environmentId` string, required
  - `_organizationId` string, required
  - `connectedAt` object, nullable — Set when the agent–integration link received its first inbound webhook delivery.
  - `createdAt` string, required
  - `updatedAt` string, required
  - `exceedsPlanLimit` boolean — Cloud only. `true` when this channel type (provider) falls outside the organization plan active-channel limit (by connection order). Active channels are counted per channel type, so multiple integrations of the same provider (e.g. several Slack workspaces) count as a single active channel. Over-limit channels keep their configuration but the agent will not respond on them until the plan is upgraded or older channel types are disconnected.

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `403` — Forbidden
- `404` — The agent, integration, or link was not found.
- `405` — Method Not Allowed
- `409` — Conflict
- `413` — Payload Too Large
- `414` — URI Too Long
- `415` — Unsupported Media Type
- `422` — Unprocessable Entity
- `429` — The client has sent too many requests in a given amount of time.
- `500` — Internal Server Error
- `503` — The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.

---

[API](https://skmtc.net/novu/apis/novu-api.md) · [All operations](https://skmtc.net/novu/apis/novu-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/novu/novu-api/versions/e4a270f838f0/schema)
