---
title: "Creates a Integration Rule"
method: POST
path: "/apps/{app_id}/rules"
tags: ["rules"]
---

# Creates a Integration Rule

`POST /apps/{app_id}/rules`

## Path parameters

- `app_id` string, required

## Request body

- union
  - HttpRulePost
    - `status` string
    - `ruleType` 'http', required
    - `requestMode` string, required
    - `source` RuleSource, required
      - `channelFilter` string, required
      - `type` string, required
    - `target` object, required
      - `url` string, required
      - `headers` object[]
        - `name` string
        - `value` string
      - `signingKeyId` string, nullable
      - `enveloped` boolean, nullable
      - `format` string, required
  - IftttRulePost
    - `status` string
    - `ruleType` 'http/ifttt', required
    - `requestMode` string, required
    - `source` RuleSource, required
      - `channelFilter` string, required
      - `type` string, required
    - `target` object, required
      - `webhookKey` string, required
      - `eventName` string, required
  - ZapierRulePost
    - `status` string
    - `ruleType` 'http/zapier', required
    - `requestMode` string, required
    - `source` RuleSource, required
      - `channelFilter` string, required
      - `type` string, required
    - `target` object, required
      - `url` string, required
      - `headers` object[]
        - `name` string
        - `value` string
      - `signingKeyId` string, nullable
  - CloudflareWorkerRulePost
    - `status` string
    - `ruleType` 'http/cloudflare-worker', required
    - `requestMode` string, required
    - `source` RuleSource, required
      - `channelFilter` string, required
      - `type` string, required
    - `target` object, required
      - `url` string, required
      - `headers` object[]
        - `name` string
        - `value` string
      - `signingKeyId` string, nullable
  - AzureFunctionRulePost
    - `status` string
    - `ruleType` 'http/azure-function', required
    - `requestMode` string, required
    - `source` RuleSource, required
      - `channelFilter` string, required
      - `type` string, required
    - `target` object, required
      - `azureAppId` string, required
      - `azureFunctionName` string, required
      - `headers` object[]
        - `name` string
        - `value` string
      - `signingKeyId` string, nullable
      - `enveloped` boolean, nullable
      - `format` string
  - GoogleCloudFunctionRulePost
    - `status` string
    - `ruleType` 'http/google-cloud-function', required
    - `requestMode` string, required
    - `source` RuleSource, required
      - `channelFilter` string, required
      - `type` string, required
    - `target` object, required
      - `region` string, required
      - `projectId` string, required
      - `functionName` string, required
      - `headers` object[]
        - `name` string
        - `value` string
      - `signingKeyId` string, nullable
      - `enveloped` boolean, nullable
      - `format` string
  - AwsLambdaRulePost
    - `status` string
    - `ruleType` 'aws/lambda', required
    - `requestMode` string, required
    - `source` RuleSource, required
      - `channelFilter` string, required
      - `type` string, required
    - `target` object, required
      - `region` string, required
      - `functionName` string, required
      - `authentication` union, required
        - AwsAccessKeys
          - `authenticationMode` 'credentials'
          - `accessKeyId` string, required
          - `secretAccessKey` string, required
        - AwsAssumeRole
          - `authenticationMode` 'assumeRole'
          - `assumeRoleArn` string, required
      - `enveloped` boolean, nullable
  - AwsKinesisRulePost
    - `status` string
    - `ruleType` 'aws/kinesis', required
    - `requestMode` string, required
    - `source` RuleSource, required
      - `channelFilter` string, required
      - `type` string, required
    - `target` object, required
      - `region` string, required
      - `streamName` string, required
      - `partitionKey` string, required
      - `authentication` union, required
        - AwsAccessKeys
          - `authenticationMode` 'credentials'
          - `accessKeyId` string, required
          - `secretAccessKey` string, required
        - AwsAssumeRole
          - `authenticationMode` 'assumeRole'
          - `assumeRoleArn` string, required
      - `enveloped` boolean, nullable
      - `format` string, required
  - AwsSqsRulePost
    - `status` string
    - `ruleType` 'aws/sqs', required
    - `requestMode` string, required
    - `source` RuleSource, required
      - `channelFilter` string, required
      - `type` string, required
    - `target` object, required
      - `region` string, required
      - `awsAccountId` string, required
      - `queueName` string, required
      - `authentication` union, required
        - AwsAccessKeys
          - `authenticationMode` 'credentials'
          - `accessKeyId` string, required
          - `secretAccessKey` string, required
        - AwsAssumeRole
          - `authenticationMode` 'assumeRole'
          - `assumeRoleArn` string, required
      - `enveloped` boolean, nullable
      - `format` string
  - BeforePublishAwsLambdaRulePost
    - `status` string
    - `ruleType` 'aws/lambda/before-publish', required
    - `beforePublishConfig` object, required
      - `retryTimeout` integer, required
      - `maxRetries` integer, required
      - `failedAction` 'REJECT' | 'PUBLISH', required
      - `tooManyRequestsAction` 'RETRY' | 'FAIL', required
    - `invocationMode` 'BEFORE_PUBLISH', required
    - `chatRoomFilter` string
    - `source` ChatMessageRuleSource
      - `type` 'chat.message', required
    - `target` object, required
      - `region` string, required
      - `functionName` string, required
      - `authentication` union, required
        - AwsAccessKeys
          - `authenticationMode` 'credentials'
          - `accessKeyId` string, required
          - `secretAccessKey` string, required
        - AwsAssumeRole
          - `authenticationMode` 'assumeRole'
          - `assumeRoleArn` string, required
  - BeforePublishWebhookRulePost
    - `status` string
    - `ruleType` 'http/before-publish', required
    - `beforePublishConfig` object, required
      - `retryTimeout` integer, required
      - `maxRetries` integer, required
      - `failedAction` 'REJECT' | 'PUBLISH', required
      - `tooManyRequestsAction` 'RETRY' | 'FAIL', required
    - `invocationMode` 'BEFORE_PUBLISH', required
    - `chatRoomFilter` string
    - `source` ChatMessageRuleSource
      - `type` 'chat.message', required
    - `target` object, required
      - `url` string, required
      - `headers` object[]
        - `name` string
        - `value` string
  - AmqpRulePost
    - `status` string
    - `ruleType` 'amqp', required
    - `requestMode` string, required
    - `source` RuleSource, required
      - `channelFilter` string, required
      - `type` string, required
    - `target` object, required
      - `queueId` string, required
      - `headers` object[]
        - `name` string
        - `value` string
      - `enveloped` boolean, nullable
      - `format` string
  - AmqpExternalRulePost
    - `status` string
    - `ruleType` 'amqp/external', required
    - `requestMode` string, required
    - `source` RuleSource, required
      - `channelFilter` string, required
      - `type` string, required
    - `target` object, required
      - `url` string, required
      - `routingKey` string, required
      - `exchange` string
      - `mandatoryRoute` boolean, required
      - `persistentMessages` boolean, required
      - `messageTtl` integer
      - `headers` object[]
        - `name` string
        - `value` string
      - `enveloped` boolean, nullable
      - `format` string
  - KafkaRulePost
    - `status` string
    - `ruleType` 'kafka', required
    - `requestMode` string, required
    - `source` RuleSource, required
      - `channelFilter` string, required
      - `type` string, required
    - `target` object, required
      - `routingKey` string, required
      - `brokers` string[], required
      - `auth` object, required
        - `sasl` object
          - `mechanism` 'plain' | 'scram-sha-256' | 'scram-sha-512'
          - `username` string
          - `password` string
      - `enveloped` boolean, nullable
      - `format` string
  - PulsarRulePost
    - `status` string
    - `ruleType` 'pulsar', required
    - `requestMode` string, required
    - `source` RuleSource, required
      - `channelFilter` string, required
      - `type` string, required
    - `target` object, required
      - `routingKey` string
      - `topic` string, required
      - `serviceUrl` string, required
      - `tlsTrustCerts` string[], nullable
      - `authentication` PulsarTokenAuth, required
        - `authenticationMode` 'token', required
        - `token` string, required
      - `enveloped` boolean, nullable
      - `format` string
  - IngressPostgresOutboxRulePost
    - `status` string
    - `ruleType` 'ingress-postgres-outbox', required
    - `target` object, required
      - `url` string, required
      - `outboxTableSchema` string, required
      - `outboxTableName` string, required
      - `nodesTableSchema` string, required
      - `nodesTableName` string, required
      - `sslMode` 'prefer' | 'require' | 'verify-ca' | 'verify-full', required
      - `sslRootCert` string, nullable
      - `primarySite` string, required
      - `provisionedCapacity` integer
  - IngressMongodbRulePost
    - `status` string
    - `ruleType` 'ingress/mongodb', required
    - `target` object, required
      - `url` string, required
      - `watch` 'COLLECTION'
      - `database` string, required
      - `collection` string, required
      - `pipeline` string, required
      - `fullDocument` 'updateLookup' | 'whenAvailable' | 'off'
      - `fullDocumentBeforeChange` 'whenAvailable' | 'off'
      - `primarySite` string, required
      - `provisionedCapacity` integer
  - HiveTextModelOnlyRulePost
    - `status` string
    - `ruleType` 'hive/text-model-only', required
    - `beforePublishConfig` object, required
      - `retryTimeout` integer, required
      - `maxRetries` integer, required
      - `failedAction` 'REJECT' | 'PUBLISH', required
      - `tooManyRequestsAction` 'RETRY' | 'FAIL', required
    - `chatRoomFilter` string
    - `invocationMode` 'BEFORE_PUBLISH', required
    - `source` ChatMessageRuleSource
      - `type` 'chat.message', required
    - `target` object, required
      - `apiKey` string, required
      - `modelUrl` string
      - `thresholds` object
  - HiveDashboardRulePost
    - `status` string
    - `ruleType` 'hive/dashboard', required
    - `invocationMode` 'AFTER_PUBLISH', required
    - `chatRoomFilter` string
    - `source` ChatMessageRuleSource
      - `type` 'chat.message', required
    - `target` object, required
      - `apiKey` string, required
      - `checkWatchLists` boolean, nullable
  - BodyguardTextModerationRulePost
    - `status` string
    - `ruleType` 'bodyguard/text-moderation', required
    - `beforePublishConfig` object, required
      - `retryTimeout` integer, required
      - `maxRetries` integer, required
      - `failedAction` 'REJECT' | 'PUBLISH', required
      - `tooManyRequestsAction` 'RETRY' | 'FAIL', required
    - `invocationMode` 'BEFORE_PUBLISH', required
    - `chatRoomFilter` string
    - `source` ChatMessageRuleSource
      - `type` 'chat.message', required
    - `target` object, required
      - `apiKey` string, required
      - `channelId` string
      - `apiUrl` string
      - `defaultLanguage` string
  - TisaneTextModerationRulePost
    - `status` string
    - `ruleType` 'tisane/text-moderation', required
    - `beforePublishConfig` object, required
      - `retryTimeout` integer, required
      - `maxRetries` integer, required
      - `failedAction` 'REJECT' | 'PUBLISH', required
      - `tooManyRequestsAction` 'RETRY' | 'FAIL', required
    - `invocationMode` 'BEFORE_PUBLISH', required
    - `chatRoomFilter` string
    - `target` object, required
      - `apiKey` string, required
      - `modelUrl` string
      - `thresholds` object
      - `defaultLanguage` string, required
    - `source` ChatMessageRuleSource
      - `type` 'chat.message', required
  - AzureTextModerationRulePost
    - `status` string
    - `ruleType` 'azure/text-moderation', required
    - `beforePublishConfig` object, required
      - `retryTimeout` integer, required
      - `maxRetries` integer, required
      - `failedAction` 'REJECT' | 'PUBLISH', required
      - `tooManyRequestsAction` 'RETRY' | 'FAIL', required
    - `invocationMode` 'BEFORE_PUBLISH', required
    - `chatRoomFilter` string
    - `target` object, required
      - `apiKey` string, required
      - `endpoint` string, required
      - `thresholds` object
    - `source` ChatMessageRuleSource
      - `type` 'chat.message', required

