List connected recipients
List the people you can start a conversation with. Callable by a signed-in company admin or rep whose role includes the messaging view permission.
Without kind, returns the company’s active members, sorted by first name, excluding you and anyone you have blocked or who has blocked you; pass id to also exclude members already in that conversation. With kind, returns your own contacts instead: external for contacts ready for a conversation, sms for contacts with a phone number, and email for contacts with an email address.
Results are paginated by page number with page and per_page (default 20). The response is a two-element array: the pagination details, then the recipients in items.
curl --request GET \
--url https://api.fluid.app/api/v1/messaging/conversations/connected_recipients \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.fluid.app/api/v1/messaging/conversations/connected_recipients"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.fluid.app/api/v1/messaging/conversations/connected_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://api.fluid.app/api/v1/messaging/conversations/connected_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://api.fluid.app/api/v1/messaging/conversations/connected_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://api.fluid.app/api/v1/messaging/conversations/connected_recipients")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/v1/messaging/conversations/connected_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[
{
"pagination": {
"current": 1,
"previous": null,
"next": 2,
"per_page": 20,
"pages": 2,
"count": 37
}
},
{
"items": [
{
"id": 48211,
"receivable_id": 7802,
"receivable_type": "UserCompany",
"first_name": "Dwight",
"last_name": "Schrute",
"status": "active",
"last_online": "2026-09-30T14:58:03Z",
"avatar_background": "#0EA5E9",
"avatar_url": null,
"image_url": null,
"country_name": "United States",
"pro_user": true,
"blocked": null,
"left_conversation_at": null,
"discarded_at": null
},
{
"id": 48307,
"receivable_id": 7859,
"receivable_type": "UserCompany",
"first_name": "Jim",
"last_name": "Halpert",
"status": "active",
"last_online": "2026-09-30T09:17:31Z",
"avatar_background": "#F59E0B",
"avatar_url": null,
"image_url": null,
"country_name": "United States",
"pro_user": false,
"blocked": null,
"left_conversation_at": null,
"discarded_at": null
},
{
"id": 48355,
"receivable_id": 7864,
"receivable_type": "UserCompany",
"first_name": "Pam",
"last_name": "Beesly",
"status": "active",
"last_online": "2026-09-29T21:03:55Z",
"avatar_background": "#EC4899",
"avatar_url": null,
"image_url": null,
"country_name": "United States",
"pro_user": false,
"blocked": null,
"left_conversation_at": null,
"discarded_at": null
}
]
}
]{
"message": "<string>"
}Authorizations
Bearer token authentication
Query Parameters
Filter by recipient kind
external, sms, email Conversation ID to exclude existing members
Search query
Response
A page of recipients.
- Option 1
- Option 2
Page-number pagination details for a page of results.
Show child attributes
Show child attributes
curl --request GET \
--url https://api.fluid.app/api/v1/messaging/conversations/connected_recipients \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.fluid.app/api/v1/messaging/conversations/connected_recipients"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.fluid.app/api/v1/messaging/conversations/connected_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://api.fluid.app/api/v1/messaging/conversations/connected_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://api.fluid.app/api/v1/messaging/conversations/connected_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://api.fluid.app/api/v1/messaging/conversations/connected_recipients")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/v1/messaging/conversations/connected_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[
{
"pagination": {
"current": 1,
"previous": null,
"next": 2,
"per_page": 20,
"pages": 2,
"count": 37
}
},
{
"items": [
{
"id": 48211,
"receivable_id": 7802,
"receivable_type": "UserCompany",
"first_name": "Dwight",
"last_name": "Schrute",
"status": "active",
"last_online": "2026-09-30T14:58:03Z",
"avatar_background": "#0EA5E9",
"avatar_url": null,
"image_url": null,
"country_name": "United States",
"pro_user": true,
"blocked": null,
"left_conversation_at": null,
"discarded_at": null
},
{
"id": 48307,
"receivable_id": 7859,
"receivable_type": "UserCompany",
"first_name": "Jim",
"last_name": "Halpert",
"status": "active",
"last_online": "2026-09-30T09:17:31Z",
"avatar_background": "#F59E0B",
"avatar_url": null,
"image_url": null,
"country_name": "United States",
"pro_user": false,
"blocked": null,
"left_conversation_at": null,
"discarded_at": null
},
{
"id": 48355,
"receivable_id": 7864,
"receivable_type": "UserCompany",
"first_name": "Pam",
"last_name": "Beesly",
"status": "active",
"last_online": "2026-09-29T21:03:55Z",
"avatar_background": "#EC4899",
"avatar_url": null,
"image_url": null,
"country_name": "United States",
"pro_user": false,
"blocked": null,
"left_conversation_at": null,
"discarded_at": null
}
]
}
]{
"message": "<string>"
}