AurionAI Docs

Create Portal Conversation

Submit a portal form — creates an AurionAI conversation. This endpoint accepts both authenticated and anonymous submissions: - Authenticated: user context resolved from Authorization Bearer token (end-user JWT). name/email fields are ignored (taken from JWT). - Anonymous: name + email are required in the request body. The submission creates a conversation with channel='portal_form'. No ITSM provider ticket is created automatically. RLS: All DB writes (contact find-or-create, conversation insert, attachment link) run inside the same RLS-bypass transaction to prevent TOCTOU races for concurrent anonymous submissions with the same email.

POST
/api/v1/help-center/conversations

Submit a portal form — creates an AurionAI conversation.

This endpoint accepts both authenticated and anonymous submissions:

  • Authenticated: user context resolved from Authorization Bearer token (end-user JWT). name/email fields are ignored (taken from JWT).
  • Anonymous: name + email are required in the request body.

The submission creates a conversation with channel='portal_form'. No ITSM provider ticket is created automatically.

RLS: All DB writes (contact find-or-create, conversation insert, attachment link) run inside the same RLS-bypass transaction to prevent TOCTOU races for concurrent anonymous submissions with the same email.

Query Parameters

tenant_id?|

Tenant UUID

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X POST "https://loading/api/v1/help-center/conversations" \  -H "Content-Type: application/json" \  -d '{    "description": "string",    "subject": "string"  }'
{
  "created_at": "2019-08-24T14:15:22Z",
  "display_id": "string",
  "form_version_warning": "string",
  "id": "string",
  "status": "string"
}
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}