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"
}Create a new training scenario. Use type “BEHAVIORAL” for always-active instructions (tone, guardrails) or “SCENARIO_SPECIFIC” (default) for question-triggered scenarios.
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"
}Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
The scenario title or trigger phrase
The instruction body — how the AI should respond
BEHAVIORAL (always active) or SCENARIO_SPECIFIC (semantic match, default)
BEHAVIORAL, SCENARIO_SPECIFIC If true, saved as draft and not used by the AI
Directory ID to organize into
Limit to specific channels (empty = all)
web, email, phone_voice, slack, sms, whatsapp, instagram, messenger, api, web_voice Limit to specific segments (empty = all)
Arbitrary key-value metadata for external integrations
Show child attributes
Default Response
Unique training ID
The scenario title or trigger phrase (last published version)
The instruction body — how the AI should respond (last published version)
Draft title being edited (null if no draft exists). Use draft_title ?? title.
Draft body being edited (null if no draft exists). Use draft_content ?? content.
BEHAVIORAL (always active) or SCENARIO_SPECIFIC (semantic match)
BEHAVIORAL, SCENARIO_SPECIFIC Draft trainings are saved but not used by the AI
Directory this training belongs to
Channels this applies to (empty = all)
web, email, phone_voice, slack, sms, whatsapp, instagram, messenger, api, web_voice Contact segments this applies to (empty = all)
Active published version number (null if unpublished draft)
Arbitrary key-value metadata for external integrations
Show child attributes
When the current version was published
Was this page helpful?