Change a lead's status (partner-api)
Sets the lead's status, as the status dropdown does in the portal. If the lead is synced to your Odoo, the crm.lead follows (Lost archives it, leaving Lost unarchives it). converted can only be reached through the convert action and a converted lead cannot be moved: both answer 422.
Required scopes: partner-api and partner-leads-write.
Partner API key. A bearer token that a Reseller Admin generates in the partner
portal under Settings, API keys. It belongs to the reseller partner, not to a
person, and carries the scopes ticked at creation time. Send it on every request as
Authorization: Bearer <partner_api_key>.
Every response is confined to the partner the key belongs to. Keep the key secret and call the API from your server only, never from a browser app.
- HTTP Authorization Scheme
bearer- Bearer format
Bearer <partner_api_key>
application/jsonRequest body · required · application/json
new contacted qualified lostResponses
dataobject
550e8400-e29b-41d4-a716-446655440101prospect@example.comCHfr550e8400-e29b-41d4-a716-446655440201Business Trialnew contacted qualified converted lostnewAsked for a callback on Monday.2026-10-28T09:12:00+00:002026-10-29T14:05:00+00:00This API key is missing a required scope.required_scopesarray<string>
This API key is missing a required scope.required_scopesarray<string>
errorsobject
https://cockpit.voxbi.com/api/v1/api/v1/leads/{lead}
curl -X PATCH 'https://cockpit.voxbi.com/api/v1/api/v1/leads/{lead}' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json' \
--data '{"status":"qualified"}'
const response = await fetch('https://cockpit.voxbi.com/api/v1/api/v1/leads/{lead}', {
method: 'PATCH',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${YOUR_TOKEN}`,
},
body: JSON.stringify({
"status": "qualified"
}),
});
const data = await response.json();
console.log(data);
import requests
response = requests.patch('https://cockpit.voxbi.com/api/v1/api/v1/leads/{lead}',
headers={'Authorization': f'Bearer {YOUR_TOKEN}'},
json={
"status": "qualified"
}
)
response.raise_for_status()
data = response.json()
print(data)
<?php
$context = stream_context_create([
'http' => [
'method' => 'PATCH',
'header' => "Content-Type: application/json\r\nAuthorization: Bearer YOUR_TOKEN",
'content' => '{
\"status\": \"qualified\"
}',
],
]);
$response = file_get_contents('https://cockpit.voxbi.com/api/v1/api/v1/leads/{lead}', false, $context);
$data = json_decode($response, true);
print_r($data);
{ … }
{ … }
"data": { … }
{ … }
application/json{ … }
application/json{ … }
application/json{ … }
"errors": { … }
"status": [ … ]
application/json{ … }
30application/json