Code samples use your device
. Create an API key under API keys.API reference · Account
Onboarding
List industry starter packs
GET
/v1/onboarding/packsIndustry starter packs (welcome message, business hours, chatbot flows, message templates, CRM fields, segments, satisfaction survey) with what each contains.
Query parameters
langstringLanguage of the names/summaries (defaulten)
Responses
- 200Packs
Response fields
packsarray of objectrequiredpacks[].idstringrequiredpacks[].namestringrequiredpacks[].summarystringrequiredpacks[].countsobjectrequiredpacks[].counts.templatesintegerrequiredpacks[].counts.fieldsintegerrequiredpacks[].counts.segmentsintegerrequired
Request
curl "https://api.chatkomodo.com/v1/onboarding/packs" \
-H "Authorization: Bearer $CHATKOMODO_API_KEY"const res = await fetch('https://api.chatkomodo.com/v1/onboarding/packs', {
method: 'GET',
headers: {
Authorization: `Bearer ${process.env.CHATKOMODO_API_KEY}`,
},
});
const data = await res.json();
if (!res.ok) throw new Error(`${data.code}: ${data.error}`);
console.log(data);import os
import requests
res = requests.get(
"https://api.chatkomodo.com/v1/onboarding/packs",
headers={
"Authorization": f"Bearer {os.environ['CHATKOMODO_API_KEY']}",
},
timeout=30,
)
res.raise_for_status()
print(res.json())<?php
require 'vendor/autoload.php';
$client = new GuzzleHttp\Client();
$res = $client->request('GET', 'https://api.chatkomodo.com/v1/onboarding/packs', [
'headers' => [
'Authorization' => 'Bearer ' . getenv('CHATKOMODO_API_KEY'),
],
]);
print_r(json_decode((string) $res->getBody(), true));Response 200
{
"packs": [
{
"id": "01JA5V6Q8M2H7G4K9P3T0R1S2X",
"name": "Example",
"summary": "string",
"counts": {
"templates": 1,
"fields": 1,
"segments": 1
}
}
]
}Preview a starter pack
GET
/v1/onboarding/packs/{industry}Full preview of one pack, in the requested language (default: the business language).
Path parameters
industrystringrequired
Query parameters
langstringLanguage of the names/summaries (defaulten)
Responses
- 200Pack
Response fields
packobjectrequired
- 404Unknown industry
Request
curl "https://api.chatkomodo.com/v1/onboarding/packs/restaurants" \
-H "Authorization: Bearer $CHATKOMODO_API_KEY"const res = await fetch('https://api.chatkomodo.com/v1/onboarding/packs/restaurants', {
method: 'GET',
headers: {
Authorization: `Bearer ${process.env.CHATKOMODO_API_KEY}`,
},
});
const data = await res.json();
if (!res.ok) throw new Error(`${data.code}: ${data.error}`);
console.log(data);import os
import requests
res = requests.get(
"https://api.chatkomodo.com/v1/onboarding/packs/restaurants",
headers={
"Authorization": f"Bearer {os.environ['CHATKOMODO_API_KEY']}",
},
timeout=30,
)
res.raise_for_status()
print(res.json())<?php
require 'vendor/autoload.php';
$client = new GuzzleHttp\Client();
$res = $client->request('GET', 'https://api.chatkomodo.com/v1/onboarding/packs/restaurants', [
'headers' => [
'Authorization' => 'Bearer ' . getenv('CHATKOMODO_API_KEY'),
],
]);
print_r(json_decode((string) $res->getBody(), true));Response 200
{
"pack": {}
}Apply a starter pack
POST
/v1/onboarding/applyWrite a pack into the tenant's own configuration. fill (default) only adds what is missing; replace overwrites the pack's own items (same setting, template name, field key or segment name).
Request body
industrystringrequiredpartsarray of stringDefault: all partsmodestringlangstringLanguage of the created texts (default: the business language)set_profile_industrybooleanAlso store the industry on the business profile
Responses
- 200What was created, updated or skipped per part
Response fields
industrystringrequiredlangstringrequiredmodestringrequiredpartsobjectrequired
- 404Unknown industry
Request
curl -X POST "https://api.chatkomodo.com/v1/onboarding/apply" \
-H "Authorization: Bearer $CHATKOMODO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"industry": "retail",
"parts": [
"welcome",
"templates",
"segments"
],
"mode": "fill",
"lang": "en",
"set_profile_industry": true
}'const res = await fetch('https://api.chatkomodo.com/v1/onboarding/apply', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.CHATKOMODO_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
"industry": "retail",
"parts": [
"welcome",
"templates",
"segments"
],
"mode": "fill",
"lang": "en",
"set_profile_industry": true
}),
});
const data = await res.json();
if (!res.ok) throw new Error(`${data.code}: ${data.error}`);
console.log(data);import os
import requests
res = requests.post(
"https://api.chatkomodo.com/v1/onboarding/apply",
headers={
"Authorization": f"Bearer {os.environ['CHATKOMODO_API_KEY']}",
},
json={
"industry": "retail",
"parts": [
"welcome",
"templates",
"segments",
],
"mode": "fill",
"lang": "en",
"set_profile_industry": True,
},
timeout=30,
)
res.raise_for_status()
print(res.json())<?php
require 'vendor/autoload.php';
$client = new GuzzleHttp\Client();
$res = $client->request('POST', 'https://api.chatkomodo.com/v1/onboarding/apply', [
'headers' => [
'Authorization' => 'Bearer ' . getenv('CHATKOMODO_API_KEY'),
],
'json' => [
'industry' => 'retail',
'parts' => [
'welcome',
'templates',
'segments',
],
'mode' => 'fill',
'lang' => 'en',
'set_profile_industry' => true,
],
]);
print_r(json_decode((string) $res->getBody(), true));Response 200
{
"industry": "string",
"lang": "en",
"mode": "string",
"parts": {}
}Get the setup checklist
GET
/v1/onboarding/statusThe setup checklist with live completion.
Responses
- 200Checklist
Response fields
itemsarray of objectrequireditems[].idstringrequireditems[].donebooleanrequireditems[].optionalbooleandoneintegerrequiredtotalintegerrequireddismissedbooleanrequiredindustrystring | nullrequired
Request
curl "https://api.chatkomodo.com/v1/onboarding/status" \
-H "Authorization: Bearer $CHATKOMODO_API_KEY"const res = await fetch('https://api.chatkomodo.com/v1/onboarding/status', {
method: 'GET',
headers: {
Authorization: `Bearer ${process.env.CHATKOMODO_API_KEY}`,
},
});
const data = await res.json();
if (!res.ok) throw new Error(`${data.code}: ${data.error}`);
console.log(data);import os
import requests
res = requests.get(
"https://api.chatkomodo.com/v1/onboarding/status",
headers={
"Authorization": f"Bearer {os.environ['CHATKOMODO_API_KEY']}",
},
timeout=30,
)
res.raise_for_status()
print(res.json())<?php
require 'vendor/autoload.php';
$client = new GuzzleHttp\Client();
$res = $client->request('GET', 'https://api.chatkomodo.com/v1/onboarding/status', [
'headers' => [
'Authorization' => 'Bearer ' . getenv('CHATKOMODO_API_KEY'),
],
]);
print_r(json_decode((string) $res->getBody(), true));Response 200
{
"items": [
{
"id": "profile",
"done": true,
"optional": true
}
],
"done": 1,
"total": 12,
"dismissed": true,
"industry": "string"
}Update the setup checklist
PUT
/v1/onboarding/stateDismiss the checklist or tick the manual "consent" step.
Request body
dismissedbooleancheckedobjectchecked.consentboolean
Responses
- 200New state
Response fields
dismissedbooleanrequiredcheckedobjectrequiredchecked.consentboolean
Request
curl -X PUT "https://api.chatkomodo.com/v1/onboarding/state" \
-H "Authorization: Bearer $CHATKOMODO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"dismissed": true,
"checked": {
"consent": true
}
}'const res = await fetch('https://api.chatkomodo.com/v1/onboarding/state', {
method: 'PUT',
headers: {
Authorization: `Bearer ${process.env.CHATKOMODO_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
"dismissed": true,
"checked": {
"consent": true
}
}),
});
const data = await res.json();
if (!res.ok) throw new Error(`${data.code}: ${data.error}`);
console.log(data);import os
import requests
res = requests.put(
"https://api.chatkomodo.com/v1/onboarding/state",
headers={
"Authorization": f"Bearer {os.environ['CHATKOMODO_API_KEY']}",
},
json={
"dismissed": True,
"checked": {
"consent": True,
},
},
timeout=30,
)
res.raise_for_status()
print(res.json())<?php
require 'vendor/autoload.php';
$client = new GuzzleHttp\Client();
$res = $client->request('PUT', 'https://api.chatkomodo.com/v1/onboarding/state', [
'headers' => [
'Authorization' => 'Bearer ' . getenv('CHATKOMODO_API_KEY'),
],
'json' => [
'dismissed' => true,
'checked' => [
'consent' => true,
],
],
]);
print_r(json_decode((string) $res->getBody(), true));Response 200
{
"dismissed": true,
"checked": {
"consent": true
}
}