Skip to main content
POST
/
v1
/
sessions
/
{sessionId}
/
continueChat
Continue chat
curl --request POST \
  --url https://typebot.io/api/v1/sessions/{sessionId}/continueChat \
  --header 'Content-Type: application/json' \
  --data '
{
  "message": {
    "type": "<unknown>",
    "text": "<string>",
    "metadata": {
      "replyId": "<string>"
    },
    "attachedFileUrls": [
      "<string>"
    ]
  },
  "textBubbleContentFormat": "richText"
}
'
import requests

url = "https://typebot.io/api/v1/sessions/{sessionId}/continueChat"

payload = {
    "message": {
        "type": "<unknown>",
        "text": "<string>",
        "metadata": { "replyId": "<string>" },
        "attachedFileUrls": ["<string>"]
    },
    "textBubbleContentFormat": "richText"
}
headers = {"Content-Type": "application/json"}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
const options = {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: JSON.stringify({
    message: {
      type: '<unknown>',
      text: '<string>',
      metadata: {replyId: '<string>'},
      attachedFileUrls: ['<string>']
    },
    textBubbleContentFormat: 'richText'
  })
};

fetch('https://typebot.io/api/v1/sessions/{sessionId}/continueChat', options)
  .then(res => res.json())
  .then(res => console.log(res))
  .catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
  CURLOPT_URL => "https://typebot.io/api/v1/sessions/{sessionId}/continueChat",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => json_encode([
    'message' => [
        'type' => '<unknown>',
        'text' => '<string>',
        'metadata' => [
                'replyId' => '<string>'
        ],
        'attachedFileUrls' => [
                '<string>'
        ]
    ],
    'textBubbleContentFormat' => 'richText'
  ]),
  CURLOPT_HTTPHEADER => [
    "Content-Type: application/json"
  ],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://typebot.io/api/v1/sessions/{sessionId}/continueChat"

	payload := strings.NewReader("{\n  \"message\": {\n    \"type\": \"<unknown>\",\n    \"text\": \"<string>\",\n    \"metadata\": {\n      \"replyId\": \"<string>\"\n    },\n    \"attachedFileUrls\": [\n      \"<string>\"\n    ]\n  },\n  \"textBubbleContentFormat\": \"richText\"\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.post("https://typebot.io/api/v1/sessions/{sessionId}/continueChat")
  .header("Content-Type", "application/json")
  .body("{\n  \"message\": {\n    \"type\": \"<unknown>\",\n    \"text\": \"<string>\",\n    \"metadata\": {\n      \"replyId\": \"<string>\"\n    },\n    \"attachedFileUrls\": [\n      \"<string>\"\n    ]\n  },\n  \"textBubbleContentFormat\": \"richText\"\n}")
  .asString();
require 'uri'
require 'net/http'

url = URI("https://typebot.io/api/v1/sessions/{sessionId}/continueChat")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n  \"message\": {\n    \"type\": \"<unknown>\",\n    \"text\": \"<string>\",\n    \"metadata\": {\n      \"replyId\": \"<string>\"\n    },\n    \"attachedFileUrls\": [\n      \"<string>\"\n    ]\n  },\n  \"textBubbleContentFormat\": \"richText\"\n}"

response = http.request(request)
puts response.read_body
{
  "messages": [
    {
      "id": "<string>",
      "type": "<unknown>",
      "content": {
        "type": "<unknown>",
        "richText": "<unknown>"
      }
    }
  ],
  "lastMessageNewFormat": "<string>",
  "input": {
    "id": "<string>",
    "type": "text input",
    "outgoingEdgeId": "<string>",
    "options": {
      "labels": {
        "placeholder": "<string>",
        "button": "<string>"
      },
      "variableId": "<string>",
      "isLong": true,
      "audioClip": {
        "isEnabled": true,
        "saveVariableId": "<string>"
      },
      "attachments": {
        "isEnabled": true,
        "saveVariableId": "<string>"
      }
    },
    "prefilledValue": "<string>",
    "runtimeOptions": {
      "paymentIntentSecret": "<string>",
      "amountLabel": "<string>",
      "publicKey": "<string>"
    }
  },
  "clientSideActions": [
    {
      "type": "<unknown>",
      "scriptToExecute": {
        "content": "<string>",
        "args": [
          {
            "id": "<string>",
            "value": "<string>"
          }
        ],
        "isUnsafe": true,
        "isCode": true
      },
      "lastBubbleBlockId": "<string>",
      "expectsDedicatedReply": true
    }
  ],
  "logs": [
    {
      "description": "<string>",
      "status": "<string>",
      "details": "<string>",
      "context": "<string>"
    }
  ],
  "dynamicTheme": {
    "hostAvatarUrl": "<string>",
    "guestAvatarUrl": "<string>",
    "backgroundUrl": "<string>"
  },
  "progress": 123
}
{
  "defined": "<unknown>",
  "code": "<unknown>",
  "status": "<unknown>",
  "message": "Bad Request",
  "data": "<unknown>"
}
{
  "defined": "<unknown>",
  "code": "<unknown>",
  "status": "<unknown>",
  "message": "Unauthorized",
  "data": "<unknown>"
}
{
  "defined": "<unknown>",
  "code": "<unknown>",
  "status": "<unknown>",
  "message": "Forbidden",
  "data": "<unknown>"
}
{
  "defined": "<unknown>",
  "code": "<unknown>",
  "status": "<unknown>",
  "message": "Not Found",
  "data": "<unknown>"
}
{
  "defined": "<unknown>",
  "code": "<unknown>",
  "status": "<unknown>",
  "message": "Internal Server Error",
  "data": "<unknown>"
}

Path Parameters

sessionId
string
required

The session ID you got from the startChat response.

Body

application/json
message
object
textBubbleContentFormat
enum<string>
default:richText
Available options:
richText,
markdown

Response

OK

messages
object[]
required
lastMessageNewFormat
string

The sent message is validated and formatted on the backend. For example, if for a date input you replied something like tomorrow, the backend will convert it to a date string. This field returns the formatted message.

input
object
clientSideActions
object[]

Actions to execute on the client side

logs
object[]

Logs that were saved during the last execution

dynamicTheme
object

If the typebot contains dynamic avatars, dynamicTheme returns the new avatar URLs whenever their variables are updated.

progress
number

If progress bar is enabled, this field will return a number between 0 and 100 indicating the current progress based on the longest remaining path of the flow.