curl --request POST \
--url https://{subdomain}.conveyour.com/api/senders \
--header 'Content-Type: application/json' \
--header 'x-conveyour-token: <api-key>' \
--data '
{
"name": "<string>",
"email": "<string>",
"default_sender": true,
"default_reply": true
}
'const options = {
method: 'POST',
headers: {'x-conveyour-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({name: '<string>', email: '<string>', default_sender: true, default_reply: true})
};
fetch('https://{subdomain}.conveyour.com/api/senders', 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: '<string>', email: '<string>', default_sender: true, default_reply: true})
};
fetch('https://{subdomain}.conveyour.com/api/senders', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{subdomain}.conveyour.com/api/senders"
payload = {
"name": "<string>",
"email": "<string>",
"default_sender": True,
"default_reply": True
}
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/senders",
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' => '<string>',
'email' => '<string>',
'default_sender' => true,
'default_reply' => true
]),
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",
"org_id": 990,
"user_id": 123,
"name": "Acme Recruiting",
"email": "hello@acme.com",
"domain": "acme.com",
"default_sender": true,
"default_reply": false,
"dkim_status": "unverified",
"spf_status": "unverified",
"spf_record": "v=spf1 include:sparkpostmail.com ~all",
"ready": false
}
}{
"status": "failed",
"message": "Lacking necessary permission add_contacts",
"data": {
"permission": "add_contacts"
}
}Create an email address
Creates a new email sender. Creating a sender registers its domain with SparkPost and sends a verification email to the sender address. Generic email providers (e.g. gmail.com, yahoo.com, yahoomail.com, aol.com, mac.com, mail.com, apple.com, facebook.com) are rejected, and an email may only be added once per org.
Create a sender
Not callable with an API key. Every Senders endpoint requires org admin and returns 403 You are not authorized to access this resource otherwise. Service accounts cannot be admin, so this is unreachable with any API key — use a signed-in admin session.
Permission: org admin. A non-admin receives HTTP 403 with the message You are not authorized to access this resource.
curl --request POST \
--url https://{subdomain}.conveyour.com/api/senders \
--header 'Content-Type: application/json' \
--header 'x-conveyour-token: <api-key>' \
--data '
{
"name": "<string>",
"email": "<string>",
"default_sender": true,
"default_reply": true
}
'const options = {
method: 'POST',
headers: {'x-conveyour-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({name: '<string>', email: '<string>', default_sender: true, default_reply: true})
};
fetch('https://{subdomain}.conveyour.com/api/senders', 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: '<string>', email: '<string>', default_sender: true, default_reply: true})
};
fetch('https://{subdomain}.conveyour.com/api/senders', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{subdomain}.conveyour.com/api/senders"
payload = {
"name": "<string>",
"email": "<string>",
"default_sender": True,
"default_reply": True
}
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/senders",
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' => '<string>',
'email' => '<string>',
'default_sender' => true,
'default_reply' => true
]),
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",
"org_id": 990,
"user_id": 123,
"name": "Acme Recruiting",
"email": "hello@acme.com",
"domain": "acme.com",
"default_sender": true,
"default_reply": false,
"dkim_status": "unverified",
"spf_status": "unverified",
"spf_record": "v=spf1 include:sparkpostmail.com ~all",
"ready": false
}
}{
"status": "failed",
"message": "Lacking necessary permission add_contacts",
"data": {
"permission": "add_contacts"
}
}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
Display name shown on the from-identity.
The from email address. Its domain is registered with SparkPost for verification. Cannot be a generic provider domain, and must be unique within the org.
Whether this sender is the org's default from-address.
Whether this sender is the org's default reply-to address.
Response
Success.
The common response envelope shared by all ConveYour endpoints.