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>",
  "is_draft": true,
  "directory_id": "<string>",
  "restricted_to_channels": [],
  "restricted_to_segments": [
    "<string>"
  ],
  "metadata": {},
  "start_time": "2023-11-07T05:31:56Z",
  "end_time": "2023-11-07T05:31:56Z"
}
'
{
  "id": "<string>",
  "title": "<string>",
  "content": "<string>",
  "draft_title": "<string>",
  "draft_content": "<string>",
  "is_draft": true,
  "directory_id": "<string>",
  "restricted_to_channels": [],
  "restricted_to_segments": [
    "<string>"
  ],
  "current_version": 123,
  "metadata": {},
  "published_at": "2023-11-07T05:31:56Z",
  "start_time": "2023-11-07T05:31:56Z",
  "end_time": "2023-11-07T05:31:56Z",
  "created_at": "2023-11-07T05:31:56Z",
  "updated_at": "2023-11-07T05:31:56Z"
}

Documentation Index

Fetch the complete documentation index at: https://docs.open.cx/llms.txt

Use this file to discover all available pages before exploring further.

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

start_time
string<date-time> | null

ISO 8601 instant (UTC) when the AI may start using this instruction. Null clears the start bound.

Pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
end_time
string<date-time> | null

ISO 8601 instant (UTC) when the AI stops using this instruction. Null clears the end bound.

Pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$

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

start_time
string<date-time> | null
required

Active window start (UTC). Null = no start bound.

end_time
string<date-time> | null
required

Active window end (UTC). Null = no end bound.

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