Change Log
2024-11-19
- New endpoints
- POST /api/external/chatbot/vision: Conversation with chatbot by image
2024-08-22
- Update endpoints
- POST /api/external/user/chatbot: Setup the chatbot with FormData on create
- Fix
- PUT /api/external/user/chatbot/{chatbot_id}: Fix the url for HTTP Request
2024-07-30
- New endpoints
- DELETE /api/external/chatbot/webhook
- DELETE /api/external/chatbot/training_data/{training_data_id}
- GET /api/external/chatbot/training_data
- GET /api/external/chatbot/event/{event_id}
- Update endpoints
- POST /api/external/chatbot/training_data: response
id
andevent_id
- POST /api/external/chatbot/model: response
event_id
- POST /api/external/chatbot/training_data: response
- Update webhook messages
2024-07-05
- New endpoints
- GET /api/external/chatbot/model/{model_id}
- GET /api/external/user/token/refresh
- GET /api/external/user/chatbot/{chatbot_id}
- PUT /api/external/user/chatbot/{chatbot_id}
- DELETE /api/external/user/chatbot/{chatbot_id}
- GET /api/external/user/plan
- Update endpoints
- POST /api/external/chatbot/training_data: response
id
(for text) orevent_id
(crawler, upload file) - PUT /api/external/chatbot/opentalk: remove parameter
email
- POST /api/external/chatbot/training_data: response
- Remove endpoints
- PUT /api/external/chatbot: Use PUT /api/external/user/chatbot/{chatbot_id} instead
2024-06-28
- New endpoints
- GET /api/external/user/chatbot
- POST /api/external/user/chatbot
2024-05-09
- Authentication
- add
caigunn-access-token
for management
- add
- Move endpoints
- POST /api/external/chatbot/train --> /api/external/chatbot/models
- PATCH /api/external/chatbot/model_id --> /api/external/chatbot
- POST /api/external/chatbot/conversation --> /api/external/chatbot/talk
- GET /api/external/chatbot/conversation_uids --> /api/external/chatbot/uids
- New endpoints
- PUT /api/external/chatbot/opentalk
- DELETE /api/external/chatbot/opentalk
- POST /api/external/chatbot/training_data
- PUT /api/external/chatbot/webhook
2024-01-31
- New endpoint
- GET /api/external/chatbot/conversation_uids
- Update endpoints
- POST /api/external/chatbot/conversation: add parameter
nickname
- GET /api/external/chatbot/messages: add parameter
nickname
- POST /api/external/chatbot/conversation: add parameter
2023-11-10
- New endpoints
- POST /api/external/chatbot/train
- GET /api/external/chatbot/models
- PATCH /api/external/chatbot/model_id
- POST /api/external/chatbot/conversation
- GET /api/external/chatbot/messages
Introduction
Welcome to the CaiGunn API! You can use our API to setup and interact with chatbot.
We have language bindings in Shell and Python! You can view code examples in the dark area to the right, and you can switch the programming language of the examples with the tabs in the top right.
Authentication
CaiGunn uses API keys to allow access to the API. You can register and create chatbot at CaiGunn.
CaiGunn API expects for the API key to be included in all API requests to the server in a header that looks like the following:
api-key: CHATBOT_API_KEY
For chatbot manangement APIs, CaiGunn Access Token is needed. Include it in header that looks like following:
caigunn-access-token: CAIGUNN_ACCESS_TOKEN
User
Refresh Caigunn Access Token
curl --location 'https://caigunn-api.ap-mic.com/api/external/user/token/refresh?expired_date=EXPIRED_DATE' \
--header 'caigunn-access-token: CAIGUNN_ACCESS_TOKEN'
import requests
url = "https://caigunn-api.ap-mic.com/api/external/user/token/refresh?expired_date=EXPIRED_DATE"
headers = {"caigunn-access-token": CAIGUNN_ACCESS_TOKEN}
response = requests.request("GET", url, headers=headers)
print(response.json())
The above command returns JSON structured like this:
{
"token": "string"
}
Refresh caigunn-access-token.
HTTP Request
GET https://caigunn-api.ap-mic.com/api/external/user/token/refresh
Header Parameters
Name | Type | Mandatory | Default | Description |
---|---|---|---|---|
caigunn-access-token | string | true | Caigunn Access Token. |
Query Parameters
Name | Type | Mandatory | Default | Description |
---|---|---|---|---|
expired_date | date | false |
Get Plans
curl --location 'https://caigunn-api.ap-mic.com/api/external/user/plan?offset=OFFSET&limit=LIMIT' \
--header 'caigunn-access-token: CAIGUNN_ACCESS_TOKEN'
import requests
url = "https://caigunn-api.ap-mic.com/api/external/user/plan?offset=OFFSET&limit=LIMIT"
headers = {
"caigunn-access-token": CAIGUNN_ACCESS_TOKEN,
}
response = requests.request("GET", url, headers=headers)
print(response.json())
The above command returns JSON structured like this:
{
"plans": [
{
"title": "string",
"id": "string",
"crawler_limit": 0,
"character_limit": 0,
"training_limit": 0,
"price": 0
}
]
}
This endpoint retrieves all plans.
HTTP Request
GET https://caigunn-api.ap-mic.com/api/external/user/plan
Header Parameters
Name | Type | Mandatory | Default | Description |
---|---|---|---|---|
caigunn-access-token | string | true | Caigunn Access Token. |
Query Parameters
Name | Type | Mandatory | Default | Description |
---|---|---|---|---|
offset | integer | false | 0 | |
limit | integer | false | 30 |
Create Chatbot
curl --location 'https://caigunn-api.ap-mic.com/api/external/user/chatbot' \
--header 'caigunn-access-token: CAIGUNN_ACCESS_TOKEN' \
--form 'title=TITLE' \
--form 'plan_id=PLAN_ID'
import requests
import json
url = "https://caigunn-api.ap-mic.com/api/external/user/chatbot?title=TITLE&plan_id=PLAN_ID"
headers = {
"caigunn-access-token": CAIGUNN_ACCESS_TOKEN
}
payload = {
"title": TITLE,
"plan_id": PLAN_ID,
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.json())
The above command returns JSON structured like this:
{
"chatbot_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"webchat_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"api_key": "string",
"expired_at": "2024-07-05T09:49:32.451Z"
}
Create Chatbot.
HTTP Request
POST https://caigunn-api.ap-mic.com/api/external/user/chatbot
Header Parameters
Name | Type | Mandatory | Default | Description |
---|---|---|---|---|
caigunn-access-token | string | true | Caigunn Access Token. |
Request Body FormData
Name | Type | Mandatory | Default | Description |
---|---|---|---|---|
title | string | true | ||
plan_id | uuid | true | ||
avatar | file | false | ||
main_color | string | false | ||
is_default_visible | boolean | false | ||
button_style | string | false | basic, image | |
button_image | file | false | ||
initial_messages | array | false | [{"type":"text","value":"string"}] | |
is_fixed | bool | false | ||
show_history | boolean | false | ||
allowed_domains | array | false | ["http://localhost", "https://caigunn.ap-mic.com"] | |
model_id | uuid | false | ||
prompt | string | false | ||
is_shared | boolean | false |
Get All Chatbots
curl --location 'https://caigunn-api.ap-mic.com/api/external/user/chatbot' \
--header 'caigunn-access-token: CAIGUNN_ACCESS_TOKEN'
import requests
url = "https://caigunn-api.ap-mic.com/api/external/user/chatbot"
headers = {"caigunn-access-token": CAIGUNN_ACCESS_TOKEN}
response = requests.request("GET", url, headers=headers)
print(response.json())
The above command returns JSON structured like this:
{
"chatbots": [
{
"id": "string",
"title": "string",
"api_key": "string"
}
]
}
This endpoint retrieves all chatbots.
HTTP Request
GET https://caigunn-api.ap-mic.com/api/external/user/chatbot
Header Parameters
Name | Type | Mandatory | Default | Description |
---|---|---|---|---|
caigunn-access-token | string | true | Caigunn Access Token. |
Query Parameters
Name | Type | Mandatory | Default | Description |
---|---|---|---|---|
offset | integer | false | 0 | |
limit | integer | false | 30 |
Get Chatbot Info
curl --location 'https://caigunn-api.ap-mic.com/api/external/user/chatbot/CHATBOT_ID' \
--header 'caigunn-access-token: CAIGUNN_ACCESS_TOKEN'
import requests
url = "https://caigunn-api.ap-mic.com/api/external/user/chatbot/CHATBOT_ID"
headers = {
"caigunn-access-token": CAIGUNN_ACCESS_TOKEN,
}
response = requests.request("GET", url, headers=headers)
print(response.json())
The above command returns JSON structured like this:
{
"updated_at": "2024-07-05T04:08:48.392Z",
"created_at": "2024-07-05T04:08:48.392Z",
"id": "string",
"title": "string",
"user_id": "string",
"is_deleted": true,
"deleted_at": "2024-07-05T04:08:48.392Z",
"prompt": "string",
"temperature": 0,
"is_ready_for_train": true,
"is_shared": true,
"share_link": "string",
"is_free": true,
"training_data_type": "file",
"file_model_id": "string",
"crawler_model_id": "string",
"text_model_id": "string",
"usage_notification": 0,
"message_limit": 0,
"character_limit": 0,
"crawler_limit": 0,
"training_limit": 0,
"plan_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"period_start_at": "2024-07-05T04:08:48.392Z",
"period_end_at": "2024-07-05T04:08:48.392Z",
"api_key": "string",
"total_file_size_limit": 0,
"is_api_accessible": true,
"model": {
"id": "string",
"model_name": "string",
"embedding_name": "string"
},
"opentalk_device_id": "string",
"opentalk_device_name": "string",
"opentalk_device_type": "string",
"bound_at": "2024-07-05T04:08:48.392Z",
"opentalk_api_token": "string",
"use_opentalk_conversation": false,
"opentalk_account": "string",
"opentalk_user_id": "string",
"next_plan_id": "string",
"limits_reset_day": 0,
"coupon": {},
"store_source_data": true,
"is_prompt_template_accessible": true,
"qa_generate_limit": 0,
"qa_generate_count": 0,
"preview_chunks": true,
"is_chunks_editable": true,
"opentalk_host": "string",
"webhook_url": "string"
}
This endpoint retrieves detail information of the chatbot.
HTTP Request
GET https://caigunn-api.ap-mic.com/api/external/user/chatbot/CHATBOT_ID
Path Parameters
Name | Type | Mandatory | Default | Description |
---|---|---|---|---|
chatbot-id | string | true | The ID of chatbot. |
Header Parameters
Name | Type | Mandatory | Default | Description |
---|---|---|---|---|
caigunn-access-token | string | true | Caigunn Access Token. |
Update Chatbot
curl --location --request PUT 'https://caigunn-api.ap-mic.com/api/external/user/chatbot/CHATBOT_ID' \
--header 'caigunn-access-token: CAIGUNN_ACCESS_TOKEN' \
--form 'title=TITLE'
import requests
import json
url = "https://caigunn-api.ap-mic.com/api/external/user/chatbot/CHATBOT_ID"
payload = json.dumps({"title": TITLE})
headers = {
"caigunn-access-token": CAIGUNN_ACCESS_TOKEN
}
response = requests.request("PUT", url, headers=headers, data=payload)
print(response.json())
The above command returns JSON structured like this:
{
"detail": "update successfully"
}
Update chatbot settings
HTTP Request
PUT https://caigunn-api.ap-mic.com/api/external/user/chatbot/CHATBOT_ID
Header Parameters
Name | Type | Mandatory | Default | Description |
---|---|---|---|---|
caigunn-access-token | string | true | Caigunn Access Token. |
Request Body FormData
Name | Type | Mandatory | Default | Description |
---|---|---|---|---|
title | string | false | ||
avatar | file | false | ||
main_color | string | false | ||
is_default_visible | boolean | false | ||
button_style | string | false | basic, image | |
button_image | file | false | ||
initial_messages | array | false | [{"type":"text","value":"string"}] | |
is_fixed | bool | false | ||
show_history | boolean | false | ||
allowed_domains | array | false | ["http://localhost", "https://caigunn.ap-mic.com"] | |
model_id | uuid | false | ||
prompt | string | false | ||
is_shared | boolean | false |
Delete Chatbot
shell curl --location --request DELETE 'https://caigunn-api.ap-mic.com/api/external/user/chatbot/CHATBOT_ID' \
--header 'caigunn-access-token: CAIGUNN_ACCESS_TOKEN'
import requests
import json
url = "https://caigunn-api.ap-mic.com/api/external/user/chatbot/CHATBOT_ID"
headers = {
"caigunn-access-token": CAIGUNN_ACCESS_TOKEN,
}
response = requests.request("DELETE", url, headers=headers)
print(response.json())
The above command returns JSON structured like this:
{
"detail": "Delete chatbot successfully"
}
Delete Chatbot.
HTTP Request
DELETE https://caigunn-api.ap-mic.com/api/external/user/chatbot/CHATBOT_ID
Path Parameters
Name | Type | Mandatory | Default | Description |
---|---|---|---|---|
chatbot-id | string | true | The ID of chatbot. |
Header Parameters
Name | Type | Mandatory | Default | Description |
---|---|---|---|---|
caigunn-access-token | string | true | Caigunn Access Token. |
Bind Opentalk
Bind Opentalk Device
curl --location --request PUT 'https://caigunn-api.ap-mic.com/api/external/chatbot/opentalk' \
--header 'api-key: CHATBOT_API_KEY' \
--header 'caigunn-access-token: CAIGUNN_ACCESS_TOKEN' \
--header 'Content-Type: application/json' \
--data '{"device_id": OPENTALK_DEVICE_ID}'
import requests
import json
url = "https://caigunn-api.ap-mic.com/api/external/chatbot/opentalk"
payload = json.dumps({"device_id": OPENTALK_DEVICE_ID})
headers = {
"api-key": CHATBOT_API_KEY,
"caigunn-access-token": CAIGUNN_ACCESS_TOKEN,
"Content-Type": "application/json",
}
response = requests.request("PUT", url, headers=headers, data=payload)
print(response.json())
The above command returns JSON structured like this:
{
"detail": "Bind Opentalk successfully"
}
Bind with Opentalk to access device's conversation script, live chat support, and analytics features.
HTTP Request
PUT https://caigunn-api.ap-mic.com/api/external/chatbot/opentalk
Header Parameters
Name | Type | Mandatory | Default | Description |
---|---|---|---|---|
api-key | string | true | API Key. | |
caigunn-access-token | string | true | Caigunn Access Token. |
Request Body Schema
Name | Type | Mandatory | Default | Description |
---|---|---|---|---|
device_id | string | true | ID of the Opentalk device. |
Unbind Opentalk Device
curl --location --request DELETE 'https://caigunn-api.ap-mic.com/api/external/chatbot/opentalk' \
--header 'api-key: CHATBOT_API_KEY' \
--header 'caigunn-access-token: CAIGUNN_ACCESS_TOKEN' \
--header 'Content-Type: application/json'
import requests
import json
url = "https://caigunn-api.ap-mic.com/api/external/chatbot/opentalk"
headers = {
"api-key": CHATBOT_API_KEY,
"caigunn-access-token": CAIGUNN_ACCESS_TOKEN,
"Content-Type": "application/json"
}
response = requests.request("DELETE", url, headers=headers)
print(response.json())
The above command returns JSON structured like this:
{
"detail": "Unbind Opentalk successfully"
}
Unbind Opentalk device.
HTTP Request
DELETE https://caigunn-api.ap-mic.com/api/external/chatbot/opentalk
Header Parameters
Name | Type | Mandatory | Default | Description |
---|---|---|---|---|
api-key | string | true | API Key. | |
caigunn-access-token | string | true | Caigunn Access Token. |
Model
Create Training Data
# Create by files
curl --location 'https://caigunn-api.ap-mic.com/api/external/chatbot/training_data?type=file' \
--header 'api-key: CHATBOT_API_KEY' \
--header 'caigunn-access-token: CAIGUNN_ACCESS_TOKEN' \
--form 'files=@FILE'
# Create by crawler
curl --location 'https://caigunn-api.ap-mic.com/api/external/chatbot/training_data?type=crawler' \
--header 'api-key: CHATBOT_API_KEY' \
--header 'caigunn-access-token: CAIGUNN_ACCESS_TOKEN' \
--form 'website="WEBSITE"' \
--form 'is_single_page="IS_SINGLE_PAGE"'
# Create by text
curl --location 'https://caigunn-api.ap-mic.com/api/external/chatbot/training_data?type=text' \
--header 'api-key: CHATBOT_API_KEY' \
--header 'caigunn-access-token: CAIGUNN_ACCESS_TOKEN' \
--form 'text=TEXT'
# Create by files
import requests
url = "https://caigunn-api.ap-mic.com/api/external/chatbot/training_data?type=file"
payload = {"website": WEBSITE, "is_single_page": IS_SINGLE_PAGE}
files = []
headers = {"api-key": CHATBOT_API_KEY, "caigunn-access-token": CAIGUNN_ACCESS_TOKEN}
response = requests.request("POST", url, headers=headers, data=payload, files=files)
print(response.json())
# Create by crawler
import requests
url = "https://caigunn-api.ap-mic.com/api/external/chatbot/training_data?type=crawler"
payload = {"website": WEBSITE, "is_single_page": IS_SINGLE_PAGE}
headers = {"api-key": CHATBOT_API_KEY, "caigunn-access-token": CAIGUNN_ACCESS_TOKEN}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.json())
# Create by text
import requests
url = "https://caigunn-api.ap-mic.com/api/external/chatbot/training_data?type=file"
payload = {'text': 'TEXT'}
headers = {"api-key": CHATBOT_API_KEY, "caigunn-access-token": CAIGUNN_ACCESS_TOKEN}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.json())
The above command returns JSON structured like this:
# Create by files
{
"id": null,
"event_id": "123e4567-e89b-12d3-a456-426655440000"
}
# Create by crawler
{
"id": null,
"event_id": "123e4567-e89b-12d3-a456-426655440000"
}
# Create by text
{
"id": "123e4567-e89b-12d3-a456-426655440000",
"event_id": null
}
Create training data for model training. Create training data by crawler or uploading files will be processed in background and the result will be sent to the webhook.
HTTP Request
POST https://caigunn-api.ap-mic.com/api/external/chatbot/training_data
Header Parameters
Name | Type | Mandatory | Default | Description |
---|---|---|---|---|
api-key | string | true | API Key. | |
caigunn-access-token | string | true | Caigunn Access Token. |
Query Parameters
Name | Type | Mandatory | Default | Description |
---|---|---|---|---|
type | string | true | file, crawler, text |
Request Body Form data
Name | Type | Mandatory | Default | Description |
---|---|---|---|---|
website | string | false | The website for crawling. | |
is_single_page | bool | false | Crawl one webpage or the whole website | |
text | string | false | ||
files | array | false |
Get Training Data
curl --location 'https://caigunn-api.ap-mic.com/api/external/chatbot/training_data' \
--header 'api-key: CHATBOT_API_KEY' \
--header 'caigunn-access-token: CAIGUNN_ACCESS_TOKEN'
import requests
url = "https://caigunn-api.ap-mic.com/api/external/chatbot/training_data"
headers = {"api-key": CHATBOT_API_KEY, "caigunn-access-token": CAIGUNN_ACCESS_TOKEN}
response = requests.request("GET", url, headers=headers)
print(response.json())
The above command returns JSON structured like this:
{
"training_data": [
{
"title": "Plain Text",
"id": "123e4567-e89b-12d3-a456-426655440000",
"type": "text"
},
{
"title": "File Name",
"id": "123e4567-e89b-12d3-a456-426655440000",
"type": "file"
},
{
"title": "Website URL",
"id": "123e4567-e89b-12d3-a456-426655440000",
"type": "crawler"
}
]
}
List all training data which will be used in next training.
HTTP Request
GET https://caigunn-api.ap-mic.com/api/external/chatbot/training_data
Header Parameters
Name | Type | Mandatory | Default | Description |
---|---|---|---|---|
api-key | string | true | API Key. | |
caigunn-access-token | string | true | Caigunn Access Token. |
Delete Training Data
curl --location --request DELETE 'https://caigunn-api.ap-mic.com/api/external/chatbot/training_data/{TRAINING_DATA_ID}' \
--header 'api-key: CHATBOT_API_KEY' \
--header 'caigunn-access-token: CAIGUNN_ACCESS_TOKEN'
import requests
url = "https://caigunn-api.ap-mic.com/api/external/chatbot/training_data/{TRAINING_DATA_ID}"
headers = {"api-key": CHATBOT_API_KEY, "caigunn-access-token": CAIGUNN_ACCESS_TOKEN}
response = requests.request("DELETE", url, headers=headers)
print(response.json())
The above command returns JSON structured like this:
{
"detail": "Delete training data successfully"
}
Delete training data by id.
HTTP Request
DELETE https://caigunn-api.ap-mic.com/api/external/chatbot/training_data/TRAINING_DATA_ID
Header Parameters
Name | Type | Mandatory | Default | Description |
---|---|---|---|---|
api-key | string | true | API Key. | |
caigunn-access-token | string | true | Caigunn Access Token. |
Path Parameters
Name | Type | Mandatory | Default | Description |
---|---|---|---|---|
training_data_id | uuid | true | The ID of training data. |
Train a Model
curl --location 'https://caigunn-api.ap-mic.com/api/external/chatbot/model' \
--header 'api-key: CHATBOT_API_KEY' \
--header 'caigunn-access-token: CAIGUNN_ACCESS_TOKEN' \
--header 'Content-Type: application/json' \
--data '{"title": TITLE, "model_name": MODEL_NAME}'
import requests
import json
url = "https://caigunn-api.ap-mic.com/api/external/chatbot/model"
payload = json.dumps({"title": TITLE, "model_name": MODEL_NAME})
headers = {
"api-key": CHATBOT_API_KEY,
"caigunn-access-token": CAIGUNN_ACCESS_TOKEN,
"Content-Type": "application/json",
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.json())
The above command returns JSON structured like this:
{
"event_id": "123e4567-e89b-12d3-a456-426655440000"
}
Train a model. Result will be sent to the webhook.
HTTP Request
POST https://caigunn-api.ap-mic.com/api/external/chatbot/model
Header Parameters
Name | Type | Mandatory | Default | Description |
---|---|---|---|---|
api-key | string | true | API Key. | |
caigunn-access-token | string | true | Caigunn Access Token. |
Request Body Schema
Name | Type | Mandatory | Default | Description |
---|---|---|---|---|
title | string | true | Title for the trained model. | |
model_name | string | false | "PaLM2" | "PaLM2", "gpt-3.5-turbo", "gpt-4", "Gemini", "Claude 2", "Claude 3", "CaiGunn001", "Gemini 1.5" |
Get All Models
curl --location 'https://caigunn-api.ap-mic.com/api/external/chatbot/model' \
--header 'api-key: CHATBOT_API_KEY' \
--header 'caigunn-access-token: CAIGUNN_ACCESS_TOKEN'
import requests
url = "https://caigunn-api.ap-mic.com/api/external/chatbot/model"
headers = {"api-key": CHATBOT_API_KEY, "caigunn-access-token": CAIGUNN_ACCESS_TOKEN}
response = requests.request("GET", url, headers=headers)
print(response.json())
The above command returns JSON structured like this:
{
"models": [
{
"title": "string",
"id": "string",
"updated_at": "2023-11-06T09:09:41.552Z",
"created_at": "2023-11-06T09:09:41.552Z",
"model_name": "chat-bison"
}
]
}
This endpoint retrieves all models.
HTTP Request
GET http://caigunn-api.ap-mic.com/api/external/chatbot/model
Header Parameters
Name | Type | Mandatory | Default | Description |
---|---|---|---|---|
api-key | string | true | API Key. | |
caigunn-access-token | string | true | Caigunn Access Token. |
Get Model
curl --location 'https://caigunn-api.ap-mic.com/api/external/chatbot/model/MODEL_ID' \
--header 'api-key: CHATBOT_API_KEY' \
--header 'caigunn-access-token: CAIGUNN_ACCESS_TOKEN'
import requests
url = "https://caigunn-api.ap-mic.com/api/external/chatbot/model/MODEL_ID"
headers = {
"api-key": CHATBOT_API_KEY,
"caigunn-access-token": CAIGUNN_ACCESS_TOKEN,
}
response = requests.request("GET", url, headers=headers)
print(response.json())
The above command returns JSON structured like this:
{
"title": "string",
"id": "string",
"updated_at": "2024-07-05T04:19:04.436Z",
"created_at": "2024-07-05T04:19:04.436Z",
"model_name": "string",
"training_data": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"title": "string"
}
]
}
This endpoint retrieves detail information of the chatbot.
HTTP Request
GET https://caigunn-api.ap-mic.com/api/external/chatbot/model/MODEL_ID
Path Parameters
Name | Type | Mandatory | Default | Description |
---|---|---|---|---|
model-id | string | true | ID of the model. |
Header Parameters
Name | Type | Mandatory | Default | Description |
---|---|---|---|---|
api-key | string | true | API Key. | |
caigunn-access-token | string | true | Caigunn Access Token. |
Conversation
Talk With Chatbot
curl --location 'https://caigunn-api.ap-mic.com/api/external/chatbot/talk&nickname=NICKNAME' \
--header 'api-key: CHATBOT_API_KEY' \
--header 'caigunn-access-token: CAIGUNN_ACCESS_TOKEN' \
--header 'uid: CUSTUM_UID' \
--header 'Content-Type: application/json' \
--data '{"text": TEXT}'
import requests
import json
url = "http://caigunn-api.ap-mic.com/api/external/chatbot/talk&nickname=NICKNAME"
payload = json.dumps({"text": TEXT})
headers = {
"api-key": CHATBOT_API_KEY,
"caigunn-access-token": CAIGUNN_ACCESS_TOKEN,
"uid": CUSTUM_UID,
"Content-Type": "application/json",
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.json())
The above command returns JSON structured like this:
{
"text": "string"
}
Send message to chatbot and get response.
HTTP Request
POST https://caigunn-api.ap-mic.com/api/external/chatbot/talk
Header Parameters
Name | Type | Mandatory | Default | Description |
---|---|---|---|---|
api-key | string | true | API Key. | |
caigunn-access-token | string | true | Caigunn Access Token. | |
uid | string | true | Custom UID for identify conversation. |
Query Parameters
Name | Type | Mandatory | Default | Description |
---|---|---|---|---|
nickname | string | false | Nickname of the conversation participant. |
Request Body Schema
Name | Type | Mandatory | Default | Description |
---|---|---|---|---|
text | string | true | Message from the conversation participant. |
Talk With Chatbot by image
curl --location 'https://caigunn-api.ap-mic.com/api/external/chatbot/vision?nickname=NICKNAME' \
--header 'api-key: CHATBOT_API_KEY' \
--header 'caigunn-access-token: CAIGUNN_ACCESS_TOKEN' \
--header 'uid: CUSTUM_UID' \
--form 'text=""' \
--form 'image=@"/path/to/file"'
import requests
url = "https://caigunn-api.ap-mic.com/api/external/chatbot/vision?nickname=NICKNAME"
payload = {"text": ""}
files = [("image", ("file", open("/path/to/file", "rb"), "application/octet-stream"))]
headers = {
"api-key": CHATBOT_API_KEY,
"caigunn-access-token": CAIGUNN_ACCESS_TOKEN,
"uid": CUSTUM_UID,
}
response = requests.request("POST", url, headers=headers, data=payload, files=files)
The above command returns JSON structured like this:
{
"text": "string"
}
Send image to chatbot and get response.
HTTP Request
POST https://caigunn-api.ap-mic.com/api/external/chatbot/vision
Header Parameters
Name | Type | Mandatory | Default | Description |
---|---|---|---|---|
api-key | string | true | API Key. | |
caigunn-access-token | string | true | Caigunn Access Token. | |
uid | string | true | Custom UID for identify conversation. |
Query Parameters
Name | Type | Mandatory | Default | Description |
---|---|---|---|---|
nickname | string | false | Nickname of the conversation participant. |
Request Body Form data
Name | Type | Mandatory | Default | Description |
---|---|---|---|---|
text | string | false | Message from the conversation participant. | |
image | file | true | .png, .jpg, .jpeg, .gif, .tiff, .tif |
Get Conversation UIDs
curl --location 'https://caigunn-api.ap-mic.com/api/external/chatbot/uids?offset=OFFSET&limit=LIMIT&start_at=START_AT&end_at=END_AT' \
--header 'api-key: CHATBOT_API_KEY'
--header 'caigunn-access-token: CAIGUNN_ACCESS_TOKEN'
import requests
url = "https://caigunn-api.ap-mic.com/api/external/chatbot/uids?offset=OFFSET&limit=LIMIT&start_at=START_AT&end_at=END_AT"
headers = {
"api-key": CHATBOT_API_KEY,
"caigunn-access-token": CAIGUNN_ACCESS_TOKEN,
"uid": CUSTUM_UID,
}
response = requests.request("GET", url, headers=headers)
print(response.json())
The above command returns JSON structured like this:
{
"uids": [
{
"uid": "string",
"nickname": "string",
"source": "string",
"last_sent": "string",
"last_sent_at": "string"
}
]
}
This endpoint retrieves conversation UIDs.
HTTP Request
GET https://caigunn-api.ap-mic.com/api/external/chatbot/uids
Header Parameters
Name | Type | Mandatory | Default | Description |
---|---|---|---|---|
api-key | string | true | API Key. | |
caigunn-access-token | string | true | Caigunn Access Token. |
Query Parameters
Name | Type | Mandatory | Default | Description |
---|---|---|---|---|
offset | integer | false | 0 | |
limit | integer | false | 30 | |
start_at | datetime | false | 1970-1-1 | Get UIDs where last_sent_at is greater than or equal start_at. |
end_at | datetime | false | current datetime | Get UIDs where last_sent_at is less than or equal end_at. |
Get Historical Messages
curl --location 'https://caigunn-api.ap-mic.com/api/external/chatbot/messages?offset=OFFSET&limit=LIMIT&start_at=START_AT&end_at=END_AT&nickname=NICKNAME' \
--header 'api-key: CHATBOT_API_KEY' \
--header 'caigunn-access-token: CAIGUNN_ACCESS_TOKEN' \
--header 'uid: CUSTUM_UID'
import requests
url = "https://caigunn-api.ap-mic.com/api/external/chatbot/messages?offset=OFFSET&limit=LIMIT&start_at=START_AT&end_at=END_AT&nickname=NICKNAME"
headers = {
"api-key": CHATBOT_API_KEY,
"caigunn-access-token": CAIGUNN_ACCESS_TOKEN,
"uid": CUSTUM_UID,
}
response = requests.request("GET", url, headers=headers)
print(response.json())
The above command returns JSON structured like this:
{
"messages": [
{
"created_at": "2019-08-24T14:15:22Z",
"receive": "string",
"send": "string",
"type": "text",
"id": "string",
"log_type": "string",
"kwargs": {}
}
]
}
This endpoint retrieves historical messages from a conversation.
HTTP Request
GET https://caigunn-api.ap-mic.com/api/external/chatbot/messages
Header Parameters
Name | Type | Mandatory | Default | Description |
---|---|---|---|---|
api-key | string | true | API Key. | |
caigunn-access-token | string | true | Caigunn Access Token. | |
uid | string | true | Custom UID for identify conversation. |
Query Parameters
Name | Type | Mandatory | Default | Description |
---|---|---|---|---|
offset | integer | false | 0 | |
limit | integer | false | 30 | |
start_at | datetime | false | ||
end_at | datetime | false | ||
nickname | string | false | Nickname of the conversation participant. |
Webhook
Subscribe Webhook
curl --location --request PUT 'https://caigunn-api.ap-mic.com/api/external/chatbot/webhook' \
--header 'api-key: CHATBOT_API_KEY' \
--header 'caigunn-access-token: CAIGUNN_ACCESS_TOKEN' \
--header 'Content-Type: application/json' \
--data '{"webhook_url": WEBHOOK_URL}'
import requests
import json
url = "https://caigunn-api.ap-mic.com/api/external/chatbot/webhook"
payload = json.dumps({"webhook_url": WEBHOOK_URL})
headers = {
"api-key": CHATBOT_API_KEY,
"caigunn-access-token": CAIGUNN_ACCESS_TOKEN,
"Content-Type": "application/json",
}
response = requests.request("PUT", url, headers=headers, data=payload)
print(response.json())
The above command returns JSON structured like this:
{
"detail": "Webhook url update successfully"
}
Set webhook url to subscribe chatbot events.
HTTP Request
PUT https://caigunn-api.ap-mic.com/api/external/chatbot/webhook
Header Parameters
Name | Type | Mandatory | Default | Description |
---|---|---|---|---|
api-key | string | true | API Key. | |
caigunn-access-token | string | true | Caigunn Access Token. |
Request Body Schema
Name | Type | Mandatory | Default | Description |
---|---|---|---|---|
webhook_url | string | true | Webhook url for chatbot event subscripiton. |
Unsubscribe Webhook
curl --location --request DELETE 'https://caigunn-api.ap-mic.com/api/external/chatbot/webhook' \
--header 'api-key: CHATBOT_API_KEY' \
--header 'caigunn-access-token: CAIGUNN_ACCESS_TOKEN'
import requests
import json
url = "https://caigunn-api.ap-mic.com/api/external/chatbot/webhook"
headers = {
"api-key": CHATBOT_API_KEY,
"caigunn-access-token": CAIGUNN_ACCESS_TOKEN
}
response = requests.request("DELETE", url, headers=headers)
print(response.json())
The above command returns JSON structured like this:
{
"detail": "Unsubscribe webhook successfully"
}
Unsubscribe webhook.
HTTP Request
DELETE https://caigunn-api.ap-mic.com/api/external/chatbot/webhook
Header Parameters
Name | Type | Mandatory | Default | Description |
---|---|---|---|---|
api-key | string | true | API Key. | |
caigunn-access-token | string | true | Caigunn Access Token. |
Get Events by Event ID
curl --location 'https://caigunn-api.ap-mic.com/api/external/chatbot/event/{EVENT_ID}' \
--header 'api-key: CHATBOT_API_KEY' \
--header 'caigunn-access-token: CAIGUNN_ACCESS_TOKEN'
import requests
url = "https://caigunn-api.ap-mic.com/api/external/chatbot/event/{EVENT_ID}"
headers = {"api-key": CHATBOT_API_KEY, "caigunn-access-token": CAIGUNN_ACCESS_TOKEN}
response = requests.request("GET", url, headers=headers)
print(response.json())
The above command returns JSON structured like this:
{
"webhook_logs": [
{
"created_at": "2024-07-30T07:48:56.065248Z",
"event_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"event": "crawling",
"status": "initial",
"data": {
"chatbot_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
},
"broadcast_status": "completed"
},
{
"created_at": "2024-07-30T07:50:03.500039Z",
"event_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"event": "crawling",
"status": "completed",
"data": {
"chatbot_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"training_data_ids": ["3fa85f64-5717-4562-b3fc-2c963f66afa6"]
},
"broadcast_status": "completed"
}
]
}
List all training data which will be used in next training.
HTTP Request
GET https://caigunn-api.ap-mic.com/api/external/chatbot/event/{EVENT_ID}
Header Parameters
Name | Type | Mandatory | Default | Description |
---|---|---|---|---|
api-key | string | true | API Key. | |
caigunn-access-token | string | true | Caigunn Access Token. |
Path Parameters
Name | Type | Mandatory | Default | Description |
---|---|---|---|---|
event_id | uuid | true | Event ID. |
Webhook Events
crawling.initial
{
"event": "crawling",
"status": "initial",
"event_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"data": {
"chatbot_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
}
crawling.completed
{
"event": "crawling",
"status": "completed",
"event_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"data": {
"chatbot_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"training_data_ids": [
"3fa85f64-5717-4562-b3fc-2c963f66afa6",
"3fa85f64-5717-4562-b3fc-2c963f66afa6",
"3fa85f64-5717-4562-b3fc-2c963f66afa6"
]
}
}
uploading.initial
{
"event": "uploading",
"status": "initial",
"event_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"data": {
"chatbot_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
}
uploading.completed
{
"event": "uploading",
"status": "completed",
"event_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"data": {
"chatbot_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"training_data_ids": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"filename": "filename"
},
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"filename": "filename",
"status": "failed",
"detail": "Unsupport file format"
}
]
}
}
uploading.failed
{
"event": "uploading",
"status": "failed",
"event_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"data": {
"chatbot_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
}
training.initial
{
"event": "training",
"status": "initial",
"event_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"data": {
"chatbot_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
}
training.completed
{
"event": "training",
"status": "completed",
"event_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"data": {
"chatbot_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"model_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"training_data_ids": [
"3fa85f64-5717-4562-b3fc-2c963f66afa6",
"3fa85f64-5717-4562-b3fc-2c963f66afa6",
"3fa85f64-5717-4562-b3fc-2c963f66afa6"
]
}
}
training.failed
Detail |
---|
Training data not found |
Character limit exceeded |
{
"event": "training",
"status": "failed",
"event_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"data": {
"chatbot_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"detail": ""
}
}
Errors
The CaiGunn API uses the following error codes:
Error Code | Meaning |
---|---|
400 | Bad Request. |
401 | Unauthorized. |
403 | Forbidden. |
404 | Not Found. |
405 | Method Not Allowed. |
406 | Not Acceptable. |
500 | Internal Server Error. |
503 | Service Unavailable. |