## Response `201`

Integration Rule created

- union
  - HttpRuleResponse
    - `id` string
    - `appId` string
    - `version` string
    - `status` string
    - `created` number
    - `modified` number
    - `_links` object, nullable
    - `ruleType` 'http', required
    - `requestMode` string, required
    - `source` RuleSource, required
      - `channelFilter` string, required
      - `type` string, required
    - `target` object, required
      - `url` string, required
      - `headers` object[]
        - `name` string
        - `value` string
      - `signingKeyId` string, nullable
      - `enveloped` boolean, nullable
      - `format` string, required
  - IftttRuleResponse
    - `status` string
    - `ruleType` 'http/ifttt', required
    - `requestMode` string, required
    - `source` RuleSource, required
      - `channelFilter` string, required
      - `type` string, required
    - `target` object, required
      - `webhookKey` string, required
      - `eventName` string, required
    - `id` string
    - `appId` string
    - `version` string
    - `created` number
    - `modified` number
    - `_links` object, nullable
  - ZapierRuleResponse
    - `id` string
    - `appId` string
    - `version` string
    - `status` string
    - `created` number
    - `modified` number
    - `_links` object, nullable
    - `ruleType` 'http/zapier', required
    - `requestMode` string, required
    - `source` RuleSource, required
      - `channelFilter` string, required
      - `type` string, required
    - `target` object, required
      - `url` string, required
      - `headers` object[]
        - `name` string
        - `value` string
      - `signingKeyId` string, nullable
  - CloudflareWorkerRuleResponse
    - `id` string
    - `appId` string
    - `version` string
    - `status` string
    - `created` number
    - `modified` number
    - `_links` object, nullable
    - `ruleType` 'http/cloudflare-worker', required
    - `requestMode` string, required
    - `source` RuleSource, required
      - `channelFilter` string, required
      - `type` string, required
    - `target` object, required
      - `url` string, required
      - `headers` object[]
        - `name` string
        - `value` string
      - `signingKeyId` string, nullable
  - AzureFunctionRuleResponse
    - `id` string
    - `appId` string
    - `version` string
    - `status` string
    - `created` number
    - `modified` number
    - `_links` object, nullable
    - `ruleType` 'http/azure-function', required
    - `requestMode` string, required
    - `source` RuleSource, required
      - `channelFilter` string, required
      - `type` string, required
    - `target` object, required
      - `azureAppId` string, required
      - `azureFunctionName` string, required
      - `headers` object[]
        - `name` string
        - `value` string
      - `signingKeyId` string, nullable
      - `enveloped` boolean, nullable
      - `format` string
  - GoogleCloudFunctionRuleResponse
    - `id` string
    - `appId` string
    - `version` string
    - `status` string
    - `created` number
    - `modified` number
    - `_links` object, nullable
    - `ruleType` 'http/google-cloud-function', required
    - `requestMode` string, required
    - `source` RuleSource, required
      - `channelFilter` string, required
      - `type` string, required
    - `target` object, required
      - `region` string, required
      - `projectId` string, required
      - `functionName` string, required
      - `headers` object[]
        - `name` string
        - `value` string
      - `signingKeyId` string, nullable
      - `enveloped` boolean, nullable
      - `format` string
  - AwsLambdaRuleResponse
    - `id` string
    - `appId` string
    - `version` string
    - `status` string
    - `created` number
    - `modified` number
    - `_links` object, nullable
    - `ruleType` 'aws/lambda', required
    - `requestMode` string, required
    - `source` RuleSource, required
      - `channelFilter` string, required
      - `type` string, required
    - `target` object, required
      - `region` string, required
      - `functionName` string, required
      - `authentication` union, required
        - AwsAccessKeysResponse
          - `authenticationMode` 'credentials'
          - `accessKeyId` string
        - AwsAssumeRole
          - `authenticationMode` 'assumeRole'
          - `assumeRoleArn` string, required
      - `enveloped` boolean, nullable
      - `format` string
  - AwsKinesisRuleResponse
    - `id` string
    - `appId` string
    - `version` string
    - `status` string
    - `created` number
    - `modified` number
    - `_links` object, nullable
    - `ruleType` 'aws/kinesis', required
    - `requestMode` string, required
    - `source` RuleSource, required
      - `channelFilter` string, required
      - `type` string, required
    - `target` object, required
      - `region` string, required
      - `streamName` string, required
      - `partitionKey` string, required
      - `authentication` union, required
        - AwsAccessKeysResponse
          - `authenticationMode` 'credentials'
          - `accessKeyId` string
        - AwsAssumeRole
          - `authenticationMode` 'assumeRole'
          - `assumeRoleArn` string, required
      - `enveloped` boolean, nullable
      - `format` string, required
  - AwsSqsRuleResponse
    - `id` string
    - `appId` string
    - `version` string
    - `status` string
    - `created` number
    - `modified` number
    - `_links` object, nullable
    - `ruleType` 'aws/sqs', required
    - `requestMode` string, required
    - `source` RuleSource, required
      - `channelFilter` string, required
      - `type` string, required
    - `target` object, required
      - `region` string, required
      - `awsAccountId` string, required
      - `queueName` string, required
      - `authentication` union, required
        - AwsAccessKeysResponse
          - `authenticationMode` 'credentials'
          - `accessKeyId` string
        - AwsAssumeRole
          - `authenticationMode` 'assumeRole'
          - `assumeRoleArn` string, required
      - `enveloped` boolean, nullable
      - `format` string
  - BeforePublishAwsLambdaRuleResponse
    - `id` string
    - `appId` string
    - `version` string
    - `status` string
    - `created` number
    - `modified` number
    - `_links` object, nullable
    - `ruleType` 'aws/lambda/before-publish', required
    - `source` ChatMessageRuleSource
      - `type` 'chat.message', required
    - `invocationMode` 'BEFORE_PUBLISH', required
    - `beforePublishConfig` object, required
      - `retryTimeout` integer, required
      - `maxRetries` integer, required
      - `failedAction` 'REJECT' | 'PUBLISH', required
      - `tooManyRequestsAction` 'RETRY' | 'FAIL', required
    - `chatRoomFilter` string
    - `target` object, required
      - `region` string, required
      - `functionName` string, required
      - `authentication` union, required
        - AwsAccessKeysResponse
          - `authenticationMode` 'credentials'
          - `accessKeyId` string
        - AwsAssumeRole
          - `authenticationMode` 'assumeRole'
          - `assumeRoleArn` string, required
  - BeforePublishWebhookRuleResponse
    - `id` string
    - `appId` string
    - `version` string
    - `status` string
    - `created` number
    - `modified` number
    - `_links` object, nullable
    - `ruleType` 'http/before-publish', required
    - `source` ChatMessageRuleSource
      - `type` 'chat.message', required
    - `invocationMode` 'BEFORE_PUBLISH', required
    - `beforePublishConfig` object, required
      - `retryTimeout` integer, required
      - `maxRetries` integer, required
      - `failedAction` 'REJECT' | 'PUBLISH', required
      - `tooManyRequestsAction` 'RETRY' | 'FAIL', required
    - `chatRoomFilter` string
    - `target` object, required
      - `url` string, required
      - `headers` object[]
        - `name` string
        - `value` string
      - `format` string
  - AmqpRuleResponse
    - `id` string
    - `appId` string
    - `version` string
    - `status` string
    - `created` number
    - `modified` number
    - `_links` object, nullable
    - `ruleType` 'amqp', required
    - `requestMode` string, required
    - `source` RuleSource, required
      - `channelFilter` string, required
      - `type` string, required
    - `target` object, required
      - `queueId` string, required
      - `headers` object[]
        - `name` string
        - `value` string
      - `enveloped` boolean, nullable
      - `format` string
  - AmqpExternalRuleResponse
    - `id` string
    - `appId` string
    - `version` string
    - `status` string
    - `created` number
    - `modified` number
    - `_links` object, nullable
    - `ruleType` 'amqp/external', required
    - `requestMode` string, required
    - `source` RuleSource, required
      - `channelFilter` string, required
      - `type` string, required
    - `target` object, required
      - `url` string, required
      - `routingKey` string, required
      - `exchange` string
      - `mandatoryRoute` boolean, required
      - `persistentMessages` boolean, required
      - `messageTtl` integer
      - `headers` object[]
        - `name` string
        - `value` string
      - `enveloped` boolean, nullable
      - `format` string
  - KafkaRuleResponse
    - `id` string
    - `appId` string
    - `version` string
    - `status` string
    - `created` number
    - `modified` number
    - `_links` object, nullable
    - `ruleType` 'kafka', required
    - `requestMode` string, required
    - `source` RuleSource, required
      - `channelFilter` string, required
      - `type` string, required
    - `target` object, required
      - `routingKey` string, required
      - `brokers` string[], required
      - `auth` object, required
        - `sasl` object
          - `mechanism` 'plain' | 'scram-sha-256' | 'scram-sha-512'
          - `username` string
          - `password` string
      - `enveloped` boolean, nullable
      - `format` string
  - PulsarRuleResponse
    - `id` string
    - `appId` string
    - `version` string
    - `status` string
    - `created` number
    - `modified` number
    - `_links` object, nullable
    - `ruleType` 'pulsar', required
    - `requestMode` string, required
    - `source` RuleSource, required
      - `channelFilter` string, required
      - `type` string, required
    - `target` object, required
      - `routingKey` string
      - `topic` string
      - `serviceUrl` string
      - `tlsTrustCerts` string[], nullable
      - `authentication` PulsarTokenAuth
        - `authenticationMode` 'token', required
        - `token` string, required
      - `enveloped` boolean, nullable
      - `format` string
  - IngressPostgresOutboxRuleResponse
    - `id` string
    - `appId` string
    - `version` string
    - `status` string
    - `created` number
    - `modified` number
    - `_links` object, nullable
    - `ruleType` 'ingress-postgres-outbox', required
    - `target` object, required
      - `url` string
      - `outboxTableSchema` string
      - `outboxTableName` string
      - `nodesTableSchema` string
      - `nodesTableName` string
      - `sslMode` 'prefer' | 'require' | 'verify-ca' | 'verify-full'
      - `sslRootCert` string, nullable
      - `primarySite` string
      - `provisionedCapacity` integer
  - IngressMongodbRuleResponse
    - `id` string
    - `appId` string
    - `version` string
    - `status` string
    - `created` number
    - `modified` number
    - `_links` object, nullable
    - `ruleType` 'ingress/mongodb', required
    - `target` object, required
      - `watch` 'COLLECTION'
      - `url` string
      - `collection` string
      - `database` string
      - `pipeline` string
      - `fullDocument` 'updateLookup' | 'whenAvailable' | 'off'
      - `fullDocumentBeforeChange` 'whenAvailable' | 'off'
      - `primarySite` string
      - `provisionedCapacity` integer
  - HiveTextModelOnlyRuleResponse
    - `id` string
    - `appId` string
    - `version` string
    - `status` string
    - `created` number
    - `modified` number
    - `_links` object, nullable
    - `ruleType` 'hive/text-model-only', required
    - `source` ChatMessageRuleSource, required
      - `type` 'chat.message', required
    - `beforePublishConfig` object, required
      - `retryTimeout` integer, required
      - `maxRetries` integer, required
      - `failedAction` 'REJECT' | 'PUBLISH', required
      - `tooManyRequestsAction` 'RETRY' | 'FAIL', required
    - `chatRoomFilter` string
    - `invocationMode` 'BEFORE_PUBLISH', required
    - `target` object, required
      - `apiKey` string, required
      - `modelUrl` string
      - `thresholds` object
  - HiveDashboardRuleResponse
    - `id` string
    - `appId` string
    - `version` string
    - `status` string
    - `created` number
    - `modified` number
    - `_links` object, nullable
    - `ruleType` 'hive/dashboard', required
    - `source` ChatMessageRuleSource
      - `type` 'chat.message', required
    - `invocationMode` 'AFTER_PUBLISH', required
    - `chatRoomFilter` string
    - `target` object, required
      - `apiKey` string, required
      - `checkWatchLists` boolean, nullable
  - BodyguardTextModerationRuleResponse
    - `id` string
    - `appId` string
    - `version` string
    - `status` string
    - `created` number
    - `modified` number
    - `_links` object, nullable
    - `ruleType` 'bodyguard/text-moderation', required
    - `source` ChatMessageRuleSource, required
      - `type` 'chat.message', required
    - `invocationMode` 'BEFORE_PUBLISH', required
    - `beforePublishConfig` object, required
      - `retryTimeout` integer, required
      - `maxRetries` integer, required
      - `failedAction` 'REJECT' | 'PUBLISH', required
      - `tooManyRequestsAction` 'RETRY' | 'FAIL', required
    - `chatRoomFilter` string
    - `target` object, required
      - `apiKey` string, required
      - `apiUrl` string
      - `channelId` string
      - `defaultLanguage` string
  - TisaneTextModerationRuleResponse
    - `id` string
    - `appId` string
    - `version` string
    - `status` string
    - `created` number
    - `modified` number
    - `_links` object, nullable
    - `ruleType` 'tisane/text-moderation', required
    - `source` ChatMessageRuleSource, required
      - `type` 'chat.message', required
    - `beforePublishConfig` object, required
      - `retryTimeout` integer, required
      - `maxRetries` integer, required
      - `failedAction` 'REJECT' | 'PUBLISH', required
      - `tooManyRequestsAction` 'RETRY' | 'FAIL', required
    - `chatRoomFilter` string
    - `invocationMode` 'BEFORE_PUBLISH', required
    - `target` object, required
      - `apiKey` string, required
      - `modelUrl` string
      - `thresholds` object
      - `defaultLanguage` string, required
  - AzureTextModerationRuleResponse
    - `id` string
    - `appId` string
    - `version` string
    - `status` string
    - `created` number
    - `modified` number
    - `_links` object, nullable
    - `ruleType` 'azure/text-moderation', required
    - `source` ChatMessageRuleSource, required
      - `type` 'chat.message', required
    - `beforePublishConfig` object, required
      - `retryTimeout` integer, required
      - `maxRetries` integer, required
      - `failedAction` 'REJECT' | 'PUBLISH', required
      - `tooManyRequestsAction` 'RETRY' | 'FAIL', required
    - `chatRoomFilter` string
    - `invocationMode` 'BEFORE_PUBLISH', required
    - `target` object, required
      - `apiKey` string, required
      - `endpoint` string, required
      - `thresholds` object
  - WebhookRuleResponse
    - `id` string
    - `appId` string
    - `version` string
    - `status` string
    - `created` number
    - `modified` number
    - `_links` object, nullable
    - `ruleType` 'webhook', required
    - `requestMode` string, required
    - `source` RuleSource, required
      - `channelFilter` string, required
      - `type` string, required
    - `target` object, required
      - `url` string, required
  - UnsupportedRuleResponse
    - `id` string
    - `appId` string
    - `version` string
    - `status` string
    - `created` number
    - `modified` number
    - `_links` object, nullable
    - `ruleType` 'unsupported', required
    - `requestMode` string, required
    - `source` RuleSource, required
      - `channelFilter` string, required
      - `type` string, required
    - `target` object, required
      - `url` string, required

## Other responses

- `400` — Bad request
- `401` — Authentication failed
- `403` — Forbidden
- `404` — App not found
- `422` — Invalid request
- `500` — Internal server error
- `504` — Gateway timeout

---

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