curl --request POST \
--url https://release0.com/api/v1/sessions/{sessionId}/continue \
--header 'Content-Type: application/json' \
--data '
{
"message": {
"type": "text",
"text": "<string>",
"attachedFileUrls": [
"<string>"
]
},
"textBubbleContentFormat": "richText"
}
'import requests
url = "https://release0.com/api/v1/sessions/{sessionId}/continue"
payload = {
"message": {
"type": "text",
"text": "<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: 'text', text: '<string>', attachedFileUrls: ['<string>']},
textBubbleContentFormat: 'richText'
})
};
fetch('https://release0.com/api/v1/sessions/{sessionId}/continue', 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://release0.com/api/v1/sessions/{sessionId}/continue",
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' => 'text',
'text' => '<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://release0.com/api/v1/sessions/{sessionId}/continue"
payload := strings.NewReader("{\n \"message\": {\n \"type\": \"text\",\n \"text\": \"<string>\",\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://release0.com/api/v1/sessions/{sessionId}/continue")
.header("Content-Type", "application/json")
.body("{\n \"message\": {\n \"type\": \"text\",\n \"text\": \"<string>\",\n \"attachedFileUrls\": [\n \"<string>\"\n ]\n },\n \"textBubbleContentFormat\": \"richText\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://release0.com/api/v1/sessions/{sessionId}/continue")
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\": \"text\",\n \"text\": \"<string>\",\n \"attachedFileUrls\": [\n \"<string>\"\n ]\n },\n \"textBubbleContentFormat\": \"richText\"\n}"
response = http.request(request)
puts response.read_body{
"messages": [
{
"id": "<string>",
"type": "text",
"content": {
"type": "richText",
"richText": "<unknown>"
}
}
],
"lastMessageNewFormat": "<string>",
"input": {
"id": "<string>",
"type": "text input",
"outgoingEdgeId": "<string>",
"options": {
"labels": {
"placeholder": "<string>",
"button": "<string>"
},
"variableId": "<string>",
"isLong": true,
"isPassword": true,
"isRequired": true,
"audioClip": {
"isEnabled": true,
"saveVariableId": "<string>",
"visibility": "Auto"
},
"attachments": {
"isEnabled": true,
"saveVariableId": "<string>",
"visibility": "Auto"
}
},
"prefilledValue": "<string>",
"runtimeOptions": {
"paymentIntentSecret": "<string>",
"amountLabel": "<string>",
"publicKey": "<string>"
}
},
"clientSideActions": [
{
"type": "scriptToExecute",
"scriptToExecute": {
"content": "<string>",
"args": [
{
"id": "<string>",
"value": "<string>"
}
],
"isCode": true
},
"lastBubbleBlockId": "<string>",
"expectsDedicatedReply": true
}
],
"logs": [
{
"status": "<string>",
"description": "<string>",
"details": "<unknown>"
}
],
"dynamicTheme": {
"hostAvatarUrl": "<string>",
"guestAvatarUrl": "<string>"
},
"progress": 123
}{
"code": "BAD_REQUEST",
"message": "Invalid input data",
"issues": []
}{
"code": "INTERNAL_SERVER_ERROR",
"message": "Internal server error",
"issues": []
}Continue chat
API endpoint used to continue an existing chat session by submitting new user input.
curl --request POST \
--url https://release0.com/api/v1/sessions/{sessionId}/continue \
--header 'Content-Type: application/json' \
--data '
{
"message": {
"type": "text",
"text": "<string>",
"attachedFileUrls": [
"<string>"
]
},
"textBubbleContentFormat": "richText"
}
'import requests
url = "https://release0.com/api/v1/sessions/{sessionId}/continue"
payload = {
"message": {
"type": "text",
"text": "<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: 'text', text: '<string>', attachedFileUrls: ['<string>']},
textBubbleContentFormat: 'richText'
})
};
fetch('https://release0.com/api/v1/sessions/{sessionId}/continue', 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://release0.com/api/v1/sessions/{sessionId}/continue",
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' => 'text',
'text' => '<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://release0.com/api/v1/sessions/{sessionId}/continue"
payload := strings.NewReader("{\n \"message\": {\n \"type\": \"text\",\n \"text\": \"<string>\",\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://release0.com/api/v1/sessions/{sessionId}/continue")
.header("Content-Type", "application/json")
.body("{\n \"message\": {\n \"type\": \"text\",\n \"text\": \"<string>\",\n \"attachedFileUrls\": [\n \"<string>\"\n ]\n },\n \"textBubbleContentFormat\": \"richText\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://release0.com/api/v1/sessions/{sessionId}/continue")
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\": \"text\",\n \"text\": \"<string>\",\n \"attachedFileUrls\": [\n \"<string>\"\n ]\n },\n \"textBubbleContentFormat\": \"richText\"\n}"
response = http.request(request)
puts response.read_body{
"messages": [
{
"id": "<string>",
"type": "text",
"content": {
"type": "richText",
"richText": "<unknown>"
}
}
],
"lastMessageNewFormat": "<string>",
"input": {
"id": "<string>",
"type": "text input",
"outgoingEdgeId": "<string>",
"options": {
"labels": {
"placeholder": "<string>",
"button": "<string>"
},
"variableId": "<string>",
"isLong": true,
"isPassword": true,
"isRequired": true,
"audioClip": {
"isEnabled": true,
"saveVariableId": "<string>",
"visibility": "Auto"
},
"attachments": {
"isEnabled": true,
"saveVariableId": "<string>",
"visibility": "Auto"
}
},
"prefilledValue": "<string>",
"runtimeOptions": {
"paymentIntentSecret": "<string>",
"amountLabel": "<string>",
"publicKey": "<string>"
}
},
"clientSideActions": [
{
"type": "scriptToExecute",
"scriptToExecute": {
"content": "<string>",
"args": [
{
"id": "<string>",
"value": "<string>"
}
],
"isCode": true
},
"lastBubbleBlockId": "<string>",
"expectsDedicatedReply": true
}
],
"logs": [
{
"status": "<string>",
"description": "<string>",
"details": "<unknown>"
}
],
"dynamicTheme": {
"hostAvatarUrl": "<string>",
"guestAvatarUrl": "<string>"
},
"progress": 123
}{
"code": "BAD_REQUEST",
"message": "Invalid input data",
"issues": []
}{
"code": "INTERNAL_SERVER_ERROR",
"message": "Internal server error",
"issues": []
}Path Parameters
Session identifier returned by the start chat response.
Body
- Text
- Audio
Show child attributes
Show child attributes
richText, markdown Response
Successful response
- Text
- Image
- Video
- Audio
- Embed
- Custom embed
Show child attributes
Show child attributes
Message validated and normalized by the backend. For example, responses like tomorrow in a date input are converted into an explicit date value.
- Text
- Buttons
- Email
- Address
- Password
- Autocomplete
- Number
- URL
- Phone number
- Date
- Payment
- Rating
- File
- Picture choice
- Buttons v5
- File input v5
- Picture choice v5
Show child attributes
Show child attributes
Actions to be executed on the client side.
- Script to execute
- Redirect
- Chatwoot
- Google Analytics
- Wait
- Set variable
- Stream OpenAI
- Execute HTTP request
- Inject start props
- Init Pixel
- Exec stream
- Execute code
- Listen to webhook
Show child attributes
Show child attributes
Logs generated during the last execution.
Show child attributes
Show child attributes
If the agent includes dynamic avatars, returns updated avatar URLs whenever their variables change.
Show child attributes
Show child attributes
If the progress bar is enabled, returns a value between 0 and 100 indicating the current progress based on the longest remaining path in the flow.