Create an audience segment
curl --request POST \
--url https://app.loops.so/api/v1/audience-segments \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"filter": {
"conditions": [
{
"type": "property",
"key": "<string>",
"value": "<string>"
}
]
},
"description": "<string>"
}
'import requests
url = "https://app.loops.so/api/v1/audience-segments"
payload = {
"name": "<string>",
"filter": { "conditions": [
{
"type": "property",
"key": "<string>",
"value": "<string>"
}
] },
"description": "<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({
name: '<string>',
filter: {conditions: [{type: 'property', key: '<string>', value: '<string>'}]},
description: '<string>'
})
};
fetch('https://app.loops.so/api/v1/audience-segments', 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://app.loops.so/api/v1/audience-segments",
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>',
'filter' => [
'conditions' => [
[
'type' => 'property',
'key' => '<string>',
'value' => '<string>'
]
]
],
'description' => '<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://app.loops.so/api/v1/audience-segments"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"filter\": {\n \"conditions\": [\n {\n \"type\": \"property\",\n \"key\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n },\n \"description\": \"<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://app.loops.so/api/v1/audience-segments")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"filter\": {\n \"conditions\": [\n {\n \"type\": \"property\",\n \"key\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n },\n \"description\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.loops.so/api/v1/audience-segments")
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 \"name\": \"<string>\",\n \"filter\": {\n \"conditions\": [\n {\n \"type\": \"property\",\n \"key\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n },\n \"description\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"description": "<string>",
"createdAt": "<string>",
"updatedAt": "<string>",
"filter": {
"conditions": [
{
"type": "property",
"key": "<string>",
"value": "<string>"
}
]
}
}{
"message": "<string>"
}{
"message": "<string>"
}Audience segments
Create an audience segment
Create a new audience segment.
POST
/
v1
/
audience-segments
Create an audience segment
curl --request POST \
--url https://app.loops.so/api/v1/audience-segments \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"filter": {
"conditions": [
{
"type": "property",
"key": "<string>",
"value": "<string>"
}
]
},
"description": "<string>"
}
'import requests
url = "https://app.loops.so/api/v1/audience-segments"
payload = {
"name": "<string>",
"filter": { "conditions": [
{
"type": "property",
"key": "<string>",
"value": "<string>"
}
] },
"description": "<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({
name: '<string>',
filter: {conditions: [{type: 'property', key: '<string>', value: '<string>'}]},
description: '<string>'
})
};
fetch('https://app.loops.so/api/v1/audience-segments', 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://app.loops.so/api/v1/audience-segments",
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>',
'filter' => [
'conditions' => [
[
'type' => 'property',
'key' => '<string>',
'value' => '<string>'
]
]
],
'description' => '<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://app.loops.so/api/v1/audience-segments"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"filter\": {\n \"conditions\": [\n {\n \"type\": \"property\",\n \"key\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n },\n \"description\": \"<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://app.loops.so/api/v1/audience-segments")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"filter\": {\n \"conditions\": [\n {\n \"type\": \"property\",\n \"key\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n },\n \"description\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.loops.so/api/v1/audience-segments")
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 \"name\": \"<string>\",\n \"filter\": {\n \"conditions\": [\n {\n \"type\": \"property\",\n \"key\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n },\n \"description\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"description": "<string>",
"createdAt": "<string>",
"updatedAt": "<string>",
"filter": {
"conditions": [
{
"type": "property",
"key": "<string>",
"value": "<string>"
}
]
}
}{
"message": "<string>"
}{
"message": "<string>"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
application/json
The name of the audience segment. Must be unique within the team.
Maximum string length:
255Example:
"Active users"
A tree of audience conditions combined with match.
Show child attributes
Show child attributes
An optional description of the audience segment.
Maximum string length:
1000Response
Audience segment created.
The ID of the audience segment.
The name of the audience segment.
An optional description of the audience segment.
ISO 8601 timestamp for when the audience segment was created.
ISO 8601 timestamp for when the audience segment was last updated.
A tree of audience conditions combined with match.
Show child attributes
Show child attributes
Last modified on July 22, 2026
Related topics
Filters and SegmentsGet an audience segmentList audience segmentsAPI IntroductionCampaigns API examplesWas this page helpful?
⌘I

