curl --request PATCH \
--url https://inboxapp.com/api/v1/threads/{threadId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"done": true,
"assigneeId": "<string>"
}
'import requests
url = "https://inboxapp.com/api/v1/threads/{threadId}"
payload = {
"done": True,
"assigneeId": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({done: true, assigneeId: '<string>'})
};
fetch('https://inboxapp.com/api/v1/threads/{threadId}', 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://inboxapp.com/api/v1/threads/{threadId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'done' => true,
'assigneeId' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://inboxapp.com/api/v1/threads/{threadId}"
payload := strings.NewReader("{\n \"done\": true,\n \"assigneeId\": \"<string>\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://inboxapp.com/api/v1/threads/{threadId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"done\": true,\n \"assigneeId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://inboxapp.com/api/v1/threads/{threadId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"done\": true,\n \"assigneeId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "df6jbw4h36...",
"platform": "twitter",
"platformId": "1234567890",
"done": true,
"assigneeId": "df6jbw4h36...",
"lastMessageTimestamp": "2025-08-22T12:00:00.000Z",
"computedSortTimestamp": "2025-08-22T12:00:00.000Z",
"createdAt": "2025-08-22T12:00:00.000Z",
"status": "active",
"variant": "unencrypted",
"accountLinkId": "df6jbw4h36...",
"isSyncing": false,
"isRequest": false,
"typingIndicatorsEnabled": true,
"lastMessage": {
"id": "df6jbw4h36...",
"content": "Hey, I'm reaching out from Acme Agency...",
"authorId": "df6jbw4h36...",
"createdAt": "2025-08-22T12:00:00.000Z",
"userId": "df6jbw4h36...",
"campaignId": "df6jbw4h36..."
},
"prospect": {
"platform": "twitter",
"platformId": "1566123362161725440",
"externalId": "l44e15irdq4db30i77cgphhx",
"documentId": 858224163,
"displayName": "Inbox",
"username": "InboxApp_",
"handle": "@InboxApp_",
"image": "https://pbs.twimg.com/profile_images/1954360649393295360/rwp-vVt6.jpg",
"imageNormalized": "https://pbs.twimg.com/profile_images/1954360649393295360/rwp-vVt6.jpg",
"bio": "Social Selling CRM Close deals faster, stay organized, and never miss an opportunity. Starting with X",
"location": "San Francisco, CA",
"profileUrl": "https://x.com/InboxApp_",
"websiteUrl": "https://inboxapp.com",
"websiteDomain": "inboxapp.com",
"verified": "business",
"profileType": "business",
"isProtected": false,
"followerCount": 3068,
"followingCount": 288,
"postCount": 836,
"engagementCount": 2613,
"listedCount": 18,
"platformCreatedAt": "2022-09-03T17:58:06.000Z",
"firstSeenAt": "2024-07-09T14:08:49.000Z",
"lastUpdatedAt": "2025-11-10T18:03:16.000Z",
"lastEnrichedAt": "2025-11-10T18:03:16.000Z",
"lastActiveAt": "2025-11-10T12:00:00.000Z",
"source": "cached",
"isFresh": true,
"isStale": false,
"confidence": 0.85,
"accountStatus": "active",
"platformData": {
"isVerifiedBlue": false,
"isVerifiedGold": true,
"isVerifiedGray": false,
"professionalCategory": "986",
"urlEntities": [],
"bannerUrl": "https://pbs.twimg.com/profile_banners/1566123362161725440/1753273968",
"tweetsCount": 836,
"favoritesCount": 2613,
"rawData": {}
},
"context": {
"tags": [
"df6jbw4h36..."
],
"statusId": "df6jbw4h36...",
"valuation": 599,
"notes": "This prospect is a potential customer."
}
}
}Update thread
Mark a thread done or change assignee
curl --request PATCH \
--url https://inboxapp.com/api/v1/threads/{threadId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"done": true,
"assigneeId": "<string>"
}
'import requests
url = "https://inboxapp.com/api/v1/threads/{threadId}"
payload = {
"done": True,
"assigneeId": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({done: true, assigneeId: '<string>'})
};
fetch('https://inboxapp.com/api/v1/threads/{threadId}', 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://inboxapp.com/api/v1/threads/{threadId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'done' => true,
'assigneeId' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://inboxapp.com/api/v1/threads/{threadId}"
payload := strings.NewReader("{\n \"done\": true,\n \"assigneeId\": \"<string>\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://inboxapp.com/api/v1/threads/{threadId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"done\": true,\n \"assigneeId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://inboxapp.com/api/v1/threads/{threadId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"done\": true,\n \"assigneeId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "df6jbw4h36...",
"platform": "twitter",
"platformId": "1234567890",
"done": true,
"assigneeId": "df6jbw4h36...",
"lastMessageTimestamp": "2025-08-22T12:00:00.000Z",
"computedSortTimestamp": "2025-08-22T12:00:00.000Z",
"createdAt": "2025-08-22T12:00:00.000Z",
"status": "active",
"variant": "unencrypted",
"accountLinkId": "df6jbw4h36...",
"isSyncing": false,
"isRequest": false,
"typingIndicatorsEnabled": true,
"lastMessage": {
"id": "df6jbw4h36...",
"content": "Hey, I'm reaching out from Acme Agency...",
"authorId": "df6jbw4h36...",
"createdAt": "2025-08-22T12:00:00.000Z",
"userId": "df6jbw4h36...",
"campaignId": "df6jbw4h36..."
},
"prospect": {
"platform": "twitter",
"platformId": "1566123362161725440",
"externalId": "l44e15irdq4db30i77cgphhx",
"documentId": 858224163,
"displayName": "Inbox",
"username": "InboxApp_",
"handle": "@InboxApp_",
"image": "https://pbs.twimg.com/profile_images/1954360649393295360/rwp-vVt6.jpg",
"imageNormalized": "https://pbs.twimg.com/profile_images/1954360649393295360/rwp-vVt6.jpg",
"bio": "Social Selling CRM Close deals faster, stay organized, and never miss an opportunity. Starting with X",
"location": "San Francisco, CA",
"profileUrl": "https://x.com/InboxApp_",
"websiteUrl": "https://inboxapp.com",
"websiteDomain": "inboxapp.com",
"verified": "business",
"profileType": "business",
"isProtected": false,
"followerCount": 3068,
"followingCount": 288,
"postCount": 836,
"engagementCount": 2613,
"listedCount": 18,
"platformCreatedAt": "2022-09-03T17:58:06.000Z",
"firstSeenAt": "2024-07-09T14:08:49.000Z",
"lastUpdatedAt": "2025-11-10T18:03:16.000Z",
"lastEnrichedAt": "2025-11-10T18:03:16.000Z",
"lastActiveAt": "2025-11-10T12:00:00.000Z",
"source": "cached",
"isFresh": true,
"isStale": false,
"confidence": 0.85,
"accountStatus": "active",
"platformData": {
"isVerifiedBlue": false,
"isVerifiedGold": true,
"isVerifiedGray": false,
"professionalCategory": "986",
"urlEntities": [],
"bannerUrl": "https://pbs.twimg.com/profile_banners/1566123362161725440/1753273968",
"tweetsCount": 836,
"favoritesCount": 2613,
"rawData": {}
},
"context": {
"tags": [
"df6jbw4h36..."
],
"statusId": "df6jbw4h36...",
"valuation": 599,
"notes": "This prospect is a potential customer."
}
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
^[0-9a-z]+$Response
OK
The ID of the thread.
^[0-9a-z]+$"df6jbw4h36..."
The platform this thread belongs to.
twitter "twitter"
The platform ID of the conversation.
"1234567890"
Whether the thread has been archived or not.
true
The ID of the member assigned to the thread.
^[0-9a-z]+$"df6jbw4h36..."
The timestamp of the last message in the thread.
"2025-08-22T12:00:00.000Z"
The timestamp of the last message in the thread or the creation date if no messages have been sent.
"2025-08-22T12:00:00.000Z"
The timestamp of when the thread was created in Inboxapp.
"2025-08-22T12:00:00.000Z"
Idle threads are hidden from the main inbox, i.e. when previewing a profile using 'Quick peek'
active, idle "active"
Will be set to "unencrypted" by default for new conversations until both parties have exchanged messages. Once each party has sent at least one message, the conversation transitions to "xChat" (encrypted).
unencrypted, xChat "unencrypted"
The ID of the account link associated with this thread.
^[0-9a-z]+$"df6jbw4h36..."
Whether the thread is currently syncing data from Twitter to load all messages.
false
Whether this conversation is a message request.
false
Whether typing indicators are enabled for this thread. If set to null, will use the team default setting.
true
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Was this page helpful?