curl --request PATCH \
--url https://inboxapp.com/api/v1/campaigns/{campaignId}/leads/{identifier} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"data": {
"custom_q5cktl47a6pqa74eu06fz89v": "Acme Corp",
"custom_m8r2xj93hd5bk0atcw7oe4fp": null
},
"by": "platformId",
"platform": "twitter"
}
'import requests
url = "https://inboxapp.com/api/v1/campaigns/{campaignId}/leads/{identifier}"
payload = {
"data": {
"custom_q5cktl47a6pqa74eu06fz89v": "Acme Corp",
"custom_m8r2xj93hd5bk0atcw7oe4fp": None
},
"by": "platformId",
"platform": "twitter"
}
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({
data: {
custom_q5cktl47a6pqa74eu06fz89v: 'Acme Corp',
custom_m8r2xj93hd5bk0atcw7oe4fp: null
},
by: 'platformId',
platform: 'twitter'
})
};
fetch('https://inboxapp.com/api/v1/campaigns/{campaignId}/leads/{identifier}', 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/campaigns/{campaignId}/leads/{identifier}",
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([
'data' => [
'custom_q5cktl47a6pqa74eu06fz89v' => 'Acme Corp',
'custom_m8r2xj93hd5bk0atcw7oe4fp' => null
],
'by' => 'platformId',
'platform' => 'twitter'
]),
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/campaigns/{campaignId}/leads/{identifier}"
payload := strings.NewReader("{\n \"data\": {\n \"custom_q5cktl47a6pqa74eu06fz89v\": \"Acme Corp\",\n \"custom_m8r2xj93hd5bk0atcw7oe4fp\": null\n },\n \"by\": \"platformId\",\n \"platform\": \"twitter\"\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/campaigns/{campaignId}/leads/{identifier}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"data\": {\n \"custom_q5cktl47a6pqa74eu06fz89v\": \"Acme Corp\",\n \"custom_m8r2xj93hd5bk0atcw7oe4fp\": null\n },\n \"by\": \"platformId\",\n \"platform\": \"twitter\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://inboxapp.com/api/v1/campaigns/{campaignId}/leads/{identifier}")
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 \"data\": {\n \"custom_q5cktl47a6pqa74eu06fz89v\": \"Acme Corp\",\n \"custom_m8r2xj93hd5bk0atcw7oe4fp\": null\n },\n \"by\": \"platformId\",\n \"platform\": \"twitter\"\n}"
response = http.request(request)
puts response.read_body{
"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.",
"threads": [
{
"id": "<string>",
"accountLinkId": "<string>",
"lastMessageTimestamp": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z"
}
]
},
"data": {
"custom_q5cktl47a6pqa74eu06fz89v": "Acme Corp",
"custom_m8r2xj93hd5bk0atcw7oe4fp": "CEO"
},
"stage": "pending",
"accountLinkId": "<string>",
"threadId": "<string>"
}Update lead
Update custom column data for a lead in the campaign. By default the identifier is treated as a platform ID. Use the by query parameter to look up by username or external ID instead.
curl --request PATCH \
--url https://inboxapp.com/api/v1/campaigns/{campaignId}/leads/{identifier} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"data": {
"custom_q5cktl47a6pqa74eu06fz89v": "Acme Corp",
"custom_m8r2xj93hd5bk0atcw7oe4fp": null
},
"by": "platformId",
"platform": "twitter"
}
'import requests
url = "https://inboxapp.com/api/v1/campaigns/{campaignId}/leads/{identifier}"
payload = {
"data": {
"custom_q5cktl47a6pqa74eu06fz89v": "Acme Corp",
"custom_m8r2xj93hd5bk0atcw7oe4fp": None
},
"by": "platformId",
"platform": "twitter"
}
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({
data: {
custom_q5cktl47a6pqa74eu06fz89v: 'Acme Corp',
custom_m8r2xj93hd5bk0atcw7oe4fp: null
},
by: 'platformId',
platform: 'twitter'
})
};
fetch('https://inboxapp.com/api/v1/campaigns/{campaignId}/leads/{identifier}', 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/campaigns/{campaignId}/leads/{identifier}",
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([
'data' => [
'custom_q5cktl47a6pqa74eu06fz89v' => 'Acme Corp',
'custom_m8r2xj93hd5bk0atcw7oe4fp' => null
],
'by' => 'platformId',
'platform' => 'twitter'
]),
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/campaigns/{campaignId}/leads/{identifier}"
payload := strings.NewReader("{\n \"data\": {\n \"custom_q5cktl47a6pqa74eu06fz89v\": \"Acme Corp\",\n \"custom_m8r2xj93hd5bk0atcw7oe4fp\": null\n },\n \"by\": \"platformId\",\n \"platform\": \"twitter\"\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/campaigns/{campaignId}/leads/{identifier}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"data\": {\n \"custom_q5cktl47a6pqa74eu06fz89v\": \"Acme Corp\",\n \"custom_m8r2xj93hd5bk0atcw7oe4fp\": null\n },\n \"by\": \"platformId\",\n \"platform\": \"twitter\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://inboxapp.com/api/v1/campaigns/{campaignId}/leads/{identifier}")
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 \"data\": {\n \"custom_q5cktl47a6pqa74eu06fz89v\": \"Acme Corp\",\n \"custom_m8r2xj93hd5bk0atcw7oe4fp\": null\n },\n \"by\": \"platformId\",\n \"platform\": \"twitter\"\n}"
response = http.request(request)
puts response.read_body{
"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.",
"threads": [
{
"id": "<string>",
"accountLinkId": "<string>",
"lastMessageTimestamp": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z"
}
]
},
"data": {
"custom_q5cktl47a6pqa74eu06fz89v": "Acme Corp",
"custom_m8r2xj93hd5bk0atcw7oe4fp": "CEO"
},
"stage": "pending",
"accountLinkId": "<string>",
"threadId": "<string>"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
The ID of the campaign.
^[0-9a-z]+$The identifier of the lead. Interpreted based on the by parameter.
1"44196397"
Body
Custom column values to update, keyed by column ID. Set a value to null to clear it.
Show child attributes
Show child attributes
{
"custom_q5cktl47a6pqa74eu06fz89v": "Acme Corp",
"custom_m8r2xj93hd5bk0atcw7oe4fp": null
}
How to interpret the identifier in the URL path. Defaults to 'platformId'.
platformId, username, externalId "platformId"
The platform for the identifier. Required when by is 'platformId' or 'username'. Defaults to 'twitter'. Ignored when by is 'externalId'.
twitter Response
OK
A lead with full prospect profile, CRM context, and custom column data.
Full prospect profile data.
Show child attributes
Show child attributes
CRM context for this prospect (tags, status, valuation, notes).
Show child attributes
Show child attributes
Custom column values for this lead. Keys are column IDs (not column names). Use the columns API to look up column IDs.
Show child attributes
Show child attributes
{
"custom_q5cktl47a6pqa74eu06fz89v": "Acme Corp",
"custom_m8r2xj93hd5bk0atcw7oe4fp": "CEO"
}
Campaign stage for this lead. Only present when querying leads on a campaign list. Null for regular lists.
pending, ready, ongoing, replied, unresponsive, failed, canceled The account link ID assigned to contact this lead. Only present for campaign lists. Null for regular lists or if not yet assigned.
The thread ID of the conversation with this lead. Only present for campaign lists. Null for regular lists or if no conversation exists yet.
Was this page helpful?