List Engage queue recipients
curl --request GET \
--url https://app.forecastable.com/api/v1/engage/queue/{queueId}/recipients \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.forecastable.com/api/v1/engage/queue/{queueId}/recipients"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.forecastable.com/api/v1/engage/queue/{queueId}/recipients', 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.forecastable.com/api/v1/engage/queue/{queueId}/recipients",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.forecastable.com/api/v1/engage/queue/{queueId}/recipients"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.forecastable.com/api/v1/engage/queue/{queueId}/recipients")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.forecastable.com/api/v1/engage/queue/{queueId}/recipients")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": "<string>",
"engagement": {
"openedAt": "2023-11-07T05:31:56Z",
"linkClickedAt": "2023-11-07T05:31:56Z",
"linkClickCount": 1,
"repliedAt": "2023-11-07T05:31:56Z",
"bouncedAt": "2023-11-07T05:31:56Z"
},
"recipientEmail": "<string>",
"recipientName": "<string>",
"scheduledAt": "2023-11-07T05:31:56Z",
"sentAt": "2023-11-07T05:31:56Z",
"cancelledAt": "2023-11-07T05:31:56Z",
"errorMessage": "<string>"
}
],
"pagination": {
"hasNextPage": true,
"totalCount": 1,
"nextCursor": "<string>",
"page": 2,
"pageSize": 2,
"totalPages": 2
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}Engage Queue
List Engage queue recipients
Per-recipient delivery status and engagement flags for a grouped send.
GET
/
engage
/
queue
/
{queueId}
/
recipients
List Engage queue recipients
curl --request GET \
--url https://app.forecastable.com/api/v1/engage/queue/{queueId}/recipients \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.forecastable.com/api/v1/engage/queue/{queueId}/recipients"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.forecastable.com/api/v1/engage/queue/{queueId}/recipients', 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.forecastable.com/api/v1/engage/queue/{queueId}/recipients",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.forecastable.com/api/v1/engage/queue/{queueId}/recipients"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.forecastable.com/api/v1/engage/queue/{queueId}/recipients")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.forecastable.com/api/v1/engage/queue/{queueId}/recipients")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": "<string>",
"engagement": {
"openedAt": "2023-11-07T05:31:56Z",
"linkClickedAt": "2023-11-07T05:31:56Z",
"linkClickCount": 1,
"repliedAt": "2023-11-07T05:31:56Z",
"bouncedAt": "2023-11-07T05:31:56Z"
},
"recipientEmail": "<string>",
"recipientName": "<string>",
"scheduledAt": "2023-11-07T05:31:56Z",
"sentAt": "2023-11-07T05:31:56Z",
"cancelledAt": "2023-11-07T05:31:56Z",
"errorMessage": "<string>"
}
],
"pagination": {
"hasNextPage": true,
"totalCount": 1,
"nextCursor": "<string>",
"page": 2,
"pageSize": 2,
"totalPages": 2
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}Authorizations
Partner OAuth2 flows for integration API access tokens. Claude MCP custom connectors use authorization code with PKCE S256.
Headers
Active organization UUID. Required for authenticated requests when the principal has access to multiple organizations.
Pattern:
^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$Path Parameters
Queue row UUID or normalized grouped-send display key.
Required string length:
1 - 200Query Parameters
Read-only convenience alias for X-Organization-Id. Legacy subscriberId query param is also accepted.
Pattern:
^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$Required range:
x >= 1Required range:
1 <= x <= 200Was this page helpful?
⌘I