curl --request POST \
--url https://{subdomain}.conveyour.com/api/teams \
--header 'Content-Type: application/json' \
--header 'x-conveyour-token: <api-key>' \
--data '
{
"label": "<string>",
"name": "<string>",
"filters": {},
"contact_fields": [
"<string>"
],
"color": "<string>",
"sms_autoreply": "<string>",
"block_sms": true,
"portal_new_conversation": true,
"contact_desc": "<string>",
"sendblue_number": "<string>"
}
'const options = {
method: 'POST',
headers: {'x-conveyour-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
label: '<string>',
name: '<string>',
filters: {},
contact_fields: ['<string>'],
color: '<string>',
sms_autoreply: '<string>',
block_sms: true,
portal_new_conversation: true,
contact_desc: '<string>',
sendblue_number: '<string>'
})
};
fetch('https://{subdomain}.conveyour.com/api/teams', 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({
label: '<string>',
name: '<string>',
filters: {},
contact_fields: ['<string>'],
color: '<string>',
sms_autoreply: '<string>',
block_sms: true,
portal_new_conversation: true,
contact_desc: '<string>',
sendblue_number: '<string>'
})
};
fetch('https://{subdomain}.conveyour.com/api/teams', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{subdomain}.conveyour.com/api/teams"
payload = {
"label": "<string>",
"name": "<string>",
"filters": {},
"contact_fields": ["<string>"],
"color": "<string>",
"sms_autoreply": "<string>",
"block_sms": True,
"portal_new_conversation": True,
"contact_desc": "<string>",
"sendblue_number": "<string>"
}
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/teams",
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([
'label' => '<string>',
'name' => '<string>',
'filters' => [
],
'contact_fields' => [
'<string>'
],
'color' => '<string>',
'sms_autoreply' => '<string>',
'block_sms' => true,
'portal_new_conversation' => true,
'contact_desc' => '<string>',
'sendblue_number' => '<string>'
]),
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": "Team record created",
"data": {
"id": "64a1b2c3d4e5f6a7b8c9d0e1",
"label": "West Region",
"name": "west_region",
"color": "#3366ff",
"twilio_phone": ""
}
}{
"status": "failed",
"message": "Lacking necessary permission add_contacts",
"data": {
"permission": "add_contacts"
}
}{
"status": "failed",
"message": "<string>",
"data": {}
}Create a team
Creates a new team. Requires an admin user.
Create a team (admin)
Permission: Org admin only. Denials read Manage Teams.
Not callable with an API key. Requires an org admin. Service accounts cannot be assigned the admin role and their role cannot be changed, so every API key gets 403. Only a signed-in admin can call it.
curl --request POST \
--url https://{subdomain}.conveyour.com/api/teams \
--header 'Content-Type: application/json' \
--header 'x-conveyour-token: <api-key>' \
--data '
{
"label": "<string>",
"name": "<string>",
"filters": {},
"contact_fields": [
"<string>"
],
"color": "<string>",
"sms_autoreply": "<string>",
"block_sms": true,
"portal_new_conversation": true,
"contact_desc": "<string>",
"sendblue_number": "<string>"
}
'const options = {
method: 'POST',
headers: {'x-conveyour-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
label: '<string>',
name: '<string>',
filters: {},
contact_fields: ['<string>'],
color: '<string>',
sms_autoreply: '<string>',
block_sms: true,
portal_new_conversation: true,
contact_desc: '<string>',
sendblue_number: '<string>'
})
};
fetch('https://{subdomain}.conveyour.com/api/teams', 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({
label: '<string>',
name: '<string>',
filters: {},
contact_fields: ['<string>'],
color: '<string>',
sms_autoreply: '<string>',
block_sms: true,
portal_new_conversation: true,
contact_desc: '<string>',
sendblue_number: '<string>'
})
};
fetch('https://{subdomain}.conveyour.com/api/teams', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{subdomain}.conveyour.com/api/teams"
payload = {
"label": "<string>",
"name": "<string>",
"filters": {},
"contact_fields": ["<string>"],
"color": "<string>",
"sms_autoreply": "<string>",
"block_sms": True,
"portal_new_conversation": True,
"contact_desc": "<string>",
"sendblue_number": "<string>"
}
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/teams",
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([
'label' => '<string>',
'name' => '<string>',
'filters' => [
],
'contact_fields' => [
'<string>'
],
'color' => '<string>',
'sms_autoreply' => '<string>',
'block_sms' => true,
'portal_new_conversation' => true,
'contact_desc' => '<string>',
'sendblue_number' => '<string>'
]),
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": "Team record created",
"data": {
"id": "64a1b2c3d4e5f6a7b8c9d0e1",
"label": "West Region",
"name": "west_region",
"color": "#3366ff",
"twilio_phone": ""
}
}{
"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
Human-readable team name. Must be unique within the org.
Machine name for the team. Must be unique within the org and use tag format (no spaces).
Contact filter definition that restricts which contacts are visible to team members.
List of contact fields shown for team contacts. Each entry references a contact field.
Display color for the team.
SMS auto-reply message for the team.
When true, blocks SMS for the team.
Allow team members to start new conversations from the portal.
Liquid template producing a short summary description for each team contact.
SendBlue phone number used for team SMS routing.