Skip to content
Convor
Convor Docs
API ReferenceAutomation Rules

Create a conversation rule

Append a rule to the project order with an optional reply and any supported actions.

POST/api/automation-rules

Append a rule to the project order with an optional reply and any supported actions. An automated-support entitlement is required for replies; assignment requires workflow automation.

Endpoint requirements

Credentials
Use either Bearer API key or X-API-Key header.
Required scope
automation-rules:write
Module
Automation & API module (api_access)
Organization and site scope
single-project
Retry behavior
Convergent write: Retrying leaves the resource in the same resulting state. If the first request succeeded, a later retry may return conflict or not found because the change has already taken effect.

Header Parameters

X-Project-Id?|

DA-4035: selects the active site (project) for project-scoped operations. Accepts a site UUID, or the literal all to aggregate across every accessible site on read-only aggregate routes (single-or-all-read). Mutations and single-site routes reject all. Path-owned project routes (/api/projects/{projectId}/…) resolve the site from the URL and ignore this header. Conflicting selectors across header/query/body/path return PROJECT_CONTEXT_CONFLICT (400); an archived site returns PROJECT_ARCHIVED (410).

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Request body accepted by this operation.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

{  "id": "11111111-1111-4111-8111-111111111111",  "orgId": "11111111-1111-4111-8111-111111111111",  "name": "Example name",  "enabled": true,  "createdBySystem": true,  "priority": 1,  "intent": "general",  "channels": [    "widget"  ],  "accounts": {},  "timing": {    "timezone": "Europe/Warsaw",    "startsAt": "2026-08-04T10:00:00.000Z",    "endsAt": "2026-08-04T10:00:00.000Z",    "schedule": null,    "cooldownHours": 1  },  "conditions": {    "type": "all",    "conditions": [      {        "type": "conversation_event",        "value": "visitor_message"      }    ]  },  "response": {    "type": "text",    "quickReplies": [],    "collectFields": []  },  "actions": [    {      "type": "add_tag",      "tag": "example"    }  ],  "translations": [    {      "locale": "en",      "status": "draft",      "sourceLocale": "en",      "machineTranslatedAt": "2026-08-04T10:00:00.000Z",      "reviewedAt": "2026-08-04T10:00:00.000Z",      "reviewedBy": "example",      "createdAt": "2026-08-04T10:00:00.000Z",      "updatedAt": "2026-08-04T10:00:00.000Z",      "id": "11111111-1111-4111-8111-111111111111",      "message": "Example customer-support message.",      "handoffMessage": "Example customer-support message.",      "handoffOfflineMessage": "Example customer-support message.",      "externalFallbackMessage": "Example customer-support message.",      "quickReplyLabels": {},      "collectFieldCopy": {}    }  ],  "createdAt": "2026-08-04T10:00:00.000Z",  "updatedAt": "2026-08-04T10:00:00.000Z"}

Request examples

curl

curl --request POST \
  'https://api.convor.io/api/automation-rules' \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer convor_sk_...' \
  --header 'Content-Type: application/json' \
  --data '{
  "name": "Urgent invoice questions",
  "conditions": {
    "type": "all",
    "conditions": [
      {
        "type": "keyword",
        "value": "invoice"
      }
    ]
  },
  "response": null,
  "actions": [
    {
      "type": "set_priority",
      "priority": "urgent"
    }
  ],
  "translations": []
}'

JavaScript

const response = await fetch("https://api.convor.io/api/automation-rules", {
  method: "POST",
  headers: {
    "Accept": "application/json",
    "Authorization": "Bearer convor_sk_...",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    "name": "Urgent invoice questions",
    "conditions": {
      "type": "all",
      "conditions": [
        {
          "type": "keyword",
          "value": "invoice"
        }
      ]
    },
    "response": null,
    "actions": [
      {
        "type": "set_priority",
        "priority": "urgent"
      }
    ],
    "translations": []
  }),
});

const contentType = response.headers.get("content-type") ?? "";
const data = response.status === 204
  ? null
  : contentType.includes("json")
    ? await response.json()
    : contentType.startsWith("text/")
      ? await response.text()
      : await response.blob();

if (!response.ok) {
  const message = typeof data === "object" && data !== null
    && "error" in data && typeof data.error === "object"
    && data.error !== null && "message" in data.error
      ? String(data.error.message)
      : "Convor API request failed (" + response.status + ")";
  throw new Error(message);
}

console.log(data);

Was this page helpful?

On this page