ChatKomodo Docs Home Sign in

API reference · Account

Onboarding

List industry starter packs

GET/v1/onboarding/packs

Industry starter packs (welcome message, business hours, chatbot flows, message templates, CRM fields, segments, satisfaction survey) with what each contains.

Query parameters

  • langstring
    Language of the names/summaries (default en)
    One of: en, id

Responses

  • 200Packs
    Response fields
    • packsarray of objectrequired
    • packs[].idstringrequired
    • packs[].namestringrequired
    • packs[].summarystringrequired
    • packs[].countsobjectrequired
    • packs[].counts.templatesintegerrequired
    • packs[].counts.fieldsintegerrequired
    • packs[].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
    One of: ecommerce, retail, restaurant, healthcare, beauty, fitness, education, real_estate, automotive, travel, hospitality, logistics, finance, insurance, saas, professional_services, events, nonprofit, government, other

Query parameters

  • langstring
    Language of the names/summaries (default en)
    One of: en, id

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/apply

Write 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

  • industrystringrequired
    One of: ecommerce, retail, restaurant, healthcare, beauty, fitness, education, real_estate, automotive, travel, hospitality, logistics, finance, insurance, saas, professional_services, events, nonprofit, government, other
  • partsarray of string
    Default: all parts
  • modestring
    One of: fill, replace
  • langstring
    Language of the created texts (default: the business language)
    One of: en, id
  • set_profile_industryboolean
    Also store the industry on the business profile

Responses

  • 200What was created, updated or skipped per part
    Response fields
    • industrystringrequired
    • langstringrequired
    • modestringrequired
    • partsobjectrequired
  • 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/status

The setup checklist with live completion.

Responses

  • 200Checklist
    Response fields
    • itemsarray of objectrequired
    • items[].idstringrequired
      One of: profile, industry, connect, contacts, automation, first_message, consent, plan
    • items[].donebooleanrequired
    • items[].optionalboolean
    • doneintegerrequired
    • totalintegerrequired
    • dismissedbooleanrequired
    • industrystring | 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/state

Dismiss the checklist or tick the manual "consent" step.

Request body

  • dismissedboolean
  • checkedobject
  • checked.consentboolean

Responses

  • 200New state
    Response fields
    • dismissedbooleanrequired
    • checkedobjectrequired
    • checked.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
  }
}