AurionAI Docs

Conversations

Manage omnichannel conversations — email, chat, WhatsApp, and voice — via the Aurion API.

Conversations

The Conversations API (v2) provides a unified interface for managing support conversations across all channels — email, chat, WhatsApp, and voice. This is the primary API for the Aurion CS helpdesk platform.

List Conversations

cURL
curl "https://apps.aurionai.net/api/v2/conversations?status=open&limit=10" \
  -H "X-API-Key: ak_live_xxxx"
Python
import requests

response = requests.get(
    "https://apps.aurionai.net/api/v2/conversations",
    headers={"X-API-Key": "ak_live_xxxx"},
    params={"status": "open", "limit": 10},
)
conversations = response.json()
TypeScript
const response = await fetch(
  "https://apps.aurionai.net/api/v2/conversations?status=open&limit=10",
  {
    headers: { "X-API-Key": "ak_live_xxxx" },
  }
);
const conversations = await response.json();

Response:

{
  "data": [
    {
      "id": "conv_abc123",
      "subject": "Cannot access email",
      "status": "open",
      "priority": "high",
      "channel": "email",
      "contact_id": "ct_456",
      "contact_name": "Jane Smith",
      "assigned_team_id": "team_789",
      "assigned_agent_id": "agent_012",
      "tags": ["email", "access"],
      "created_at": "2026-03-08T09:15:00Z",
      "last_activity_at": "2026-03-08T10:30:00Z"
    }
  ],
  "total": 48,
  "limit": 10,
  "offset": 0
}

Query Parameters:

ParameterTypeDescription
statusstringopen, pending, resolved, closed
prioritystringlow, medium, high, urgent
channelstringemail, chat, whatsapp, voice, widget
assigned_team_idstringFilter by team
assigned_agent_idstringFilter by agent
contact_idstringFilter by contact
tagsstringComma-separated tag filter
searchstringFull-text search in subject and messages
limitintegerResults per page (default: 25, max: 100)
offsetintegerNumber of results to skip

Get Conversation

curl "https://apps.aurionai.net/api/v2/conversations/conv_abc123" \
  -H "X-API-Key: ak_live_xxxx"

Create Conversation

curl -X POST "https://apps.aurionai.net/api/v2/conversations" \
  -H "X-API-Key: ak_live_xxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "subject": "Password reset request",
    "contact_id": "ct_456",
    "channel": "email",
    "priority": "medium",
    "message": {
      "body": "I need help resetting my corporate email password.",
      "type": "text"
    }
  }'

Reply to Conversation

curl -X POST "https://apps.aurionai.net/api/v2/conversations/conv_abc123/reply" \
  -H "X-API-Key: ak_live_xxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "body": "I have reset your password. Please check your email for the new credentials.",
    "type": "reply"
  }'

Message Types:

TypeDescription
replyPublic reply visible to the contact
notePrivate internal note (not visible to contact)
forwardForward conversation to external email

Update Conversation

curl -X PATCH "https://apps.aurionai.net/api/v2/conversations/conv_abc123" \
  -H "X-API-Key: ak_live_xxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "status": "resolved",
    "priority": "low",
    "assigned_agent_id": "agent_012",
    "tags": ["resolved", "password"]
  }'

Assign Conversation

curl -X POST "https://apps.aurionai.net/api/v2/conversations/conv_abc123/assign" \
  -H "X-API-Key: ak_live_xxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "team_id": "team_789",
    "agent_id": "agent_012"
  }'

Conversation Lifecycle

open → pending → resolved → closed
  ↑                           |
  └───── reopen ──────────────┘

Channels

ChannelDescription
emailConversations from email channels
chatLive chat widget conversations
whatsappWhatsApp Business conversations
voiceVoice call conversations (linked to call records)
widgetWeb widget conversations

Conversation vs Ticket

  • Conversations are the v2 API for the Aurion CS helpdesk — omnichannel, real-time, with rich threading
  • Tickets are the v1 API that maps to your external ITSM provider (Freshservice, HaloITSM, ServiceNow, JSM)

