curl --request POST \
--url https://{subdomain}.conveyour.com/api/contacts \
--header 'Content-Type: application/json' \
--header 'x-conveyour-token: <api-key>' \
--data '
{
"email": "jane@example.com",
"first_name": "Jane",
"last_name": "Doe",
"mobile": "+15555550100"
}
'const options = {
method: 'POST',
headers: {'x-conveyour-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
email: 'jane@example.com',
first_name: 'Jane',
last_name: 'Doe',
mobile: '+15555550100'
})
};
fetch('https://{subdomain}.conveyour.com/api/contacts', 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({
email: 'jane@example.com',
first_name: 'Jane',
last_name: 'Doe',
mobile: '+15555550100'
})
};
fetch('https://{subdomain}.conveyour.com/api/contacts', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{subdomain}.conveyour.com/api/contacts"
payload = {
"email": "jane@example.com",
"first_name": "Jane",
"last_name": "Doe",
"mobile": "+15555550100"
}
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/contacts",
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([
'email' => 'jane@example.com',
'first_name' => 'Jane',
'last_name' => 'Doe',
'mobile' => '+15555550100'
]),
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": "create contact successfully",
"data": {
"id": "64a1b2c3d4e5f6a7b8c9d0e1",
"name": "Jane Doe"
}
}{
"status": "failed",
"message": "Lacking necessary permission add_contacts",
"data": {
"permission": "add_contacts"
}
}{
"status": "Failed",
"message": "<string>"
}Create a contact
Creates a new contact.
Requires the add_contacts permission on the service account that owns your API key. A key whose service account lacks it fails with "Lacking necessary permission add_contacts".
Permission: requires add_contacts.
curl --request POST \
--url https://{subdomain}.conveyour.com/api/contacts \
--header 'Content-Type: application/json' \
--header 'x-conveyour-token: <api-key>' \
--data '
{
"email": "jane@example.com",
"first_name": "Jane",
"last_name": "Doe",
"mobile": "+15555550100"
}
'const options = {
method: 'POST',
headers: {'x-conveyour-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
email: 'jane@example.com',
first_name: 'Jane',
last_name: 'Doe',
mobile: '+15555550100'
})
};
fetch('https://{subdomain}.conveyour.com/api/contacts', 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({
email: 'jane@example.com',
first_name: 'Jane',
last_name: 'Doe',
mobile: '+15555550100'
})
};
fetch('https://{subdomain}.conveyour.com/api/contacts', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{subdomain}.conveyour.com/api/contacts"
payload = {
"email": "jane@example.com",
"first_name": "Jane",
"last_name": "Doe",
"mobile": "+15555550100"
}
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/contacts",
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([
'email' => 'jane@example.com',
'first_name' => 'Jane',
'last_name' => 'Doe',
'mobile' => '+15555550100'
]),
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": "create contact successfully",
"data": {
"id": "64a1b2c3d4e5f6a7b8c9d0e1",
"name": "Jane Doe"
}
}{
"status": "failed",
"message": "Lacking necessary permission add_contacts",
"data": {
"permission": "add_contacts"
}
}{
"status": "Failed",
"message": "<string>"
}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 contact's email address.
First name.
Last name.
Mobile phone number in E.164 format.
Team scope for this request, as team ObjectIds. Values that are not valid ObjectIds are silently ignored.
["64a1b2c3d4e5f6a7b8c9d0ff"]
Any additional org-defined contact field keys.
Response
The contact was created.
The common response envelope shared by all ConveYour endpoints.