---
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}`

## Request

- Base URL: `https://api.notifly.io`
- URL: `https://api.notifly.io/v1/agents/{identifier}/integrations/{agentIntegrationId}`
- Auth: API key in header `Authorization`

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

## Path parameters

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

## Request body

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

## Response `200`

OK

- object
  - `data` 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.dev/notifly/apis/notifly-api.md) · [All operations](https://skmtc.dev/notifly/apis/notifly-api/llms.txt) · [OpenAPI document](https://skmtc.dev/notifly/apis/notifly-api/revisions/af909b9e1e57?raw)