Both can coexist. Voice calls can create either tickets (ITSM flow) or conversations (CS flow) depending on your configuration.

Search & Filter

Search Conversations

Use the search endpoint for advanced filtering with conditions-based queries.

curl -X POST "https://apps.aurionai.net/api/v2/conversations/search" \
  -H "X-API-Key: ak_live_xxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "match": "all",
    "conditions": [
      { "field": "status", "operator": "is", "value": "open" },
      { "field": "priority", "operator": "includes", "values": ["high", "urgent"] }
    ],
    "search": "email access",
    "sort_by": "updated_at",
    "sort_order": "desc",
    "limit": 25,
    "offset": 0
  }'

Request Body:

FieldTypeDescription
matchstringall (AND) or any (OR) for combining conditions
conditionsarrayFilter conditions (see below)
searchstringFull-text search in subject and messages
sort_bystringSort field (default: updated_at)
sort_orderstringasc or desc (default: desc)
limitintegerResults per page (1-100, default: 50)
offsetintegerNumber of results to skip

Filter Condition:

FieldTypeDescription
fieldstringField to filter on (e.g., status, priority, channel, assigned_agent_id)
operatorstringis, is_not, includes, excludes, contains, does_not_contain, in_the_last, before, after, between
valuestringSingle value for is, is_not, contains, does_not_contain operators
valuesarrayMultiple values for includes, excludes operators

Response: Same format as List Conversations.

Get Filter Options

Returns available filter options for the inbox (statuses, priorities, channels, teams, agents, tags).

curl "https://apps.aurionai.net/api/v2/conversations/filter-options" \
  -H "X-API-Key: ak_live_xxxx"
{
  "statuses": ["open", "pending", "resolved", "closed"],
  "priorities": ["low", "medium", "high", "urgent"],
  "channels": ["email", "chat", "whatsapp", "voice", "widget"],
  "teams": [{ "id": "team_789", "name": "IT Support" }],
  "agents": [{ "id": "agent_012", "name": "John Doe" }],
  "tags": ["email", "access", "password"]
}

Search Tags

Search for existing conversation tags by prefix.

curl "https://apps.aurionai.net/api/v2/conversations/tags/search?q=pass&limit=10" \
  -H "X-API-Key: ak_live_xxxx"

Query Parameters:

ParameterTypeDescription
qstringSearch query (max 120 characters)
limitintegerMax results (1-50, default: 15)
{
  "items": ["password", "password-reset", "passthrough"]
}

Assignment

Unassign Conversation

Remove the current assignee from a conversation.

curl -X POST "https://apps.aurionai.net/api/v2/conversations/conv_abc123/unassign" \
  -H "X-API-Key: ak_live_xxxx"
{
  "status": "unassigned"
}

Reassign Conversation

Reassign a conversation to a different agent or team. If only team_id is provided, the system automatically picks an eligible agent via round-robin routing.

curl -X POST "https://apps.aurionai.net/api/v2/conversations/conv_abc123/reassign" \
  -H "X-API-Key: ak_live_xxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "user_id": "agent_045",
    "team_id": "team_789"
  }'

Request Body:

FieldTypeDescription
user_idstringTarget agent ID (optional; auto-assigned if omitted)
team_idstringTarget team ID (optional)
{
  "assignee_user_id": "agent_045",
  "assignee_team_id": "team_789",
  "routing_reason": "manual_reassignment"
}

Parent-Child Relationships

List Child Conversations

Get all child conversations linked to a parent.

curl "https://apps.aurionai.net/api/v2/conversations/conv_abc123/children" \
  -H "X-API-Key: ak_live_xxxx"
[
  {
    "id": "conv_child_001",
    "subject": "Follow-up: Email access",
    "status": "open",
    "priority": "medium",
    "channel": "email",
    "contact_name": "Jane Smith",
    "created_at": "2026-03-09T14:00:00Z",
    "updated_at": "2026-03-09T15:30:00Z"
  }
]

Set Parent Conversation

Link a conversation as a child of another conversation.

