Skip to main content
POST
Create a chatbot

Authorizations

Authorization
string
header
required

Send your API key as Authorization: Bearer aw_live_…. Manage keys in the dashboard under Settings → API Keys.

Headers

Idempotency-Key
string

Opaque key that makes this POST safe to retry. Responses are cached for 24h per API key.

Maximum string length: 255

Body

application/json
name
string
required
Minimum string length: 1
description
string
logo_url
string<uri>

Public image URL for the chatbot logo. Server fetches the bytes (SSRF-checked), stores them in your organization's asset library, links the asset to this chatbot, and returns the resolved storage URL on the response. Bytes are content-addressed and de-duplicated within the organization.

Example:

"https://cdn.example.com/acme-logo.png"

welcome_message
string
welcome_subtitle
string
system_prompt
string
model
string
primary_color
string
Pattern: ^#[0-9a-fA-F]{6}$
tone
enum<string>
Available options:
professional,
friendly,
casual,
formal,
empathetic
suggestions
(string | object)[] | null
human_support_enabled
boolean
page_ids
string<uuid>[]
article_ids
string<uuid>[]

Articles the chatbot draws on for every conversation. Replace-only on write: send the full desired set, omit to leave untouched, [] to detach all. Item-specific content (a room's TV manual) belongs on the QR code, QR group, product or object instead, via their own article_ids.

category_ids
string<uuid>[]

Article categories (folders) the chatbot draws on. A linked category includes every article inside it and its sub-categories, now and in future. Replace-only on write: send the full desired set, omit to leave untouched, [] to detach all.

password
string | null
location
object
web_search_enabled
boolean

Response

Chatbot created

object
string
required
Allowed value: "chatbot"
id
string<uuid>
required
Example:

"8f3a9d2e-1b4c-4f5d-9e8a-7c3b2a1d0f9e"

name
string
required
Example:

"Support Bot"

slug
string
required
Example:

"support-bot"

public_slug
string
required
Example:

"k7Hq3M2"

url
string<uri>
required
Example:

"https://chatbot.awardee.com/k7Hq3M2"

status
enum<string>
required
Available options:
draft,
active,
paused,
archived
description
string | null
required
Example:

"Public-facing support assistant for Acme Inc."

welcome_message
string | null
required
Example:

"Hi! How can I help?"

welcome_subtitle
string | null
required
system_prompt
string | null
required
Example:

"You are a helpful support agent for Acme Inc."

model
string | null
required
Example:

"gpt-5.4-nano"

primary_color
string | null
required
Example:

"#007495"

logo_url
string | null
required

Resolved public URL of the chatbot logo. Derived server-side from the chatbot's underlying asset reference — the chatbot row itself does not store a URL. On POST/PATCH, pass logo_url as a CONVENIENCE: the server fetches the bytes (SSRF-checked), stores them in the org's asset library (with content-hash dedup), and links the new asset to the chatbot. Send null to clear the logo.

Example:

"https://cdn.awardee.com/logos/acme.png"

tone
string | null
required
Example:

"friendly"

suggestions
object[] | null
required

Starter prompts shown beneath the welcome heading. Each item is an object with an optional title (display label) and a prompt (the text sent on tap).

Example:
human_support_enabled
boolean
required
password_protected
boolean
required
page_ids
string<uuid>[]
required
Example:
article_ids
string<uuid>[]
required

Articles the chatbot draws on for every conversation. Replace-only on write: send the full desired set, omit to leave untouched, [] to detach all. Item-specific content (a room's TV manual) belongs on the QR code, QR group, product or object instead, via their own article_ids.

category_ids
string<uuid>[]
required

Article categories (folders) the chatbot draws on. A linked category includes every article inside it and its sub-categories, now and in future. Replace-only on write: send the full desired set, omit to leave untouched, [] to detach all.

location
object
required
web_search_enabled
boolean
required
conversation_count
number | null
required
last_active_at
string<date-time> | null
required
Pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
created_at
string<date-time>
required
Pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
updated_at
string<date-time>
required
Pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$