curl --request GET \
--url https://inboxapp.com/api/v2/people \
--header 'Authorization: Bearer <token>'import requests
url = "https://inboxapp.com/api/v2/people"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://inboxapp.com/api/v2/people', 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/v2/people",
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://inboxapp.com/api/v2/people"
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://inboxapp.com/api/v2/people")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://inboxapp.com/api/v2/people")
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": [
{
"accountLinkId": "<string>",
"profile": {
"id": "<string>",
"platform": "twitter",
"platformId": "<string>",
"username": "jane",
"handle": "@jane",
"displayName": "<string>",
"avatarUrl": "<string>",
"bio": "<string>",
"location": "<string>",
"websiteUrl": "<string>",
"websiteDomain": "<string>",
"verified": true,
"isOrganization": true,
"isProtected": true,
"followerCount": 123,
"followingCount": 123,
"postCount": 123,
"engagementCount": 123,
"listedCount": 123,
"accountStatus": "active",
"platformCreatedAt": "2026-09-14T10:32:00.000Z",
"profileUrl": "<string>",
"updatedAt": "2026-09-14T10:32:00.000Z",
"platformData": {
"_tag": "twitter",
"badge": "blue",
"profileType": "personal",
"professionalCategory": "<string>",
"urlEntities": [
{
"url": "<string>",
"expandedUrl": "<string>",
"displayUrl": "<string>",
"indices": [
123,
123
]
}
],
"bannerUrl": "<string>",
"rawData": {}
},
"relationships": [
{
"accountLinkId": "<string>",
"degree": "self",
"connectionRequest": {
"sentAt": "2026-09-14T10:32:00.000Z"
}
}
]
},
"contactId": "<string>",
"threadId": "<string>",
"canMessage": true,
"degree": "self",
"closeness": "connected",
"target": {
"type": "profile",
"accountLinkId": "<string>",
"platform": "twitter",
"platformId": "<string>"
}
}
],
"failures": [
{
"accountLinkId": "<string>",
"code": "accountLinkNotFound",
"message": "<string>"
}
]
}{
"code": "invalidRequest",
"message": "<string>",
"details": {
"issues": [
{
"path": [
"<string>"
],
"message": "<string>"
}
]
},
"requestId": "<string>"
}{
"code": "unauthorized",
"message": "<string>",
"details": null,
"requestId": "<string>"
}{
"code": "platformNotAvailable",
"message": "<string>",
"details": {
"platform": "twitter"
},
"requestId": "<string>"
}{
"code": "accountLinkNotFound",
"message": "<string>",
"details": null,
"requestId": "<string>"
}{
"code": "accountLinkDisconnected",
"message": "<string>",
"details": {
"accountLinkId": "<string>",
"status": "active"
},
"requestId": "<string>"
}{
"code": "capabilityNotSupported",
"message": "<string>",
"details": {
"capability": "message:send"
},
"requestId": "<string>"
}{
"code": "peopleSearchRateLimited",
"message": "<string>",
"details": {
"accountLinkId": "<string>",
"window": "minute",
"limit": 123,
"resetAt": "2026-09-14T10:32:00.000Z"
},
"requestId": "<string>"
}{
"code": "internal",
"message": "<string>",
"details": null,
"requestId": "<string>"
}{
"code": "platformError",
"message": "<string>",
"details": null,
"requestId": "<string>"
}{
"code": "platformUnavailable",
"message": "<string>",
"details": {
"retryAfterSeconds": 123
},
"requestId": "<string>"
}Search people
Searches people on each platform as one of the team’s account links, like the platform’s own search box.
Needs the Advanced API add-on, and directory:typeahead on each account link. Each account link can search 20 times per minute, 300 per hour and 1500 per day, so the platform doesn’t flag its session; past a limit, it is listed in failures with peopleSearchRateLimited.
Use the result’s target to reach that person on endpoints like Send message or Send connection request.
curl --request GET \
--url https://inboxapp.com/api/v2/people \
--header 'Authorization: Bearer <token>'import requests
url = "https://inboxapp.com/api/v2/people"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://inboxapp.com/api/v2/people', 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/v2/people",
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://inboxapp.com/api/v2/people"
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://inboxapp.com/api/v2/people")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://inboxapp.com/api/v2/people")
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": [
{
"accountLinkId": "<string>",
"profile": {
"id": "<string>",
"platform": "twitter",
"platformId": "<string>",
"username": "jane",
"handle": "@jane",
"displayName": "<string>",
"avatarUrl": "<string>",
"bio": "<string>",
"location": "<string>",
"websiteUrl": "<string>",
"websiteDomain": "<string>",
"verified": true,
"isOrganization": true,
"isProtected": true,
"followerCount": 123,
"followingCount": 123,
"postCount": 123,
"engagementCount": 123,
"listedCount": 123,
"accountStatus": "active",
"platformCreatedAt": "2026-09-14T10:32:00.000Z",
"profileUrl": "<string>",
"updatedAt": "2026-09-14T10:32:00.000Z",
"platformData": {
"_tag": "twitter",
"badge": "blue",
"profileType": "personal",
"professionalCategory": "<string>",
"urlEntities": [
{
"url": "<string>",
"expandedUrl": "<string>",
"displayUrl": "<string>",
"indices": [
123,
123
]
}
],
"bannerUrl": "<string>",
"rawData": {}
},
"relationships": [
{
"accountLinkId": "<string>",
"degree": "self",
"connectionRequest": {
"sentAt": "2026-09-14T10:32:00.000Z"
}
}
]
},
"contactId": "<string>",
"threadId": "<string>",
"canMessage": true,
"degree": "self",
"closeness": "connected",
"target": {
"type": "profile",
"accountLinkId": "<string>",
"platform": "twitter",
"platformId": "<string>"
}
}
],
"failures": [
{
"accountLinkId": "<string>",
"code": "accountLinkNotFound",
"message": "<string>"
}
]
}{
"code": "invalidRequest",
"message": "<string>",
"details": {
"issues": [
{
"path": [
"<string>"
],
"message": "<string>"
}
]
},
"requestId": "<string>"
}{
"code": "unauthorized",
"message": "<string>",
"details": null,
"requestId": "<string>"
}{
"code": "platformNotAvailable",
"message": "<string>",
"details": {
"platform": "twitter"
},
"requestId": "<string>"
}{
"code": "accountLinkNotFound",
"message": "<string>",
"details": null,
"requestId": "<string>"
}{
"code": "accountLinkDisconnected",
"message": "<string>",
"details": {
"accountLinkId": "<string>",
"status": "active"
},
"requestId": "<string>"
}{
"code": "capabilityNotSupported",
"message": "<string>",
"details": {
"capability": "message:send"
},
"requestId": "<string>"
}{
"code": "peopleSearchRateLimited",
"message": "<string>",
"details": {
"accountLinkId": "<string>",
"window": "minute",
"limit": 123,
"resetAt": "2026-09-14T10:32:00.000Z"
},
"requestId": "<string>"
}{
"code": "internal",
"message": "<string>",
"details": null,
"requestId": "<string>"
}{
"code": "platformError",
"message": "<string>",
"details": null,
"requestId": "<string>"
}{
"code": "platformUnavailable",
"message": "<string>",
"details": {
"retryAfterSeconds": 123
},
"requestId": "<string>"
}Query Parameters
Searches these platforms. Defaults to every available platform. With accountLinkId, keeps only the account links on these platforms. Repeat the key to match any of several.
The platform. Every team can use twitter, linkedin; a team may have others enabled.
Searches from these account links. Each platform is searched once, from the oldest account link given on it; IDs that match no account link are ignored. Without it, each platform is searched from its oldest active account link that can search. Repeat the key to match any of several.
^[0-9a-z]+$A name or username, as typed into the platform's own people search.
1 - 100contacts, the default, searches people each account already messages. network also searches beyond them, where the platform separates the two.
contacts, network true fetches and stores every result Inboxapp hasn't stored yet, so each comes back as a full profile. A result that can't be fetched or stored is left out. Slower. Defaults to false.
Response
OK
Every searched account link's results in one list: closest name or username match first, then people the account already talks to or is connected with, then verified, then each platform's own order. Not paginated.
Was this page helpful?