---
title: "Update an integration"
method: PUT
path: "/v1/integrations/{integrationId}"
tags: ["Integrations"]
---

# Update an integration

`PUT /v1/integrations/{integrationId}`

Update an integration by its unique key identifier **integrationId**. 
    Each provider supports different credentials, check the provider documentation for more details. Only integration metadata is returned, credentials field is returned as an empty object.

## Path parameters

- `integrationId` string, required

## Request body

- UpdateIntegrationRequestDto
  - `name` string
  - `identifier` string
  - `_environmentId` string
  - `active` boolean — If the integration is active the validation on the credentials field will run
  - `credentials` CredentialsDto
    - `apiKey` string
    - `user` string
    - `secretKey` string
    - `domain` string
    - `password` string
    - `host` string
    - `port` string
    - `secure` boolean
    - `region` string
    - `accountSid` string
    - `messageProfileId` string
    - `token` string
    - `from` string
    - `senderName` string
    - `projectName` string
    - `applicationId` string
    - `clientId` string
    - `requireTls` boolean
    - `ignoreTls` boolean
    - `tlsOptions` object
    - `baseUrl` string
    - `webhookUrl` string
    - `redirectUrl` string
    - `hmac` boolean
    - `serviceAccount` string
    - `ipPoolName` string
    - `apiKeyRequestHeader` string
    - `secretKeyRequestHeader` string
    - `idPath` string
    - `datePath` string
    - `apiToken` string
    - `authenticateByToken` boolean
    - `authenticationTokenKey` string
    - `instanceId` string
    - `alertUid` string
    - `title` string
    - `imageUrl` string
    - `state` string
    - `externalLink` string
    - `channelId` string
    - `phoneNumberIdentification` string
    - `accessKey` string
    - `appSid` string
    - `senderId` string
    - `tenantId` string
    - `AppIOBaseUrl` string
    - `signingSecret` string
    - `outboundIntegrationId` string
    - `outboundConnectedAt` string
    - `whatsNextCompletedAt` string — ISO timestamp marking Layer-2 What's next completion (Connected badge + guide hide). WhatsApp Business: stamped on post-connect Access Token rotation or manual confirm.
    - `useFromAddressOverride` boolean
    - `fromAddressOverride` string
    - `emailSlugPrefix` string — Agent default shared inbox slug prefix used in `{emailSlugPrefix}-{agentId}@<shared-domain>`. Only meaningful on the NovuAgent email integration.
    - `externalEnvironmentId` string — Claude Managed Agents: ID of the Anthropic environment tied to this integration. Hydrated by the API at integration provisioning time.
    - `externalVaultId` string — Claude Managed Agents: ID of the Anthropic vault (`vlt_…`) tied to this integration. Hydrated by the API at integration provisioning time and used to push OAuth-completed MCP credentials to the per-vault credentials API.
    - `externalWorkspaceId` string — Claude Managed Agents: id of the Anthropic workspace used in console deep links. Defaults to `'default'` (the Default Workspace). Set this when the API key is scoped to a custom workspace (e.g. `wrkspc_…`).
  - `check` boolean
  - `conditions` StepFilterDto[]
    - `isNegated` boolean, required
    - `type` 'BOOLEAN' | 'TEXT' | 'DATE' | 'NUMBER' | 'STATEMENT' | 'LIST' | 'MULTI_LIST' | 'GROUP', required
    - `value` 'AND' | 'OR', required
    - `children` FieldFilterPartDto[], required
      - `field` string, required
      - `value` string, required
      - `operator` 'LARGER' | 'SMALLER' | 'LARGER_EQUAL' | 'SMALLER_EQUAL' | 'EQUAL' | 'NOT_EQUAL' | 'ALL_IN' | 'ANY_IN' | 'NOT_IN' | 'BETWEEN' | 'NOT_BETWEEN' | 'LIKE' | 'NOT_LIKE' | 'IN', required
      - `on` 'subscriber' | 'payload', required
  - `configurations` object — Configurations for the integration

## Response `200`

OK

