Channels
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.
GET
/
api
/
v1
/
messaging
/
conversations
/
connected_recipients
List connected recipients
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>"
}Query Parameters
⌘I
List connected recipients
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>"
}