curl --request PATCH \
--url https://inboxapp.com/api/v2/contacts/{contactId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"status": "<string>",
"notes": "<string>",
"valuation": 123,
"assigneeId": "<string>"
}
'import requests
url = "https://inboxapp.com/api/v2/contacts/{contactId}"
payload = {
"status": "<string>",
"notes": "<string>",
"valuation": 123,
"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({status: '<string>', notes: '<string>', valuation: 123, assigneeId: '<string>'})
};
fetch('https://inboxapp.com/api/v2/contacts/{contactId}', 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/contacts/{contactId}",
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([
'status' => '<string>',
'notes' => '<string>',
'valuation' => 123,
'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/v2/contacts/{contactId}"
payload := strings.NewReader("{\n \"status\": \"<string>\",\n \"notes\": \"<string>\",\n \"valuation\": 123,\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/v2/contacts/{contactId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"status\": \"<string>\",\n \"notes\": \"<string>\",\n \"valuation\": 123,\n \"assigneeId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://inboxapp.com/api/v2/contacts/{contactId}")
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 \"status\": \"<string>\",\n \"notes\": \"<string>\",\n \"valuation\": 123,\n \"assigneeId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"profiles": [
{
"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": {}
}
}
],
"statusId": "<string>",
"tagIds": [
"<string>"
],
"notes": "<string>",
"valuation": 123,
"assigneeId": "<string>",
"createdAt": "2026-09-14T10:32:00.000Z",
"updatedAt": "2026-09-14T10:32:00.000Z",
"status": {
"id": "<string>",
"name": "<string>",
"color": "#3b82f6",
"createdAt": "2026-09-14T10:32:00.000Z"
},
"tags": [
{
"id": "<string>",
"name": "<string>",
"color": "#3b82f6"
}
],
"assignee": {
"id": "<string>",
"name": "<string>",
"email": "<string>",
"imageUrl": "<string>",
"role": "owner",
"createdAt": "2026-09-14T10:32:00.000Z"
}
}{
"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": "contactNotFound",
"message": "<string>",
"details": null,
"requestId": "<string>"
}{
"code": "rateLimited",
"message": "<string>",
"details": {
"window": "minute",
"limit": 123,
"resetAt": "2026-09-14T10:32:00.000Z"
},
"requestId": "<string>"
}{
"code": "internal",
"message": "<string>",
"details": null,
"requestId": "<string>"
}Update contact
curl --request PATCH \
--url https://inboxapp.com/api/v2/contacts/{contactId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"status": "<string>",
"notes": "<string>",
"valuation": 123,
"assigneeId": "<string>"
}
'import requests
url = "https://inboxapp.com/api/v2/contacts/{contactId}"
payload = {
"status": "<string>",
"notes": "<string>",
"valuation": 123,
"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({status: '<string>', notes: '<string>', valuation: 123, assigneeId: '<string>'})
};
fetch('https://inboxapp.com/api/v2/contacts/{contactId}', 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/contacts/{contactId}",
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([
'status' => '<string>',
'notes' => '<string>',
'valuation' => 123,
'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/v2/contacts/{contactId}"
payload := strings.NewReader("{\n \"status\": \"<string>\",\n \"notes\": \"<string>\",\n \"valuation\": 123,\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/v2/contacts/{contactId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"status\": \"<string>\",\n \"notes\": \"<string>\",\n \"valuation\": 123,\n \"assigneeId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://inboxapp.com/api/v2/contacts/{contactId}")
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 \"status\": \"<string>\",\n \"notes\": \"<string>\",\n \"valuation\": 123,\n \"assigneeId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"profiles": [
{
"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": {}
}
}
],
"statusId": "<string>",
"tagIds": [
"<string>"
],
"notes": "<string>",
"valuation": 123,
"assigneeId": "<string>",
"createdAt": "2026-09-14T10:32:00.000Z",
"updatedAt": "2026-09-14T10:32:00.000Z",
"status": {
"id": "<string>",
"name": "<string>",
"color": "#3b82f6",
"createdAt": "2026-09-14T10:32:00.000Z"
},
"tags": [
{
"id": "<string>",
"name": "<string>",
"color": "#3b82f6"
}
],
"assignee": {
"id": "<string>",
"name": "<string>",
"email": "<string>",
"imageUrl": "<string>",
"role": "owner",
"createdAt": "2026-09-14T10:32:00.000Z"
}
}{
"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": "contactNotFound",
"message": "<string>",
"details": null,
"requestId": "<string>"
}{
"code": "rateLimited",
"message": "<string>",
"details": {
"window": "minute",
"limit": 123,
"resetAt": "2026-09-14T10:32:00.000Z"
},
"requestId": "<string>"
}{
"code": "internal",
"message": "<string>",
"details": null,
"requestId": "<string>"
}Path Parameters
^[0-9a-z]+$Body
Omitted fields are left unchanged, and null clears a nullable field.
A status, by ID or by name. Names match ignoring case and accents. When a value is one status's ID and another's name, the ID wins.
The default assignee of this contact's threads that have none of their own.
^[0-9a-z]+$Response
The team's record of a person: their profiles, plus the team's CRM state about them.
The team's record of a person: their profiles, plus the team's CRM state about them.
The person's profiles, oldest link first. Profiles on platforms unavailable to the team are left out.
Show child attributes
Show child attributes
A status: a pipeline stage on the team's board.
A tag: a label the team puts on contacts.
What the person is worth to the team, in the team's currency.
The default assignee of this contact's threads that have none of their own.
"2026-09-14T10:32:00.000Z"
"2026-09-14T10:32:00.000Z"
A pipeline stage on the team's board. A contact has at most one status.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
A person on the team, who can be assigned threads and contacts.
Show child attributes
Show child attributes
Was this page helpful?