---
title: "Perform Batch Operations on Endpoints"
method: PATCH
path: "/v2.0/endpoints"
tags: ["Endpoints"]
---

# Perform Batch Operations on Endpoints

`PATCH /v2.0/endpoints`

Performs batch operations on Endpoints in a Project. Use this method to create, update, or delete multiple Endpoints in a request by specifying the operation type (`create`, `update`, or `delete`) for each item in the operations array.

## Query parameters

- `projectId` string

## Headers

- `Accept` 'application/json' | 'application/hal+json' | 'application/xml' | 'text/xml' | 'text/csv'

## Request body

- object
  - `operations` union[]
    - union
      - object
        - `op` 'delete'
        - `id` string
      - object
        - `op` 'create'
        - `value` object
          - `foreignId` string
          - `channel` 'facebook' | 'alexa' | 'slack' | 'generic' | 'inject' | 'rest' | 'realtime' | 'socket' | 'adminconsole' | 'webchat2' | 'dialogflow' | 'twilio' | 'twilio-sms' | 'line' | 'intercom' | 'microsoftBotFramework' | 'microsoftTeams' | 'sunshineConversations' | 'admin-webchat' | 'avaya' | 'nonConversational' | 'voiceGateway2' | 'amazonLex' | 'workplace' | 'webhook' | 'abstractRest' | 'userlike' | 'ringCentralEngage' | 'audioCodes' | 'bandwidth' | 'whatsapp' | 'eightByEight' | 'genesysBotConnector' | 'niceCXOne' | 'agentAssistVoice' | 'webchat3' | 'niceCXOneAAH' | 'zoomContactCenter' | 'mcpServer'
          - `flowId` string
          - `localeId` string
          - `URLToken` string — The URLToken of the endpoint
          - `name` string — The name of the endpoint
          - `entrypoint` string — The ID can be either a Snapshot ID or a Project ID. The Endpoint will refer to the chosen one.
          - `active` boolean — Toggle whether the endpoint is active or not
          - `nluConnectorId` union
            - 'alexa' | 'dialogflow' | 'dialogflowBuiltIn' | 'amazonLexBuiltIn' | 'luis' | 'watson' | 'noNlu' | 'cognigy' | 'code' | 'generativeAI' | 'lex' — The NLU Connector type.
            - string
          - `useConversations` boolean — Whether to collect conversations history for this endpoint
          - `maskIPAddress` boolean — Whether to mask sensitive IP address in input object and analytics data for this endpoint
          - `maskAnalytics` boolean — Whether to mask sensitive data in analytics for this endpoint
          - `maskLogging` boolean — Whether to mask sensitive data in logs for this endpoint
          - `useContactProfiles` boolean — Whether to use contact profiles for this endpoint
          - `useAnalytics` boolean — Whether we should store analytics for this endpoint
          - `useDashbotAnalytics` boolean — Whether we should use Dashbot to collect analytics
          - `dashbotApikey` string — The apikey for the dashbot bot
          - `dashbotPlatform` string
          - `disableInputSanitization` string — If true, disables input text sanitization after Input Transformer
          - `disableSkipUriTags` string — If true, disables skipping of uri tags
          - `overrideSnapshotConnections` boolean
          - `settings` object
            - `accessScope` string
            - `accessToken` string
            - `appId` string
            - `appSecret` string
            - `backgroundImageUrl` string
            - `basicAuthPassword` string
            - `basicAuthUser` string
            - `botUserId` string
            - `businessHours` object
              - …
            - `colorScheme` string
            - `connectionName` string
            - `customJSON` string
            - `designTemplate` integer
            - `disableHtmlContentSanitization` boolean
            - `disableInputAutocomplete` boolean
            - `disableInputAutogrow` boolean
            - `disableUrlButtonSanitization` boolean
            - `enableGenericHTMLStyling` boolean
            - `enableAsyncCommunication` boolean
            - `engagementMessageText` string
            - `displayGetStartedButton` boolean
            - `dynamicImageAspectRatio` boolean
            - `enableCollectMetadata` boolean
            - `enableConnectionStatusIndicator` boolean
            - `enableDemoWebchat` boolean
            - `enableFileUpload` boolean
            - `enablePersistentMenu` boolean
            - `enableRating` 'onRequest' | 'always' | 'once'
            - `enableSTT` boolean
            - `enableTTS` boolean
            - `enableUnreadMessageBadge` boolean
            - `enableUnreadMessagePreview` boolean
            - `enableUnreadMessageSound` boolean
            - `enableUnreadMessageTitleIndicator` boolean
            - `enableTypingIndicator` boolean
            - `facebookPageToken` string
            - `focusInputAfterPostback` boolean
            - `getStartedButtonText` string
            - `getStartedPayload` string
            - `getStartedText` string
            - `getStartedData` string
            - `headerLogoUrl` string
            - `hubSecret` string
            - `inputAutogrowMaxRows` number
            - `inputPlaceholder` string
            - `language` string
            - `lineChannelAccessToken` string
            - `lineChannelSecret` string
            - `maintenance` object
              - …
            - `mergeContactProfiles` boolean
            - `messageDelay` integer
            - `messageLogoUrl` string
            - `overwriteWebchatBundleUrl` string
            - `ratingTitleText` string
            - `ratingCommentText` string
            - `ratingMessageHistoryRatingText` string
            - `ratingMessageHistoryCommentText` string
            - `reparseAlexaSlots` boolean
            - `requestFacebookProfileData` boolean
            - `restEndpointAuthentication` object — Authentication enforced on inbound requests for REST endpoints. `POST /v2.0/endpoints/{endpointId}/apikeys`. Defaults to `no-auth` for backward compatibility.
              - …
            - `sessionExpiration` integer
            - `shouldOverwriteWebchatBundleUrl` boolean
            - `showEngagementMessagesInChat` boolean
            - `slackOAuthAccessToken` string
            - `slackVerifyToken` string
            - `sunshineConversationsChannelKeyId` string
            - `sunshineConversationsChannelSecret` string
            - `sunshineConversationsChannelUri` string, uri
            - `tenantId` string
            - `updateContactProfileWithFacebookProfile` boolean
            - `voice` string
            - `webhookEndpointAuthentication` object — Authentication enforced on inbound webhook requests for Webhook/Generic endpoints. Mirrors the nested shape used by `mcpServerEndpointAuthentication` on MCP Server endpoints. When `authenticationType` is `apiKey`, requests must carry a valid `X-Webhook-Key` header that matches a key generated via `POST /v2.0/endpoints/{endpointId}/apikeys`. Defaults to `no-auth` for backward compatibility.
              - …
            - `webhookUrl` string, uri
            - `skill` object
            - `persistentMenu` object
          - `transformer` object
            - `abortOnError` boolean — If true, then we will abort the message processing if the transformer throws an error. Otherwise, we will continue with normal message processing in the event of an error.
            - `transformer` string — The transformer object as written by the user. This will be displayed in the UI since it includes typings.
            - `transpiledTransformer` string — The transformer object written by the user, but without typings. This will be executed.
            - `inputTransformerEnabled` boolean
            - `outputTransformerEnabled` boolean
            - `finalPingTransformerEnabled` boolean
            - `notifyTransformerEnabled` boolean
            - `injectTransformerEnabled` boolean
          - `handoverSettings` object
            - `provider` 'cognigy' | 'none' | 'rce'
            - `providerSettings` object
              - …
            - `agentAssistSettings` object
              - …
          - `orgDataPrivacySettings` object — Organisation data privacy settings overwrite the ones defined on endpoint-level
            - `enabled` boolean — Whether or not organisation data privacy settings are enabled
            - `useAnalytics` boolean
            - `storeDataPayload` boolean
            - `useContactProfiles` boolean
            - `useConversations` boolean
            - `maskIPAddress` boolean
            - `maskAnalytics` boolean
            - `maskLogging` boolean
      - object
        - `op` 'update'
        - `id` string
        - `value` object
          - `foreignId` string
          - `channel` 'facebook' | 'alexa' | 'slack' | 'generic' | 'inject' | 'rest' | 'realtime' | 'socket' | 'adminconsole' | 'webchat2' | 'dialogflow' | 'twilio' | 'twilio-sms' | 'line' | 'intercom' | 'microsoftBotFramework' | 'microsoftTeams' | 'sunshineConversations' | 'admin-webchat' | 'avaya' | 'nonConversational' | 'voiceGateway2' | 'amazonLex' | 'workplace' | 'webhook' | 'abstractRest' | 'userlike' | 'ringCentralEngage' | 'audioCodes' | 'bandwidth' | 'whatsapp' | 'eightByEight' | 'genesysBotConnector' | 'niceCXOne' | 'agentAssistVoice' | 'webchat3' | 'niceCXOneAAH' | 'zoomContactCenter' | 'mcpServer'
          - `flowId` string
          - `localeId` string
          - `URLToken` string — The URLToken of the endpoint
          - `name` string — The name of the endpoint
          - `entrypoint` string — The ID can be either a Snapshot ID or a Project ID. The Endpoint will refer to the chosen one.
          - `active` boolean — Toggle whether the endpoint is active or not
          - `nluConnectorId` union
            - 'alexa' | 'dialogflow' | 'dialogflowBuiltIn' | 'amazonLexBuiltIn' | 'luis' | 'watson' | 'noNlu' | 'cognigy' | 'code' | 'generativeAI' | 'lex' — The NLU Connector type.
            - string
          - `useConversations` boolean — Whether to collect conversations history for this endpoint
          - `maskIPAddress` boolean — Whether to mask sensitive IP address in input object and analytics data for this endpoint
          - `maskAnalytics` boolean — Whether to mask sensitive data in analytics for this endpoint
          - `maskLogging` boolean — Whether to mask sensitive data in logs for this endpoint
          - `useContactProfiles` boolean — Whether to use contact profiles for this endpoint
          - `useAnalytics` boolean — Whether we should store analytics for this endpoint
          - `useDashbotAnalytics` boolean — Whether we should use Dashbot to collect analytics
          - `dashbotApikey` string — The apikey for the dashbot bot
          - `dashbotPlatform` string
          - `disableInputSanitization` string — If true, disables input text sanitization after Input Transformer
          - `disableSkipUriTags` string — If true, disables skipping of uri tags
          - `overrideSnapshotConnections` boolean
          - `settings` object
            - `accessScope` string
            - `accessToken` string
            - `appId` string
            - `appSecret` string
            - `backgroundImageUrl` string
            - `basicAuthPassword` string
            - `basicAuthUser` string
            - `botUserId` string
            - `businessHours` object
              - …
            - `colorScheme` string
            - `connectionName` string
            - `customJSON` string
            - `designTemplate` integer
            - `disableHtmlContentSanitization` boolean
            - `disableInputAutocomplete` boolean
            - `disableInputAutogrow` boolean
            - `disableUrlButtonSanitization` boolean
            - `enableGenericHTMLStyling` boolean
            - `enableAsyncCommunication` boolean
            - `engagementMessageText` string
            - `displayGetStartedButton` boolean
            - `dynamicImageAspectRatio` boolean
            - `enableCollectMetadata` boolean
            - `enableConnectionStatusIndicator` boolean
            - `enableDemoWebchat` boolean
            - `enableFileUpload` boolean
            - `enablePersistentMenu` boolean
            - `enableRating` 'onRequest' | 'always' | 'once'
            - `enableSTT` boolean
            - `enableTTS` boolean
            - `enableUnreadMessageBadge` boolean
            - `enableUnreadMessagePreview` boolean
            - `enableUnreadMessageSound` boolean
            - `enableUnreadMessageTitleIndicator` boolean
            - `enableTypingIndicator` boolean
            - `facebookPageToken` string
            - `focusInputAfterPostback` boolean
            - `getStartedButtonText` string
            - `getStartedPayload` string
            - `getStartedText` string
            - `getStartedData` string
            - `headerLogoUrl` string
            - `hubSecret` string
            - `inputAutogrowMaxRows` number
            - `inputPlaceholder` string
            - `language` string
            - `lineChannelAccessToken` string
            - `lineChannelSecret` string
            - `maintenance` object
              - …
            - `mergeContactProfiles` boolean
            - `messageDelay` integer
            - `messageLogoUrl` string
            - `overwriteWebchatBundleUrl` string
            - `ratingTitleText` string
            - `ratingCommentText` string
            - `ratingMessageHistoryRatingText` string
            - `ratingMessageHistoryCommentText` string
            - `reparseAlexaSlots` boolean
            - `requestFacebookProfileData` boolean
            - `restEndpointAuthentication` object — Authentication enforced on inbound requests for REST endpoints. `POST /v2.0/endpoints/{endpointId}/apikeys`. Defaults to `no-auth` for backward compatibility.
              - …
            - `sessionExpiration` integer
            - `shouldOverwriteWebchatBundleUrl` boolean
            - `showEngagementMessagesInChat` boolean
            - `slackOAuthAccessToken` string
            - `slackVerifyToken` string
            - `sunshineConversationsChannelKeyId` string
            - `sunshineConversationsChannelSecret` string
            - `sunshineConversationsChannelUri` string, uri
            - `tenantId` string
            - `updateContactProfileWithFacebookProfile` boolean
            - `voice` string
            - `webhookEndpointAuthentication` object — Authentication enforced on inbound webhook requests for Webhook/Generic endpoints. Mirrors the nested shape used by `mcpServerEndpointAuthentication` on MCP Server endpoints. When `authenticationType` is `apiKey`, requests must carry a valid `X-Webhook-Key` header that matches a key generated via `POST /v2.0/endpoints/{endpointId}/apikeys`. Defaults to `no-auth` for backward compatibility.
              - …
            - `webhookUrl` string, uri
            - `skill` object
            - `persistentMenu` object
          - `transformer` object
            - `abortOnError` boolean — If true, then we will abort the message processing if the transformer throws an error. Otherwise, we will continue with normal message processing in the event of an error.
            - `transformer` string — The transformer object as written by the user. This will be displayed in the UI since it includes typings.
            - `transpiledTransformer` string — The transformer object written by the user, but without typings. This will be executed.
            - `inputTransformerEnabled` boolean
            - `outputTransformerEnabled` boolean
            - `finalPingTransformerEnabled` boolean
            - `notifyTransformerEnabled` boolean
            - `injectTransformerEnabled` boolean
          - `handoverSettings` object
            - `provider` 'cognigy' | 'none' | 'rce'
            - `providerSettings` object
              - …
            - `agentAssistSettings` object
              - …
          - `orgDataPrivacySettings` object — Organisation data privacy settings overwrite the ones defined on endpoint-level
            - `enabled` boolean — Whether or not organisation data privacy settings are enabled
            - `useAnalytics` boolean
            - `storeDataPayload` boolean
            - `useContactProfiles` boolean
            - `useConversations` boolean
            - `maskIPAddress` boolean
            - `maskAnalytics` boolean
            - `maskLogging` boolean

