curl --request POST \
--url https://{subdomain}.conveyour.com/api/custom/records \
--header 'Content-Type: application/json' \
--header 'x-conveyour-token: <api-key>' \
--data '
{
"obj_id": "64a1b2c3d4e5f6a7b8c9d0e1",
"external_id": "veh-1042",
"make": "Toyota",
"year": 2024
}
'const options = {
method: 'POST',
headers: {'x-conveyour-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
obj_id: '64a1b2c3d4e5f6a7b8c9d0e1',
external_id: 'veh-1042',
make: 'Toyota',
year: 2024
})
};
fetch('https://{subdomain}.conveyour.com/api/custom/records', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));const options = {
method: 'POST',
headers: {'x-conveyour-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
obj_id: '64a1b2c3d4e5f6a7b8c9d0e1',
external_id: 'veh-1042',
make: 'Toyota',
year: 2024
})
};
fetch('https://{subdomain}.conveyour.com/api/custom/records', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{subdomain}.conveyour.com/api/custom/records"
payload = {
"obj_id": "64a1b2c3d4e5f6a7b8c9d0e1",
"external_id": "veh-1042",
"make": "Toyota",
"year": 2024
}
headers = {
"x-conveyour-token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{subdomain}.conveyour.com/api/custom/records",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'obj_id' => '64a1b2c3d4e5f6a7b8c9d0e1',
'external_id' => 'veh-1042',
'make' => 'Toyota',
'year' => 2024
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-conveyour-token: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"status": "ok",
"message": "Custom Record created",
"data": {
"id": "64a1b2c3d4e5f6a7b8c9d0e1",
"obj_id": "OBJECT_ID",
"external_id": "vin-123",
"make": "Ford",
"model": "F-150",
"year": 2022
}
}{
"status": "failed",
"message": "Lacking necessary permission add_contacts",
"data": {
"permission": "add_contacts"
}
}{
"status": "failed",
"message": "<string>",
"data": {}
}Create a record
Creates a single new record. Field values are posted flat at the top level — there is no data: {} wrapper.
Create a record
Permission: Requires manage_custom_objects or manage_custom_records. Denials read Manage Custom Records.
curl --request POST \
--url https://{subdomain}.conveyour.com/api/custom/records \
--header 'Content-Type: application/json' \
--header 'x-conveyour-token: <api-key>' \
--data '
{
"obj_id": "64a1b2c3d4e5f6a7b8c9d0e1",
"external_id": "veh-1042",
"make": "Toyota",
"year": 2024
}
'const options = {
method: 'POST',
headers: {'x-conveyour-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
obj_id: '64a1b2c3d4e5f6a7b8c9d0e1',
external_id: 'veh-1042',
make: 'Toyota',
year: 2024
})
};
fetch('https://{subdomain}.conveyour.com/api/custom/records', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));const options = {
method: 'POST',
headers: {'x-conveyour-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
obj_id: '64a1b2c3d4e5f6a7b8c9d0e1',
external_id: 'veh-1042',
make: 'Toyota',
year: 2024
})
};
fetch('https://{subdomain}.conveyour.com/api/custom/records', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{subdomain}.conveyour.com/api/custom/records"
payload = {
"obj_id": "64a1b2c3d4e5f6a7b8c9d0e1",
"external_id": "veh-1042",
"make": "Toyota",
"year": 2024
}
headers = {
"x-conveyour-token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{subdomain}.conveyour.com/api/custom/records",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'obj_id' => '64a1b2c3d4e5f6a7b8c9d0e1',
'external_id' => 'veh-1042',
'make' => 'Toyota',
'year' => 2024
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-conveyour-token: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"status": "ok",
"message": "Custom Record created",
"data": {
"id": "64a1b2c3d4e5f6a7b8c9d0e1",
"obj_id": "OBJECT_ID",
"external_id": "vin-123",
"make": "Ford",
"model": "F-150",
"year": 2022
}
}{
"status": "failed",
"message": "Lacking necessary permission add_contacts",
"data": {
"permission": "add_contacts"
}
}{
"status": "failed",
"message": "<string>",
"data": {}
}Authorizations
Your API key token. Contacts endpoints require a Server-only — Full API key — see Authentication.
Query Parameters
Team scope for the request, as one or more team ObjectIds. The brackets are required: PHP keeps only the last value for a repeated plain key, so teams=A&teams=B silently resolves to B alone. On requests with a JSON body you may send teams (no brackets) in the body instead.
Values that are not valid ObjectIds are silently ignored — a mistyped team ID behaves as if no team was sent. See the teams section of the API conventions guide.
Body
The ID of the Custom Object type this record belongs to.
Optional unique identifier linking this record to an external system.
The record's field values, posted flat at the top level (matching the field names defined in the Custom Object schema). There is no data wrapper.
Response
Success.
The common response envelope shared by all ConveYour endpoints.
ok on success, failed on error.
ok, failed Human-readable description of the result.
A custom object record. The field set varies per organization and per object: the parent object's stored schema is merged over the defaults.
Show child attributes
Show child attributes