Skip to main content
RyzeAPI integrates with Typebot. You register conversational bots that drive the conversation on WhatsApp: the incoming message is sent to the Typebot flow (startChat / continueChat) and the replies flow back to WhatsApp, including text, media, and native buttons/lists.
Response shape, every endpoint returns the envelope { "success": true, "message": "...", <content>, "meta": {...}? } (there is no data wrapper). Errors return { "success": false, "error": { "message": "...", "code": "..."? } }.

How it works

  1. You register a bot with POST /api/typebot/set/:instance (or inline, when creating the instance).
  2. On every message received on WhatsApp, RyzeAPI picks the bot by its trigger and sends the text to the Typebot flow.
  3. The flow’s replies flow back to RyzeAPI and are delivered on WhatsApp.
  4. The session is persisted: restarting the service does not lose the ongoing conversation.
A single instance can have several bots at once, routed by trigger. An all bot works as a catch-all (any message starts it); keyword bots only fire when the message matches the configured operator/value.

Buttons and Pix via text markup

Natively, Typebot only offers the reply button (the choice node). To send the other WhatsApp buttons (link, call, copy) and a Pix message, write a small markup inside a regular text bubble in your flow. RyzeAPI recognizes the markup, strips it from the text, and sends the matching interactive message; whatever text remains in the bubble becomes the message body. Reply buttons with a supporting text:
Several link buttons:
A Pix charge:
WhatsApp allows at most 3 buttons (reply/link/call/copy) per message. If you write more than 3, they are sent in groups of 3. Pix is its own message type, so it always goes out separately from the other buttons. The label after | in [pix:...] does not change the payment button (WhatsApp uses its native label); the text shown above the Pix button is the rest of the bubble.
Do not use the characters |, ], or ; inside the text or the parameters, they separate the markup fields. A malformed token (unknown type, missing parameter) is ignored and the rest of the bubble text is sent normally.

Management endpoints

Create bot

POST /api/typebot/set/:instance, creates a new bot (create-only).

Edit bot

PATCH /api/typebot/update/:instance, partial update of an existing bot (by botId).

List bots

GET /api/typebot/list/:instance?botId=, the instance’s bots (or one) with live enrichment + integration status.

Remove bot(s)

DELETE /api/typebot/delete/:instance?botId=, removes one bot, or all when botId is omitted.

Start flow

POST /api/typebot/start/:instance, triggers a flow manually for a number.

Live sessions

GET/POST /api/typebot/sessions/:instance, list ongoing conversations or pause/resume/close one.
The list endpoint enriches each bot with active_sessions (count of opened + paused sessions) and last_activity_at (RFC3339, absent when the bot never ran).

Routing by trigger

Each incoming message is evaluated against the enabled bots, in the following priority order (a specific keyword beats the catch-all):
Uniqueness: each instance can have only one enabled all bot; keyword bots are unique per combination of (operator, value).

Inline activation when creating the instance

A bot can be configured together with instance creation, without a separate set call. Just send the typebot* block in the body of POST /api/instance/new:
If activation fails (invalid fields), the instance is still created, the typebot object comes back with status: "error" and error: "<message>". You can then call POST /api/typebot/set/:instance to configure the bot without recreating the instance.

Data model

The server persists the data in two tables: You can also keep the bot from auto-starting when the operator started the conversation (noStartFromMe), and keep the conversation open when the flow ends (keepOpen, status held). Whenever a bot is created, edited, or removed, RyzeAPI recomputes the full list of the instance’s bots and (re)activates the integration. When the last bot is removed, the integration is deactivated and the local link is deleted.

Next steps

Create a bot

Configure the first bot with POST /api/typebot/set/:instance.

Typebot errors

Mapping table of the integration’s HTTP status codes and messages.