Skip to main content
POST
/
training
Create a training
curl --request POST \
  --url https://api.open.cx/training \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "title": "<string>",
  "content": "<string>",
  "type": "BEHAVIORAL",
  "is_draft": true,
  "directory_id": "<string>",
  "restricted_to_channels": [
    "web"
  ],
  "restricted_to_segments": [
    "<string>"
  ],
  "metadata": {}
}
'
{
  "id": "<string>",
  "title": "<string>",
  "content": "<string>",
  "draft_title": "<string>",
  "draft_content": "<string>",
  "type": "BEHAVIORAL",
  "is_draft": true,
  "directory_id": "<string>",
  "restricted_to_channels": [
    "web"
  ],
  "restricted_to_segments": [
    "<string>"
  ],
  "current_version": 123,
  "metadata": {},
  "published_at": "2023-11-07T05:31:56Z",
  "created_at": "2023-11-07T05:31:56Z",
  "updated_at": "2023-11-07T05:31:56Z"
}

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

application/json
title
string
required

The scenario title or trigger phrase

content
string
required

The instruction body — how the AI should respond

type
enum<string>

BEHAVIORAL (always active) or SCENARIO_SPECIFIC (semantic match, default)

Available options:
BEHAVIORAL,
SCENARIO_SPECIFIC
is_draft
boolean

If true, saved as draft and not used by the AI

directory_id
string | null

Directory ID to organize into

restricted_to_channels
enum<string>[]

Limit to specific channels (empty = all)

Available options:
web,
email,
phone_voice,
slack,
sms,
whatsapp,
instagram,
messenger,
api,
web_voice
restricted_to_segments
string[]

Limit to specific segments (empty = all)

metadata
object

Arbitrary key-value metadata for external integrations

Response

Default Response

id
string
required

Unique training ID

title
string
required

The scenario title or trigger phrase (last published version)

content
string
required

The instruction body — how the AI should respond (last published version)

draft_title
string | null
required

Draft title being edited (null if no draft exists). Use draft_title ?? title.

draft_content
string | null
required

Draft body being edited (null if no draft exists). Use draft_content ?? content.

type
enum<string>
required

BEHAVIORAL (always active) or SCENARIO_SPECIFIC (semantic match)

Available options:
BEHAVIORAL,
SCENARIO_SPECIFIC
is_draft
boolean
required

Draft trainings are saved but not used by the AI

directory_id
string | null
required

Directory this training belongs to

restricted_to_channels
enum<string>[]
required

Channels this applies to (empty = all)

Available options:
web,
email,
phone_voice,
slack,
sms,
whatsapp,
instagram,
messenger,
api,
web_voice
restricted_to_segments
string[]
required

Contact segments this applies to (empty = all)

current_version
number | null
required

Active published version number (null if unpublished draft)

metadata
object
required

Arbitrary key-value metadata for external integrations

published_at
string<date-time> | null
required

When the current version was published

created_at
string<date-time>
required
updated_at
string<date-time>
required