Retry delivery of a saved queued turn; never repeats running or uncertain work
curl --request POST \
--url https://app.uselamina.ai/v1/brand-assistant/chats/{chatId}/turns/{turnId}/deliver \
--header 'x-api-key: <api-key>'import requests
url = "https://app.uselamina.ai/v1/brand-assistant/chats/{chatId}/turns/{turnId}/deliver"
headers = {"x-api-key": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {'x-api-key': '<api-key>'}};
fetch('https://app.uselamina.ai/v1/brand-assistant/chats/{chatId}/turns/{turnId}/deliver', 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://app.uselamina.ai/v1/brand-assistant/chats/{chatId}/turns/{turnId}/deliver",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.uselamina.ai/v1/brand-assistant/chats/{chatId}/turns/{turnId}/deliver"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.uselamina.ai/v1/brand-assistant/chats/{chatId}/turns/{turnId}/deliver")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.uselamina.ai/v1/brand-assistant/chats/{chatId}/turns/{turnId}/deliver")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{}{}{}{}{}{}Brand Assistant
Retry saved message delivery
POST
/
v1
/
brand-assistant
/
chats
/
{chatId}
/
turns
/
{turnId}
/
deliver
Retry delivery of a saved queued turn; never repeats running or uncertain work
curl --request POST \
--url https://app.uselamina.ai/v1/brand-assistant/chats/{chatId}/turns/{turnId}/deliver \
--header 'x-api-key: <api-key>'import requests
url = "https://app.uselamina.ai/v1/brand-assistant/chats/{chatId}/turns/{turnId}/deliver"
headers = {"x-api-key": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {'x-api-key': '<api-key>'}};
fetch('https://app.uselamina.ai/v1/brand-assistant/chats/{chatId}/turns/{turnId}/deliver', 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://app.uselamina.ai/v1/brand-assistant/chats/{chatId}/turns/{turnId}/deliver",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.uselamina.ai/v1/brand-assistant/chats/{chatId}/turns/{turnId}/deliver"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.uselamina.ai/v1/brand-assistant/chats/{chatId}/turns/{turnId}/deliver")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.uselamina.ai/v1/brand-assistant/chats/{chatId}/turns/{turnId}/deliver")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{}{}{}{}{}{}Use this endpoint if a saved message remains queued after delivery was interrupted, including after reopening the chat. Read the chat to obtain its saved turn ID, then retry that turn without creating another message or increasing its original credit budget.
Only the chat owner in the authenticated workspace can retry delivery. Running, completed, cancelled, approval-waiting and uncertain turns are not redispatched. Duplicate delivery callbacks must claim the saved queued turn atomically before any model or generation work starts.