import requests
url = "https://platform.ankra.app/api/v1/org/ai-tickets/{ticket_id}/sub-tickets"
payload = { "title": "<string>" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({title: '<string>'})
};
fetch('https://platform.ankra.app/api/v1/org/ai-tickets/{ticket_id}/sub-tickets', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));curl --request POST \
--url https://platform.ankra.app/api/v1/org/ai-tickets/{ticket_id}/sub-tickets \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"title": "<string>"
}
'{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"ticket_number": 123,
"title": "<string>",
"body": "<string>",
"kind": "<string>",
"status": "<string>",
"priority": "<string>",
"assignee_agent_task_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"assignee_agent_name": "<string>",
"assignee_user_id": "<string>",
"assignee_user_email": "<string>",
"assignee_user_name": "<string>",
"parent_ticket_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"parent_ticket_number": 123,
"sub_ticket_count": 123,
"open_sub_ticket_count": 123,
"cluster_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"cluster_name": "<string>",
"cluster_archived": true,
"alert_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"source_kind": "<string>",
"source_id": "<string>",
"plan_document": "<string>",
"plan_status": "<string>",
"workspace_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"slack_channel_id": "<string>",
"slack_thread_ts": "<string>",
"teams_conversation_id": "<string>",
"labels": [
"<string>"
],
"staffing": "auto",
"due_at": "2023-11-07T05:31:56Z",
"created_by_kind": "<string>",
"created_by": "<string>",
"resolution": "<string>",
"recurrence_count": 123,
"last_event_sequence": 123,
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"closed_at": "2023-11-07T05:31:56Z",
"status_changed_at": "2023-11-07T05:31:56Z",
"decision_request": {
"prompt": "<string>",
"options": [
{
"key": "<string>",
"title": "<string>",
"summary": "<string>",
"recommended": true,
"action_class": "none"
}
]
}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Create Ai Sub Ticket
import requests
url = "https://platform.ankra.app/api/v1/org/ai-tickets/{ticket_id}/sub-tickets"
payload = { "title": "<string>" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({title: '<string>'})
};
fetch('https://platform.ankra.app/api/v1/org/ai-tickets/{ticket_id}/sub-tickets', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));curl --request POST \
--url https://platform.ankra.app/api/v1/org/ai-tickets/{ticket_id}/sub-tickets \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"title": "<string>"
}
'{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"ticket_number": 123,
"title": "<string>",
"body": "<string>",
"kind": "<string>",
"status": "<string>",
"priority": "<string>",
"assignee_agent_task_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"assignee_agent_name": "<string>",
"assignee_user_id": "<string>",
"assignee_user_email": "<string>",
"assignee_user_name": "<string>",
"parent_ticket_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"parent_ticket_number": 123,
"sub_ticket_count": 123,
"open_sub_ticket_count": 123,
"cluster_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"cluster_name": "<string>",
"cluster_archived": true,
"alert_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"source_kind": "<string>",
"source_id": "<string>",
"plan_document": "<string>",
"plan_status": "<string>",
"workspace_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"slack_channel_id": "<string>",
"slack_thread_ts": "<string>",
"teams_conversation_id": "<string>",
"labels": [
"<string>"
],
"staffing": "auto",
"due_at": "2023-11-07T05:31:56Z",
"created_by_kind": "<string>",
"created_by": "<string>",
"resolution": "<string>",
"recurrence_count": 123,
"last_event_sequence": 123,
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"closed_at": "2023-11-07T05:31:56Z",
"status_changed_at": "2023-11-07T05:31:56Z",
"decision_request": {
"prompt": "<string>",
"options": [
{
"key": "<string>",
"title": "<string>",
"summary": "<string>",
"recommended": true,
"action_class": "none"
}
]
}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Body
'auto' (default) lets the AI team staff, mirror and escalate the ticket. 'manual' files it as human-owned: no agent is assigned, it is not mirrored into the bound Slack/Teams thread, and it is never escalated as stale. A sub-ticket inherits its parent's staffing when this is omitted.
auto, manual Optional due date as an RFC 3339 timestamp.
Optional dedupe-key half; one of 'alert', 'external'. Must be provided together with source_id.
Optional dedupe-key half (at most 200 characters). While a live ticket exists for the same (source_kind, source_id), re-filing bumps its recurrence and returns it with status 200.
Optional idempotency key (max 200 characters); the body equivalent of the Idempotency-Key header.
Response
Successful Response
Who works this ticket: 'auto' (the AI team may staff it, mirror it into the organisation's bound Slack/Teams thread, and escalate it when stale) or 'manual' (a human owns it; all three automatic lanes skip it).
auto, manual Advisory due date. No loop reads it; it is metadata for the humans on the board.
Set while the ticket is blocked on a choice the agent offered; null otherwise. Answer it with POST /ai-tickets/{ticket_id}/decision.
Show child attributes
Show child attributes