List conversations
curl --request GET \
--url https://api.reachhunt.ai/api/v1/conversations \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.reachhunt.ai/api/v1/conversations"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.reachhunt.ai/api/v1/conversations', 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.reachhunt.ai/api/v1/conversations",
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.reachhunt.ai/api/v1/conversations"
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.reachhunt.ai/api/v1/conversations")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.reachhunt.ai/api/v1/conversations")
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{
"status": true,
"data": {
"items": [
{
"conversationId": "1876543210987654321:1900000000000000001",
"accountId": "4f1c9a2e-6b7d-4c3a-9e51-0a8b7c6d5e4f",
"platform": "x",
"type": "one_to_one",
"participantCount": 2,
"participants": [
{
"platform": "x",
"platformId": "1876543210987654321",
"userName": "janedoe",
"name": "Jane Doe",
"url": "https://x.com/janedoe",
"profilePicture": "https://example.com/avatars/janedoe.jpg",
"headline": null,
"canDm": true,
"isVerified": false,
"followers": 1280,
"following": 340,
"location": "Berlin",
"description": "Growth, partnerships and outbound."
}
],
"peerUnavailable": false,
"tags": [
{
"id": "7c1f0c52-6d1a-4a49-9a63-2b3c4d5e6f70",
"label": "Hot lead",
"color": "#e24c5d"
}
],
"statusId": "b8d1f6f4-3a52-4f3a-8f0b-0c2f6a9d1e11",
"valuation": 1500,
"assigneeId": null,
"readUpTo": "1900000000000000100",
"peerReadUpTo": "1900000000000000100",
"hasUnread": true,
"unreadCount": 1,
"isClosed": false,
"isDraft": false,
"sendTyping": null,
"lastMessage": {
"text": "Thanks, sounds good. Send the details over.",
"fromMe": false,
"seqId": "1900000000000000123",
"createdAt": "2026-10-17T14:05:00.000Z",
"attachmentCount": 0,
"attachmentType": null,
"seen": null
}
}
],
"total": 128,
"nextCursor": "eyJvIjoiMTc5NjQ4MDAwMDAwMCJ9",
"syncedAt": "2026-10-17T14:06:00.000Z",
"sources": [
{
"accountId": "4f1c9a2e-6b7d-4c3a-9e51-0a8b7c6d5e4f",
"platform": "x",
"walk": "done"
}
],
"isStale": false
},
"error": null
}{
"status": false,
"data": null,
"error": "Not authenticated"
}{
"status": false,
"data": null,
"error": "Your free trial has ended. Pick a plan to continue."
}{
"status": false,
"data": null,
"error": "Something went wrong. Please try again."
}Conversations
List conversations
Returns the one-to-one conversations in your workspace, across every connected account or for one. Open conversations are returned unless you change scope. Paged with a cursor.
GET
/
conversations
List conversations
curl --request GET \
--url https://api.reachhunt.ai/api/v1/conversations \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.reachhunt.ai/api/v1/conversations"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.reachhunt.ai/api/v1/conversations', 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.reachhunt.ai/api/v1/conversations",
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.reachhunt.ai/api/v1/conversations"
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.reachhunt.ai/api/v1/conversations")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.reachhunt.ai/api/v1/conversations")
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{
"status": true,
"data": {
"items": [
{
"conversationId": "1876543210987654321:1900000000000000001",
"accountId": "4f1c9a2e-6b7d-4c3a-9e51-0a8b7c6d5e4f",
"platform": "x",
"type": "one_to_one",
"participantCount": 2,
"participants": [
{
"platform": "x",
"platformId": "1876543210987654321",
"userName": "janedoe",
"name": "Jane Doe",
"url": "https://x.com/janedoe",
"profilePicture": "https://example.com/avatars/janedoe.jpg",
"headline": null,
"canDm": true,
"isVerified": false,
"followers": 1280,
"following": 340,
"location": "Berlin",
"description": "Growth, partnerships and outbound."
}
],
"peerUnavailable": false,
"tags": [
{
"id": "7c1f0c52-6d1a-4a49-9a63-2b3c4d5e6f70",
"label": "Hot lead",
"color": "#e24c5d"
}
],
"statusId": "b8d1f6f4-3a52-4f3a-8f0b-0c2f6a9d1e11",
"valuation": 1500,
"assigneeId": null,
"readUpTo": "1900000000000000100",
"peerReadUpTo": "1900000000000000100",
"hasUnread": true,
"unreadCount": 1,
"isClosed": false,
"isDraft": false,
"sendTyping": null,
"lastMessage": {
"text": "Thanks, sounds good. Send the details over.",
"fromMe": false,
"seqId": "1900000000000000123",
"createdAt": "2026-10-17T14:05:00.000Z",
"attachmentCount": 0,
"attachmentType": null,
"seen": null
}
}
],
"total": 128,
"nextCursor": "eyJvIjoiMTc5NjQ4MDAwMDAwMCJ9",
"syncedAt": "2026-10-17T14:06:00.000Z",
"sources": [
{
"accountId": "4f1c9a2e-6b7d-4c3a-9e51-0a8b7c6d5e4f",
"platform": "x",
"walk": "done"
}
],
"isStale": false
},
"error": null
}{
"status": false,
"data": null,
"error": "Not authenticated"
}{
"status": false,
"data": null,
"error": "Your free trial has ended. Pick a plan to continue."
}{
"status": false,
"data": null,
"error": "Something went wrong. Please try again."
}Query Parameters
Only conversations of this connected account. Leave it out for all accounts.
Text to look for in the person's name, in their handle, and in the last message.
Which conversations to return.
all: open conversations.unread: open conversations with unread messages.needs_reply: open conversations where the other person wrote last.pending: open conversations where you wrote last.closed: closed conversations.any: open and closed. Defaults toall.
Available options:
all, unread, needs_reply, pending, closed, any Order by the time of the last message. Defaults to newest.
Available options:
newest, oldest Only conversations with this tag. Repeat the parameter to match several tags.
Only conversations in this status. Repeat the parameter to match several statuses.
How many items to return, from 1 to 100. Defaults to 50.
Required range:
1 <= x <= 100nextCursor from the previous page. A cursor only works with the filters it was issued for.