curl --request POST \
--url https://{subdomain}.conveyour.com/api/snippets \
--header 'Content-Type: application/json' \
--header 'x-conveyour-token: <api-key>' \
--data '
{
"name": "SMS footer",
"folder_id": "64a1b2c3d4e5f6a7b8c9d0e1",
"shortcut": "legal.sms_footer",
"content": "<p>Reply STOP to opt out.</p>",
"text_content": "Reply STOP to opt out."
}
'const options = {
method: 'POST',
headers: {'x-conveyour-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'SMS footer',
folder_id: '64a1b2c3d4e5f6a7b8c9d0e1',
shortcut: 'legal.sms_footer',
content: '<p>Reply STOP to opt out.</p>',
text_content: 'Reply STOP to opt out.'
})
};
fetch('https://{subdomain}.conveyour.com/api/snippets', 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({
name: 'SMS footer',
folder_id: '64a1b2c3d4e5f6a7b8c9d0e1',
shortcut: 'legal.sms_footer',
content: '<p>Reply STOP to opt out.</p>',
text_content: 'Reply STOP to opt out.'
})
};
fetch('https://{subdomain}.conveyour.com/api/snippets', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{subdomain}.conveyour.com/api/snippets"
payload = {
"name": "SMS footer",
"folder_id": "64a1b2c3d4e5f6a7b8c9d0e1",
"shortcut": "legal.sms_footer",
"content": "<p>Reply STOP to opt out.</p>",
"text_content": "Reply STOP to opt out."
}
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/snippets",
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([
'name' => 'SMS footer',
'folder_id' => '64a1b2c3d4e5f6a7b8c9d0e1',
'shortcut' => 'legal.sms_footer',
'content' => '<p>Reply STOP to opt out.</p>',
'text_content' => 'Reply STOP to opt out.'
]),
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": "success",
"data": {
"id": "64a1b2c3d4e5f6a7b8c9d0e1",
"name": "SMS Footer",
"shortcut": "legal.sms_footer",
"content": "Reply STOP to opt out. Msg & data rates may apply."
}
}{
"status": "failed",
"message": "Token is either expired or does not have the correct permissions",
"data": []
}Create a snippet
Creates a new snippet.
curl --request POST \
--url https://{subdomain}.conveyour.com/api/snippets \
--header 'Content-Type: application/json' \
--header 'x-conveyour-token: <api-key>' \
--data '
{
"name": "SMS footer",
"folder_id": "64a1b2c3d4e5f6a7b8c9d0e1",
"shortcut": "legal.sms_footer",
"content": "<p>Reply STOP to opt out.</p>",
"text_content": "Reply STOP to opt out."
}
'const options = {
method: 'POST',
headers: {'x-conveyour-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'SMS footer',
folder_id: '64a1b2c3d4e5f6a7b8c9d0e1',
shortcut: 'legal.sms_footer',
content: '<p>Reply STOP to opt out.</p>',
text_content: 'Reply STOP to opt out.'
})
};
fetch('https://{subdomain}.conveyour.com/api/snippets', 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({
name: 'SMS footer',
folder_id: '64a1b2c3d4e5f6a7b8c9d0e1',
shortcut: 'legal.sms_footer',
content: '<p>Reply STOP to opt out.</p>',
text_content: 'Reply STOP to opt out.'
})
};
fetch('https://{subdomain}.conveyour.com/api/snippets', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{subdomain}.conveyour.com/api/snippets"
payload = {
"name": "SMS footer",
"folder_id": "64a1b2c3d4e5f6a7b8c9d0e1",
"shortcut": "legal.sms_footer",
"content": "<p>Reply STOP to opt out.</p>",
"text_content": "Reply STOP to opt out."
}
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/snippets",
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([
'name' => 'SMS footer',
'folder_id' => '64a1b2c3d4e5f6a7b8c9d0e1',
'shortcut' => 'legal.sms_footer',
'content' => '<p>Reply STOP to opt out.</p>',
'text_content' => 'Reply STOP to opt out.'
]),
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": "success",
"data": {
"id": "64a1b2c3d4e5f6a7b8c9d0e1",
"name": "SMS Footer",
"shortcut": "legal.sms_footer",
"content": "Reply STOP to opt out. Msg & data rates may apply."
}
}{
"status": "failed",
"message": "Token is either expired or does not have the correct permissions",
"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 name for the snippet.
The key used to reference this snippet in templates: snippet(legal.sms_footer). Use dot notation to namespace snippets (e.g. legal.sms_footer, program.intro).
The snippet content. Supports Liquid syntax.
Plain-text version of the content (used when the rich version is HTML).
Internal notes about the snippet (not sent to contacts).
Array of file objects to attach to the snippet.
ID of the folder to place this snippet in.
Sort order within the folder.
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 snippet. Create, update and the HTML update return this directly, so it carries NO editable / deletable flags — those are computed per user by the read endpoints only.
Show child attributes
Show child attributes