Public APIs

Authorization

All of ChatAIBot's APIs use a Bearer token based authentication.

Your account token can be found at Settings > Account Settings.

Adding a data source to a knowledge base

POST /api/v1/ai/knowledge-base/<knowledge_base_id>/upload/sources

Using this API, you can add a data source to an existing knowledge base.

Headers

Name
Value

Content-Type

multipart/form-data

Authorization

Bearer <token>

Body

The API accepts files and text as multipart form data for upload. Each form field should be a unique key and contain either a file or text content.

Response

{
  "q1": [
    {
      "id": 330783,
      "type": "text",
      "name": "sample.txt",
      "status": "in-progress",
      "errors": null
    },
    {
      "id": 330784,
      "type": "text",
      "name": "sample2.txt",
      "status": "in-progress",
      "errors": null
    },
    {
      "id": 330785,
      "type": "file",
      "name": "File.pdf",
      "status": "in-progress",
      "errors": null
    }
  ],
  "d2": [
    {
      "id": 330786,
      "type": "file",
      "name": "File2.pdf",
      "status": "in-progress",
      "errors": null
    }
  ],
  "knowledge_base_id": 876,
  "ok": true
}

Get training status of a data source

GET /api/v1/ai/status/sources

Using this API, you can fetch the status of one or more data sources in a knowledge base to know it its training is - in progress / completed / failed.

Headers

Name
Value

Content-Type

application/json

Authorization

Bearer <token>

Body

Name
Type
Description

source_ids

query params

Comma-separated list of data source IDs to be passed as query params.

{
    "sources": [
        {
            "id": 330778,
            "name": "sample.txt",
            "status": "in-progress",
            "knowledge_base_id": 876
        }
    ],
    "ok": true
}

Creating a conversation

POST /v1/conversations

Using this endpoint, you can start/create a new conversation.

Headers

Name
Value

Content-Type

application/json

Authorization

Bearer <token>

Body

Contains the message payload. Payload differs based on channel.

{
   "channel": "WHATSAPP",
   "from": "1123123123",
   "to": {
       "phone": "11231231230",
       "name": "John Doe",
       "email": "example@domain.com"
   },
   "message": {
       "type": "template",
       "data": {
           "template": "test_template",
           "parameters": {
               "header": [
                   "John"
               ],
               "body": [
                   "Doe",
                   "Doe2"
               ],
               "buttons": {
                   "copy_code": "123456",
                   "otp": "123456",
                   "url": "any"
               }
           },
           "variables":{
               "name": "John Doe"
           }
       }
   },
   "assignee": "agent_email@domain.com"
}

Response

{
  "ok": true,
  "conversation": {
    "id": "12wfegrgt4t",
    "message_id": "sdvgret4353b",
    "created_at": "",
    "assignee": {
      "id": 123,
      "to": "agent_email@domain.com"
    }
  },
  "contact": {
    "id": "11111111",
    "name": "John Doe",
    "phone": "1234567890",
    "email": "example@domain.com"
  }
}

Send agent response to a conversation

POST /api/v1/conversation/<conversation_id>/messages

For every response sent by the agent on the third-party system, this API is to be invoked so it can relay this response to the user.

Headers

Name
Value

Content-Type

application/json

Authorization

Bearer <token>

Body

{
  "message": {
    "data": {
      "body": "Hi"
    },
    "type": "text"
  },
  "user": {
    "by": "agent_email@domain.com"
  }
}

Response

{
  "ok": true,
  "message_id": "6HRBshHEcV8P103039226478taGDJQxC"
}

Closing a conversation

POST /api/v1/conversation/{conversation_id}/events

Use this endpoint to close an open conversation.

Headers

Name
Value

Content-Type

application/json

Authorization

Bearer <token>

Body

{
  "event": "status",
  "status": "CLOSE",
  "user": {
    "by": "agent_email@domain.com"
  }
}

Response

{
  "ok": true
}

Changing assignee in a conversation

POST /api/v1/conversation/{conversation_id}/events

Use this endpoint to change the assignee in an open conversation.

Headers

Name
Value

Content-Type

application/json

Authorization

Bearer <token>

Body

// Change from assignee to assignee
{
  "event": "assignee",
  "user": {
    "by": "agent_email@domain.com",
    "to": "assignee@domain.com"
  }
}

// Change from assignee to team
{
  "event": "assignee",
  "team": {
    "by": "agent_email@domain.com",
    "to": "Sales"
  }
}

Response

{
  "ok": true
}

Update variable of a conversation

POST /v1/accounts/{account_id}/conversations/{conversation_id}/variables

Use this endpoint to update the variables in the conversation.

Headers

Name
Value

Content-Type

application/json

Authorization

Bearer <token>

Body

{
  "variables": [
    {
      "name": "name",
      "type": "conversation",
      "value": "John Doe"
    },
    {
      "name": "phone",
      "type": "contact",
      "value": "9999999999"
    },
    {
      "name": "company",
      "type": "conversation",
      "value": "Example"
    },
    {
      "name": "email",
      "type": "contact",
      "value": "john.doe@gmail.com"
    }
  ]
}

Response

{
  "ok": true
}

Set webhook URL for Events feature

POST /v1/accounts/{account_id}/webhook

Use this endpoint to set webhook for receiving conversation related events from the account.

Headers

Name
Value

Content-Type

application/json

Authorization

Bearer <token>

Body

{
  "webhook_url": "",
  "subscribed_events": [
    {
      "key": "conversation_create",
      "is_subscribed": true
    },
    {
      "key": "message",
      "is_subscribed": true
    },
    {
      "key": "status",
      "is_subscribed": true
    },
    {
      "key": "assignee_change",
      "is_subscribed": true
    },
    {
      "key": "sla_breached",
      "is_subscribed": true
    },
    {
      "key": "variables",
      "is_subscribed": true
    },
    {
      "key": "conversation_labels",
      "is_subscribed": true
    },
    {
      "key": "note",
      "is_subscribed": true
    }
  ],
  "is_enabled": true,
  "token": "Test"
}

Response

{
  "ok": true
}

Fetch Bots List

GET /v1/accounts/{account_id}/bots

Use this endpoint to fetch list of bots available in the account.

Headers

Name
Value

Content-Type

application/json

Authorization

Bearer <token>

Response

{
  "ok": true,
  "bots": [
    {
      "bot_title": "Appointment Booking",
      "channels": [
        {
          "name": "WEB"
        }
      ],
      "is_active": false,
      "bot_key": "7SgQLb4qUbp61059137828254t5QVE0H",
      "last_deployed_at": "2025-01-22 13:26:40.554000",
      "is_inactive_by_system": false,
      "priority": 1,
      "preferred_bot_language": {
        "label": "English",
        "code": "EN"
      },
      "type": "inbound",
      "outbound_type": null,
      "bot_owner": {
        "id": 14764,
        "name": "John Doe"
        "email": "john.doe@gmail.com"
      }
      "created_at": "2024-02-09 10:59:13.783000",
      "preview_key": "6H7PD4WwTmsU105913782825Zk3KCj3t",
      "bot_id": 9633
    }
  ]
}

Last updated