curl -X POST "https://apps.aurionai.net/api/v2/conversations/conv_child_001/parent" \
  -H "X-API-Key: ak_live_xxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "parent_id": "conv_abc123"
  }'

Response: Returns the updated conversation detail.

Activity Export

Export Conversation Activities

Export the full activity log for a conversation as CSV or JSON.

curl "https://apps.aurionai.net/api/v2/conversations/conv_abc123/activities/export?format=csv" \
  -H "X-API-Key: ak_live_xxxx" \
  -o activities.csv

Query Parameters:

ParameterTypeDescription
formatstringcsv or json (default: csv)

Returns a file download with Content-Disposition: attachment.

Linking & Relationships

Get Linked Items

List all conversations linked to this conversation.

curl "https://apps.aurionai.net/api/v2/conversations/conv_abc123/links" \
  -H "X-API-Key: ak_live_xxxx"
[
  {
    "id": "link_001",
    "linked_conversation_id": "conv_def456",
    "link_type": "related",
    "subject": "Printer not working",
    "status": "open",
    "priority": "medium",
    "created_at": "2026-03-08T11:00:00Z"
  }
]

Link Types: related, parent, child, duplicate

Delete a link between two conversations.

curl -X DELETE "https://apps.aurionai.net/api/v2/conversations/conv_abc123/links/link_001" \
  -H "X-API-Key: ak_live_xxxx"
{
  "status": "deleted",
  "id": "link_001"
}

Attachments

Download Attachment

Download an attachment file directly. For S3-stored files, returns a 302 redirect to a presigned URL.

curl "https://apps.aurionai.net/api/v2/conversations/conv_abc123/attachments/att_001/download" \
  -H "X-API-Key: ak_live_xxxx" \
  -o attachment.pdf

Returns the file contents with appropriate Content-Type header. If malware scanning is enabled, files pending scan return 202 Accepted with a Retry-After header, and quarantined files return 410 Gone.

Delete Attachment

Remove an attachment from a conversation. Also deletes the file from storage (S3 or local).

curl -X DELETE "https://apps.aurionai.net/api/v2/conversations/conv_abc123/attachments/att_001" \
  -H "X-API-Key: ak_live_xxxx"
{
  "status": "deleted",
  "id": "att_001"
}

Resolution

Get Resolution

Retrieve the resolution details for a conversation.

curl "https://apps.aurionai.net/api/v2/conversations/conv_abc123/resolution" \
  -H "X-API-Key: ak_live_xxxx"
{
  "id": "res_001",
  "conversation_id": "conv_abc123",
  "root_cause": "Expired Active Directory password",
  "actions_taken": "Reset password and updated group policy",
  "resolution": "User can now access email normally",
  "ai_generated": false
}

Set Resolution

Create or update the resolution for a conversation.

curl -X PUT "https://apps.aurionai.net/api/v2/conversations/conv_abc123/resolution" \
  -H "X-API-Key: ak_live_xxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "root_cause": "Expired Active Directory password",
    "actions_taken": "Reset password and updated group policy",
    "resolution": "User can now access email normally",
    "ai_generated": false
  }'

Request Body:

FieldTypeDescription
root_causestringRoot cause of the issue
actions_takenstringActions taken to resolve
resolutionstringResolution summary
ai_generatedbooleanWhether the resolution was AI-generated (default: false)

Response: Returns the saved resolution object.

Lifecycle Operations

Mark as Spam

Flag a conversation as spam. Removes it from the active inbox.

curl -X POST "https://apps.aurionai.net/api/v2/conversations/conv_abc123/spam" \
  -H "X-API-Key: ak_live_xxxx"
{
  "status": "spam_marked"
}

Unmark Spam

Restore a conversation that was previously flagged as spam.

curl -X POST "https://apps.aurionai.net/api/v2/conversations/conv_abc123/unspam" \
  -H "X-API-Key: ak_live_xxxx"
{
  "status": "spam_unmarked"
}

Delete Conversation

Soft-delete a conversation. Can be restored later.