## Response `200`

Successfully ran the batch operations.

- object
  - `created` string[]
  - `updated` string[]
  - `deleted` string[]

## Other responses

- `400` — The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing)
- `401` — The request has not been applied because it lacks valid authentication credentials for the target resource.
- `402` — Upgrade your Plan to increase your Quota.
- `403` — The server understood the request but refuses to authorize it.
- `404` — The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.
- `405` — The method received in the request-line is known by the origin server but not supported by the target resource.
- `409` — The request conflicts with current state of the server.
- `413` — The request entity is larger than limits defined by server.
- `500` — The server encountered an unexpected condition that prevented it from fulfilling the request.
- `501` — The server does not support the functionality required to fulfill the request.
- `502` — The server, while acting as a gateway or proxy, received an invalid response from an inbound server it accessed while attempting to fulfill the request.
- `503` — The server is not ready to handle the request.
- `504` — The server, while acting as a gateway or proxy, did not receive a timely response from an upstream server it needed to access in order to complete the request.

---

[API](https://skmtc.net/cognigy/apis/simulator-openapi-rest-ful-api-reference.md) · [All operations](https://skmtc.net/cognigy/apis/simulator-openapi-rest-ful-api-reference/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/cognigy/simulator-openapi-rest-ful-api-reference/revisions/85b2872bdfb7/schema)
