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": "plan",
"operator": "equals",
"value": "pro"
}
]
},
"description": "<string>"
}
'import requests
url = "https://app.loops.so/api/v1/audience-segments"
payload = {
"name": "<string>",
"filter": { "conditions": [
{
"type": "property",
"key": "plan",
"operator": "equals",
"value": "pro"
}
] },
"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: 'plan', operator: 'equals', value: 'pro'}]
},
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' => 'plan',
'operator' => 'equals',
'value' => 'pro'
]
]
],
'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\": \"plan\",\n \"operator\": \"equals\",\n \"value\": \"pro\"\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\": \"plan\",\n \"operator\": \"equals\",\n \"value\": \"pro\"\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\": \"plan\",\n \"operator\": \"equals\",\n \"value\": \"pro\"\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": "plan",
"operator": "equals",
"value": "pro"
}
]
}
}{
"message": "<string>"
}{
"message": "<string>"
}Create an audience segment
Create a new 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": "plan",
"operator": "equals",
"value": "pro"
}
]
},
"description": "<string>"
}
'import requests
url = "https://app.loops.so/api/v1/audience-segments"
payload = {
"name": "<string>",
"filter": { "conditions": [
{
"type": "property",
"key": "plan",
"operator": "equals",
"value": "pro"
}
] },
"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: 'plan', operator: 'equals', value: 'pro'}]
},
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' => 'plan',
'operator' => 'equals',
'value' => 'pro'
]
]
],
'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\": \"plan\",\n \"operator\": \"equals\",\n \"value\": \"pro\"\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\": \"plan\",\n \"operator\": \"equals\",\n \"value\": \"pro\"\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\": \"plan\",\n \"operator\": \"equals\",\n \"value\": \"pro\"\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": "plan",
"operator": "equals",
"value": "pro"
}
]
}
}{
"message": "<string>"
}{
"message": "<string>"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
The name of the audience segment. Must be unique within the team.
255"Active users"
A tree of audience conditions combined with match.
Show child attributes
Show child attributes
An optional description of the audience segment.
1000Response
Audience segment created.
The ID of the audience segment.
"cls6e8g0i2k4m6o8q0s2u4w6"
The name of the audience segment.
"Power users"
An optional description of the audience segment.
"Contacts on the pro plan"
ISO 8601 timestamp for when the audience segment was created.
"2025-06-29T07:47:39.370Z"
ISO 8601 timestamp for when the audience segment was last updated.
"2025-06-29T07:47:39.370Z"
A tree of audience conditions combined with match.
Show child attributes
Show child attributes
Related topics
API IntroductionAPI ChangelogFilters and SegmentsGet an audience segmentList audience segmentsWas this page helpful?

