Create a bot
Creates the bot, its draft, its test copy and — for a landbot bot — a web channel.
Without diagram the draft holds a start point and nothing else. With one, the bot can be
talked to straight away; a diagram that breaks a rule is refused and nothing is created.
source duplicates a bot. Not built yet: 501.
Body·
- Type: enumchannel
_family requiredvalueslandbotwhatsappfacebookapichat - Type: stringnamemax length:50required
- Type:diagramProperties: 3
The diagram the bot is born with, stored exactly as sent.
Checked before anything else: break a rule and you get
422with nothing created. This is the one place a block we do not describe is refused rather than stored.Omit it and the bot starts with a start point and nothing else. Cannot go with
source. - Type:sourceProperties: 1
Duplicate an existing bot. Not served yet: on its own it is refused with
501and nothing is created. Cannot be combined withdiagram; sending both is rejected with422. - Type: integerworkspace
The workspace to file the bot under. A workspace that does not exist, or belongs to another brand, is rejected with
422.
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
curl https://api.landbot.io/v0-alpha/bots \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Token YOUR_AGENT_TOKEN' \
--data '{
"name": "Support bot",
"channel_family": "landbot"
}'
{
"data": {
"id": "123e4567-e89b-12d3-a456-426614174000",
"name": "string",
"channel_family": "landbot",
"channels": [
"123e4567-e89b-12d3-a456-426614174000"
],
"state": "active",
"is_active": true,
"preview_only": true,
"required_tier": "sandbox",
"builder_version": "string",
"workspace": 1,
"is_published": true,
"builder_url": "https://example.com",
"has_unpublished_changes": true,
"created_at": "2026-09-16T09:18:19",
"edited_at": "2026-09-16T09:18:19",
"last_published_at": "2026-09-16T09:18:19"
}
}