cURL
curl --request POST \
--url https://api.notocat.com/v1/contacts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"newsletter_id": "<string>",
"contacts": [
{
"email": "<string>",
"name": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"subscribed": true,
"custom_fields": {}
}
]
}
'import requests
url = "https://api.notocat.com/v1/contacts"
payload = {
"newsletter_id": "<string>",
"contacts": [
{
"email": "<string>",
"name": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"subscribed": True,
"custom_fields": {}
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
newsletter_id: '<string>',
contacts: [
{
email: '<string>',
name: '<string>',
first_name: '<string>',
last_name: '<string>',
subscribed: true,
custom_fields: {}
}
]
})
};
fetch('https://api.notocat.com/v1/contacts', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.notocat.com/v1/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([
'newsletter_id' => '<string>',
'contacts' => [
[
'email' => '<string>',
'name' => '<string>',
'first_name' => '<string>',
'last_name' => '<string>',
'subscribed' => true,
'custom_fields' => [
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.notocat.com/v1/contacts"
payload := strings.NewReader("{\n \"newsletter_id\": \"<string>\",\n \"contacts\": [\n {\n \"email\": \"<string>\",\n \"name\": \"<string>\",\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"subscribed\": true,\n \"custom_fields\": {}\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.notocat.com/v1/contacts")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"newsletter_id\": \"<string>\",\n \"contacts\": [\n {\n \"email\": \"<string>\",\n \"name\": \"<string>\",\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"subscribed\": true,\n \"custom_fields\": {}\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.notocat.com/v1/contacts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"newsletter_id\": \"<string>\",\n \"contacts\": [\n {\n \"email\": \"<string>\",\n \"name\": \"<string>\",\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"subscribed\": true,\n \"custom_fields\": {}\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"synced": 123
}{
"error": 123,
"message": "<string>"
}Contact Endpoint
Create or update in bulk
Learn how to create or update contacts in bulk using the Notocat API. This guide covers the POST /contacts endpoint, allowing you to manage your subscriber data efficiently.
POST
/
contacts
cURL
curl --request POST \
--url https://api.notocat.com/v1/contacts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"newsletter_id": "<string>",
"contacts": [
{
"email": "<string>",
"name": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"subscribed": true,
"custom_fields": {}
}
]
}
'import requests
url = "https://api.notocat.com/v1/contacts"
payload = {
"newsletter_id": "<string>",
"contacts": [
{
"email": "<string>",
"name": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"subscribed": True,
"custom_fields": {}
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
newsletter_id: '<string>',
contacts: [
{
email: '<string>',
name: '<string>',
first_name: '<string>',
last_name: '<string>',
subscribed: true,
custom_fields: {}
}
]
})
};
fetch('https://api.notocat.com/v1/contacts', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.notocat.com/v1/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([
'newsletter_id' => '<string>',
'contacts' => [
[
'email' => '<string>',
'name' => '<string>',
'first_name' => '<string>',
'last_name' => '<string>',
'subscribed' => true,
'custom_fields' => [
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.notocat.com/v1/contacts"
payload := strings.NewReader("{\n \"newsletter_id\": \"<string>\",\n \"contacts\": [\n {\n \"email\": \"<string>\",\n \"name\": \"<string>\",\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"subscribed\": true,\n \"custom_fields\": {}\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.notocat.com/v1/contacts")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"newsletter_id\": \"<string>\",\n \"contacts\": [\n {\n \"email\": \"<string>\",\n \"name\": \"<string>\",\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"subscribed\": true,\n \"custom_fields\": {}\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.notocat.com/v1/contacts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"newsletter_id\": \"<string>\",\n \"contacts\": [\n {\n \"email\": \"<string>\",\n \"name\": \"<string>\",\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"subscribed\": true,\n \"custom_fields\": {}\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"synced": 123
}{
"error": 123,
"message": "<string>"
}The endpoint can be used to create a full list of contacts with Notocat. If a contact already exists, the data will be merged. The contacts can be updated in bulk when provided with IDs or emails that already exist in the database. If the contact does not exist, it will be created with the email provided.
The endpoint accepts a minimum of 1 contact and a maximum of 1000 contacts.
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
application/json
Contacts to add or update
Response
Contact response
Was this page helpful?
⌘I