curl -X DELETE "https://apps.aurionai.net/api/v2/conversations/conv_abc123" \
  -H "X-API-Key: ak_live_xxxx"
{
  "status": "deleted"
}

Restore Conversation

Restore a previously soft-deleted conversation.

curl -X POST "https://apps.aurionai.net/api/v2/conversations/conv_abc123/restore" \
  -H "X-API-Key: ak_live_xxxx"
{
  "status": "restored"
}

Archive Conversation

Move a conversation to the archive. Only conversations that are not already archived, deleted, or spam can be archived.

curl -X POST "https://apps.aurionai.net/api/v2/conversations/conv_abc123/archive" \
  -H "X-API-Key: ak_live_xxxx"
{
  "status": "archived"
}

Unarchive Conversation

Restore a conversation from the archive back to the active inbox.

curl -X POST "https://apps.aurionai.net/api/v2/conversations/conv_abc123/unarchive" \
  -H "X-API-Key: ak_live_xxxx"
{
  "status": "unarchived"
}

Mark as Read

Mark a conversation as read for the current user.

curl -X PATCH "https://apps.aurionai.net/api/v2/conversations/conv_abc123/read" \
  -H "X-API-Key: ak_live_xxxx"
{
  "status": "read"
}

Sharing

Get Shared Conversation

Retrieve a conversation via a share token. No authentication required — the token acts as the access credential.

curl "https://apps.aurionai.net/api/v2/conversations/share/sh_token_abc123"
{
  "id": "conv_abc123",
  "subject": "Cannot access email",
  "channel": "email",
  "status": "open",
  "messages": [
    {
      "id": "msg_001",
      "body": "I need help with my email access.",
      "sender_type": "contact",
      "created_at": "2026-03-08T09:15:00Z"
    }
  ],
  "resolution": null,
  "attachments": [],
  "expires_at": "2026-04-08T09:15:00Z",
  "permission": "view_only"
}

Permissions: view_only (read-only access) or view_and_comment (can add comments).

Returns 410 Gone if the share link has expired, or 404 if the conversation no longer exists.

Add Comment on Shared Conversation

Add a comment to a shared conversation. Only available when the share link permission is view_and_comment.

curl -X POST "https://apps.aurionai.net/api/v2/conversations/share/sh_token_abc123/comments" \
  -H "Content-Type: application/json" \
  -d '{
    "body": "I tried the suggested fix and it worked.",
    "author_name": "Jane Smith"
  }'

Request Body:

FieldTypeDescription
bodystringComment text (1-5000 characters)
author_namestringDisplay name of the commenter (default: Anonymous, max 200 characters)
{
  "id": "msg_shared_001",
  "body": "I tried the suggested fix and it worked.",
  "author_name": "Jane Smith",
  "created_at": "2026-03-08T12:00:00Z"
}

Returns 403 Forbidden if the share link is view-only.

Required Scopes

ScopeEndpoints
conversations:readGET /v2/conversations, GET /v2/conversations/:id, GET /v2/conversations/:id/children, GET /v2/conversations/:id/links, GET /v2/conversations/:id/resolution, GET /v2/conversations/:id/activities/export, GET /v2/conversations/:id/attachments/:id/download, GET /v2/conversations/filter-options, GET /v2/conversations/tags/search
conversations:writePOST /v2/conversations, PATCH /v2/conversations/:id, POST /v2/conversations/:id/reply, POST /v2/conversations/:id/assign, POST /v2/conversations/:id/reassign, POST /v2/conversations/:id/unassign, POST /v2/conversations/search, POST /v2/conversations/:id/parent, PUT /v2/conversations/:id/resolution, POST /v2/conversations/:id/spam, POST /v2/conversations/:id/unspam, DELETE /v2/conversations/:id, POST /v2/conversations/:id/restore, POST /v2/conversations/:id/archive, POST /v2/conversations/:id/unarchive, PATCH /v2/conversations/:id/read, DELETE /v2/conversations/:id/links/:id, DELETE /v2/conversations/:id/attachments/:id

On this page