- IntegrationResponseDto
  - `_id` string — The unique identifier of the integration record in the database. This is automatically generated.
  - `_environmentId` string, required — The unique identifier for the environment associated with this integration. This links to the Environment collection.
  - `_organizationId` string, required — The unique identifier for the organization that owns this integration. This links to the Organization collection.
  - `name` string, required — The name of the integration, which is used to identify it in the user interface.
  - `identifier` string, required — A unique string identifier for the integration, often used for API calls or internal references.
  - `providerId` string, required — The identifier for the provider of the integration (e.g., "mailgun", "twilio").
  - `channel` 'in_app' | 'email' | 'sms' | 'chat' | 'push' | 'tool' — The channel type for the integration, which defines how it communicates (e.g., email, SMS). Not set for agent-kind integrations.
  - `kind` 'delivery' | 'agent' — Distinguishes delivery integrations from agent-runtime integrations. Defaults to "delivery". Agent integrations do not have a channel.
  - `credentials` CredentialsDto
    - `apiKey` string
    - `user` string
    - `secretKey` string
    - `domain` string
    - `password` string
    - `host` string
    - `port` string
    - `secure` boolean
    - `region` string
    - `accountSid` string
    - `messageProfileId` string
    - `token` string
    - `from` string
    - `senderName` string
    - `projectName` string
    - `applicationId` string
    - `clientId` string
    - `requireTls` boolean
    - `ignoreTls` boolean
    - `tlsOptions` object
    - `baseUrl` string
    - `webhookUrl` string
    - `redirectUrl` string
    - `hmac` boolean
    - `serviceAccount` string
    - `ipPoolName` string
    - `apiKeyRequestHeader` string
    - `secretKeyRequestHeader` string
    - `idPath` string
    - `datePath` string
    - `apiToken` string
    - `authenticateByToken` boolean
    - `authenticationTokenKey` string
    - `instanceId` string
    - `alertUid` string
    - `title` string
    - `imageUrl` string
    - `state` string
    - `externalLink` string
    - `channelId` string
    - `phoneNumberIdentification` string
    - `accessKey` string
    - `appSid` string
    - `senderId` string
    - `tenantId` string
    - `AppIOBaseUrl` string
    - `signingSecret` string
    - `outboundIntegrationId` string
    - `outboundConnectedAt` string
    - `whatsNextCompletedAt` string — ISO timestamp marking Layer-2 What's next completion (Connected badge + guide hide). WhatsApp Business: stamped on post-connect Access Token rotation or manual confirm.
    - `useFromAddressOverride` boolean
    - `fromAddressOverride` string
    - `emailSlugPrefix` string — Agent default shared inbox slug prefix used in `{emailSlugPrefix}-{agentId}@<shared-domain>`. Only meaningful on the NovuAgent email integration.
    - `externalEnvironmentId` string — Claude Managed Agents: ID of the Anthropic environment tied to this integration. Hydrated by the API at integration provisioning time.
    - `externalVaultId` string — Claude Managed Agents: ID of the Anthropic vault (`vlt_…`) tied to this integration. Hydrated by the API at integration provisioning time and used to push OAuth-completed MCP credentials to the per-vault credentials API.
    - `externalWorkspaceId` string — Claude Managed Agents: id of the Anthropic workspace used in console deep links. Defaults to `'default'` (the Default Workspace). Set this when the API key is scoped to a custom workspace (e.g. `wrkspc_…`).
  - `configurations` ConfigurationsDto
    - `inboundWebhookEnabled` boolean
    - `inboundWebhookSigningKey` string
    - `payloadSchema` string — JSON Schema describing the payload accepted by this integration.
  - `active` boolean, required — Indicates whether the integration is currently active. An active integration will process events and messages.
  - `deleted` boolean, required — Indicates whether the integration has been marked as deleted (soft delete).
  - `deletedAt` string — The timestamp indicating when the integration was deleted. This is set when the integration is soft deleted.
  - `deletedBy` string — The identifier of the user who performed the deletion of this integration. Useful for audit trails.
  - `primary` boolean, required — Indicates whether this integration is marked as primary. A primary integration is often the default choice for processing.
  - `conditions` StepFilterDto[] — An array of conditions associated with the integration that may influence its behavior or processing logic.
    - `isNegated` boolean, required
    - `type` 'BOOLEAN' | 'TEXT' | 'DATE' | 'NUMBER' | 'STATEMENT' | 'LIST' | 'MULTI_LIST' | 'GROUP', required
    - `value` 'AND' | 'OR', required
    - `children` FieldFilterPartDto[], required
      - `field` string, required
      - `value` string, required
      - `operator` 'LARGER' | 'SMALLER' | 'LARGER_EQUAL' | 'SMALLER_EQUAL' | 'EQUAL' | 'NOT_EQUAL' | 'ALL_IN' | 'ANY_IN' | 'NOT_IN' | 'BETWEEN' | 'NOT_BETWEEN' | 'LIKE' | 'NOT_LIKE' | 'IN', required
      - `on` 'subscriber' | 'payload', required

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `403` — Forbidden
- `404` — The integration with the integrationId provided does not exist in the database.
- `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/deprecated-novu-api-use-openapi-json-yaml-instead.md) · [All operations](https://skmtc.net/novu/apis/deprecated-novu-api-use-openapi-json-yaml-instead/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/novu/deprecated-novu-api-use-openapi-json-yaml-instead/versions/986fe259fa85/schema)
