Audience Syncs
Create Audience Sync
Push a segment to a Meta custom audience and keep it synced
POST
/
api
/
v1
/
audience-syncs
Create Audience Sync
curl --request POST \
--url https://api.sequenzy.com/api/v1/audience-syncs \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"segmentId": "<string>",
"predefinedSegmentId": "<string>",
"adAccountId": "<string>",
"audienceName": "<string>",
"frequency": "<string>"
}
'import requests
url = "https://api.sequenzy.com/api/v1/audience-syncs"
payload = {
"segmentId": "<string>",
"predefinedSegmentId": "<string>",
"adAccountId": "<string>",
"audienceName": "<string>",
"frequency": "<string>"
}
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({
segmentId: '<string>',
predefinedSegmentId: '<string>',
adAccountId: '<string>',
audienceName: '<string>',
frequency: '<string>'
})
};
fetch('https://api.sequenzy.com/api/v1/audience-syncs', 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.sequenzy.com/api/v1/audience-syncs",
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([
'segmentId' => '<string>',
'predefinedSegmentId' => '<string>',
'adAccountId' => '<string>',
'audienceName' => '<string>',
'frequency' => '<string>'
]),
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.sequenzy.com/api/v1/audience-syncs"
payload := strings.NewReader("{\n \"segmentId\": \"<string>\",\n \"predefinedSegmentId\": \"<string>\",\n \"adAccountId\": \"<string>\",\n \"audienceName\": \"<string>\",\n \"frequency\": \"<string>\"\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.sequenzy.com/api/v1/audience-syncs")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"segmentId\": \"<string>\",\n \"predefinedSegmentId\": \"<string>\",\n \"adAccountId\": \"<string>\",\n \"audienceName\": \"<string>\",\n \"frequency\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sequenzy.com/api/v1/audience-syncs")
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 \"segmentId\": \"<string>\",\n \"predefinedSegmentId\": \"<string>\",\n \"adAccountId\": \"<string>\",\n \"audienceName\": \"<string>\",\n \"frequency\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"audienceSync": {
"id": "sync_abc123",
"segmentId": "seg_recent_buyers",
"segmentName": "Recent buyers",
"adAccountId": "act_1234567890",
"audienceName": "Sequenzy - Recent buyers",
"frequency": "daily",
"isActive": true,
"syncStatus": "idle",
"lastSyncAt": null,
"lastSyncError": null,
"lastSyncedCount": 0,
"createdAt": "2026-06-12T10:00:00.000Z"
}
}
{
"error": "Meta Ads is not connected for this company. Connect it in Settings -> Integrations."
}
{
"error": "Provide either a segmentId or a predefinedSegmentId, not both"
}
{
"error": "Segment not found"
}
{
"error": "This segment is already synced to an audience in that ad account"
}
{
"error": "A segment named \"Recent buyers\" already exists with different filters. Sync it via segmentId, or rename it to use the \"recent-buyers\" template."
}
{
"error": "Unauthorized"
}
Create an audience sync. The custom audience is created in your Meta ad account, the first upload runs immediately, and afterwards the audience refreshes on the chosen schedule.
Requires the Meta Ads integration to be connected in the dashboard (Settings → Integrations).
Request
string
Existing segment ID to sync. Provide either
segmentId or
predefinedSegmentId, not both.string
Ready-made segment template ID, for example
zero-ltv, no-purchase-1y,
recent-buyers, high-spenders-ecom, non-buyers, or engaged. The segment
is created automatically on first use and reused afterwards. If an unrelated
segment with the template’s name but different filters already exists, the
request fails with a 409 - sync that segment via segmentId or rename it.string
required
Meta ad account ID (
act_...). Use List Ad
Accounts to find it.string
required
Name for the custom audience in Meta Ads Manager.
string
default:"daily"
How often the segment is re-uploaded:
hourly, daily, or weekly.curl -X POST "https://api.sequenzy.com/api/v1/audience-syncs" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"predefinedSegmentId": "recent-buyers",
"adAccountId": "act_1234567890",
"audienceName": "Sequenzy - Recent buyers",
"frequency": "daily"
}'
Audiences are add-only: subscribers who later leave the segment stay in the
Meta audience. Meta requires 100+ matched people before an audience can be
used for ad delivery.
Responses
{
"success": true,
"audienceSync": {
"id": "sync_abc123",
"segmentId": "seg_recent_buyers",
"segmentName": "Recent buyers",
"adAccountId": "act_1234567890",
"audienceName": "Sequenzy - Recent buyers",
"frequency": "daily",
"isActive": true,
"syncStatus": "idle",
"lastSyncAt": null,
"lastSyncError": null,
"lastSyncedCount": 0,
"createdAt": "2026-06-12T10:00:00.000Z"
}
}
{
"error": "Meta Ads is not connected for this company. Connect it in Settings -> Integrations."
}
{
"error": "Provide either a segmentId or a predefinedSegmentId, not both"
}
{
"error": "Segment not found"
}
{
"error": "This segment is already synced to an audience in that ad account"
}
{
"error": "A segment named \"Recent buyers\" already exists with different filters. Sync it via segmentId, or rename it to use the \"recent-buyers\" template."
}
{
"error": "Unauthorized"
}
⌘I
Create Audience Sync
curl --request POST \
--url https://api.sequenzy.com/api/v1/audience-syncs \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"segmentId": "<string>",
"predefinedSegmentId": "<string>",
"adAccountId": "<string>",
"audienceName": "<string>",
"frequency": "<string>"
}
'import requests
url = "https://api.sequenzy.com/api/v1/audience-syncs"
payload = {
"segmentId": "<string>",
"predefinedSegmentId": "<string>",
"adAccountId": "<string>",
"audienceName": "<string>",
"frequency": "<string>"
}
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({
segmentId: '<string>',
predefinedSegmentId: '<string>',
adAccountId: '<string>',
audienceName: '<string>',
frequency: '<string>'
})
};
fetch('https://api.sequenzy.com/api/v1/audience-syncs', 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.sequenzy.com/api/v1/audience-syncs",
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([
'segmentId' => '<string>',
'predefinedSegmentId' => '<string>',
'adAccountId' => '<string>',
'audienceName' => '<string>',
'frequency' => '<string>'
]),
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.sequenzy.com/api/v1/audience-syncs"
payload := strings.NewReader("{\n \"segmentId\": \"<string>\",\n \"predefinedSegmentId\": \"<string>\",\n \"adAccountId\": \"<string>\",\n \"audienceName\": \"<string>\",\n \"frequency\": \"<string>\"\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.sequenzy.com/api/v1/audience-syncs")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"segmentId\": \"<string>\",\n \"predefinedSegmentId\": \"<string>\",\n \"adAccountId\": \"<string>\",\n \"audienceName\": \"<string>\",\n \"frequency\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sequenzy.com/api/v1/audience-syncs")
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 \"segmentId\": \"<string>\",\n \"predefinedSegmentId\": \"<string>\",\n \"adAccountId\": \"<string>\",\n \"audienceName\": \"<string>\",\n \"frequency\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"audienceSync": {
"id": "sync_abc123",
"segmentId": "seg_recent_buyers",
"segmentName": "Recent buyers",
"adAccountId": "act_1234567890",
"audienceName": "Sequenzy - Recent buyers",
"frequency": "daily",
"isActive": true,
"syncStatus": "idle",
"lastSyncAt": null,
"lastSyncError": null,
"lastSyncedCount": 0,
"createdAt": "2026-06-12T10:00:00.000Z"
}
}
{
"error": "Meta Ads is not connected for this company. Connect it in Settings -> Integrations."
}
{
"error": "Provide either a segmentId or a predefinedSegmentId, not both"
}
{
"error": "Segment not found"
}
{
"error": "This segment is already synced to an audience in that ad account"
}
{
"error": "A segment named \"Recent buyers\" already exists with different filters. Sync it via segmentId, or rename it to use the \"recent-buyers\" template."
}
{
"error": "Unauthorized"
}