Create Segment
Creates a new player segment by defining the conditions on player properties. Also, create actions to target the player segments for a title.
Error codes
This operation may return the following PlayFab errors:
| Error | Code |
|---|---|
| InvalidSegment | 1242 |
| NameNotAvailable | 1058 |
| ProductDisabledForTitle | 1609 |
| SegmentManagementInvalidInput | 10005 |
| SegmentManagementInvalidSegmentId | 10004 |
| SegmentManagementInvalidSegmentName | 10006 |
| SegmentManagementNoExpressionTree | 10001 |
| SegmentManagementSegmentCountOverLimit | 10003 |
| SegmentManagementTriggerActionCountOverLimit | 10002 |
| UnknownError | 1039 |
POST
/
Admin
/
CreateSegment
Create Segment
curl --request POST \
--url https://{titleId}.playfabapi.com/Admin/CreateSegment \
--header 'Content-Type: application/json' \
--header 'X-SecretKey: <api-key>' \
--data '
{
"SegmentModel": {
"Name": "My user segment",
"SegmentOrDefinitions": [
{
"SegmentAndDefinitions": [
{
"AllPlayersFilter": {}
}
]
}
],
"EnteredSegmentActions": [
{
"BanPlayerAction": {
"BanHours": 2,
"ReasonForBan": "Not played for a year"
}
}
],
"LeftSegmentActions": [
{
"ExecuteAzureFunctionAction": {
"AzureFunction": "AzureFunction1",
"FunctionParameter": "{\"InputParam\": \"1\"}"
}
}
]
}
}
'import requests
url = "https://{titleId}.playfabapi.com/Admin/CreateSegment"
payload = { "SegmentModel": {
"Name": "My user segment",
"SegmentOrDefinitions": [{ "SegmentAndDefinitions": [{ "AllPlayersFilter": {} }] }],
"EnteredSegmentActions": [{ "BanPlayerAction": {
"BanHours": 2,
"ReasonForBan": "Not played for a year"
} }],
"LeftSegmentActions": [{ "ExecuteAzureFunctionAction": {
"AzureFunction": "AzureFunction1",
"FunctionParameter": "{\"InputParam\": \"1\"}"
} }]
} }
headers = {
"X-SecretKey": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-SecretKey': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
SegmentModel: {
Name: 'My user segment',
SegmentOrDefinitions: [{SegmentAndDefinitions: [{AllPlayersFilter: {}}]}],
EnteredSegmentActions: [{BanPlayerAction: {BanHours: 2, ReasonForBan: 'Not played for a year'}}],
LeftSegmentActions: [
{
ExecuteAzureFunctionAction: {AzureFunction: 'AzureFunction1', FunctionParameter: '{"InputParam": "1"}'}
}
]
}
})
};
fetch('https://{titleId}.playfabapi.com/Admin/CreateSegment', 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://{titleId}.playfabapi.com/Admin/CreateSegment",
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([
'SegmentModel' => [
'Name' => 'My user segment',
'SegmentOrDefinitions' => [
[
'SegmentAndDefinitions' => [
[
'AllPlayersFilter' => [
]
]
]
]
],
'EnteredSegmentActions' => [
[
'BanPlayerAction' => [
'BanHours' => 2,
'ReasonForBan' => 'Not played for a year'
]
]
],
'LeftSegmentActions' => [
[
'ExecuteAzureFunctionAction' => [
'AzureFunction' => 'AzureFunction1',
'FunctionParameter' => '{"InputParam": "1"}'
]
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-SecretKey: <api-key>"
],
]);
$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://{titleId}.playfabapi.com/Admin/CreateSegment"
payload := strings.NewReader("{\n \"SegmentModel\": {\n \"Name\": \"My user segment\",\n \"SegmentOrDefinitions\": [\n {\n \"SegmentAndDefinitions\": [\n {\n \"AllPlayersFilter\": {}\n }\n ]\n }\n ],\n \"EnteredSegmentActions\": [\n {\n \"BanPlayerAction\": {\n \"BanHours\": 2,\n \"ReasonForBan\": \"Not played for a year\"\n }\n }\n ],\n \"LeftSegmentActions\": [\n {\n \"ExecuteAzureFunctionAction\": {\n \"AzureFunction\": \"AzureFunction1\",\n \"FunctionParameter\": \"{\\\"InputParam\\\": \\\"1\\\"}\"\n }\n }\n ]\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-SecretKey", "<api-key>")
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://{titleId}.playfabapi.com/Admin/CreateSegment")
.header("X-SecretKey", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"SegmentModel\": {\n \"Name\": \"My user segment\",\n \"SegmentOrDefinitions\": [\n {\n \"SegmentAndDefinitions\": [\n {\n \"AllPlayersFilter\": {}\n }\n ]\n }\n ],\n \"EnteredSegmentActions\": [\n {\n \"BanPlayerAction\": {\n \"BanHours\": 2,\n \"ReasonForBan\": \"Not played for a year\"\n }\n }\n ],\n \"LeftSegmentActions\": [\n {\n \"ExecuteAzureFunctionAction\": {\n \"AzureFunction\": \"AzureFunction1\",\n \"FunctionParameter\": \"{\\\"InputParam\\\": \\\"1\\\"}\"\n }\n }\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{titleId}.playfabapi.com/Admin/CreateSegment")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-SecretKey"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"SegmentModel\": {\n \"Name\": \"My user segment\",\n \"SegmentOrDefinitions\": [\n {\n \"SegmentAndDefinitions\": [\n {\n \"AllPlayersFilter\": {}\n }\n ]\n }\n ],\n \"EnteredSegmentActions\": [\n {\n \"BanPlayerAction\": {\n \"BanHours\": 2,\n \"ReasonForBan\": \"Not played for a year\"\n }\n }\n ],\n \"LeftSegmentActions\": [\n {\n \"ExecuteAzureFunctionAction\": {\n \"AzureFunction\": \"AzureFunction1\",\n \"FunctionParameter\": \"{\\\"InputParam\\\": \\\"1\\\"}\"\n }\n }\n ]\n }\n}"
response = http.request(request)
puts response.read_body{
"code": 123,
"status": "<string>",
"data": {
"ErrorMessage": "<string>",
"SegmentId": "<string>"
}
}{
"code": 123,
"errorCode": 123,
"status": "<string>",
"error": "<string>",
"errorMessage": "<string>",
"errorDetails": {}
}Authorizations
This API requires a title secret key, available to title admins, from PlayFab Game Manager.
Body
application/json
Send all the segment details part of CreateSegmentRequest
Send all the segment details part of CreateSegmentRequest
Segment model with all of the segment properties data.
Show child attributes
Show child attributes
Last modified on October 1, 2026
Was this page helpful?
⌘I
Create Segment
curl --request POST \
--url https://{titleId}.playfabapi.com/Admin/CreateSegment \
--header 'Content-Type: application/json' \
--header 'X-SecretKey: <api-key>' \
--data '
{
"SegmentModel": {
"Name": "My user segment",
"SegmentOrDefinitions": [
{
"SegmentAndDefinitions": [
{
"AllPlayersFilter": {}
}
]
}
],
"EnteredSegmentActions": [
{
"BanPlayerAction": {
"BanHours": 2,
"ReasonForBan": "Not played for a year"
}
}
],
"LeftSegmentActions": [
{
"ExecuteAzureFunctionAction": {
"AzureFunction": "AzureFunction1",
"FunctionParameter": "{\"InputParam\": \"1\"}"
}
}
]
}
}
'import requests
url = "https://{titleId}.playfabapi.com/Admin/CreateSegment"
payload = { "SegmentModel": {
"Name": "My user segment",
"SegmentOrDefinitions": [{ "SegmentAndDefinitions": [{ "AllPlayersFilter": {} }] }],
"EnteredSegmentActions": [{ "BanPlayerAction": {
"BanHours": 2,
"ReasonForBan": "Not played for a year"
} }],
"LeftSegmentActions": [{ "ExecuteAzureFunctionAction": {
"AzureFunction": "AzureFunction1",
"FunctionParameter": "{\"InputParam\": \"1\"}"
} }]
} }
headers = {
"X-SecretKey": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-SecretKey': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
SegmentModel: {
Name: 'My user segment',
SegmentOrDefinitions: [{SegmentAndDefinitions: [{AllPlayersFilter: {}}]}],
EnteredSegmentActions: [{BanPlayerAction: {BanHours: 2, ReasonForBan: 'Not played for a year'}}],
LeftSegmentActions: [
{
ExecuteAzureFunctionAction: {AzureFunction: 'AzureFunction1', FunctionParameter: '{"InputParam": "1"}'}
}
]
}
})
};
fetch('https://{titleId}.playfabapi.com/Admin/CreateSegment', 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://{titleId}.playfabapi.com/Admin/CreateSegment",
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([
'SegmentModel' => [
'Name' => 'My user segment',
'SegmentOrDefinitions' => [
[
'SegmentAndDefinitions' => [
[
'AllPlayersFilter' => [
]
]
]
]
],
'EnteredSegmentActions' => [
[
'BanPlayerAction' => [
'BanHours' => 2,
'ReasonForBan' => 'Not played for a year'
]
]
],
'LeftSegmentActions' => [
[
'ExecuteAzureFunctionAction' => [
'AzureFunction' => 'AzureFunction1',
'FunctionParameter' => '{"InputParam": "1"}'
]
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-SecretKey: <api-key>"
],
]);
$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://{titleId}.playfabapi.com/Admin/CreateSegment"
payload := strings.NewReader("{\n \"SegmentModel\": {\n \"Name\": \"My user segment\",\n \"SegmentOrDefinitions\": [\n {\n \"SegmentAndDefinitions\": [\n {\n \"AllPlayersFilter\": {}\n }\n ]\n }\n ],\n \"EnteredSegmentActions\": [\n {\n \"BanPlayerAction\": {\n \"BanHours\": 2,\n \"ReasonForBan\": \"Not played for a year\"\n }\n }\n ],\n \"LeftSegmentActions\": [\n {\n \"ExecuteAzureFunctionAction\": {\n \"AzureFunction\": \"AzureFunction1\",\n \"FunctionParameter\": \"{\\\"InputParam\\\": \\\"1\\\"}\"\n }\n }\n ]\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-SecretKey", "<api-key>")
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://{titleId}.playfabapi.com/Admin/CreateSegment")
.header("X-SecretKey", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"SegmentModel\": {\n \"Name\": \"My user segment\",\n \"SegmentOrDefinitions\": [\n {\n \"SegmentAndDefinitions\": [\n {\n \"AllPlayersFilter\": {}\n }\n ]\n }\n ],\n \"EnteredSegmentActions\": [\n {\n \"BanPlayerAction\": {\n \"BanHours\": 2,\n \"ReasonForBan\": \"Not played for a year\"\n }\n }\n ],\n \"LeftSegmentActions\": [\n {\n \"ExecuteAzureFunctionAction\": {\n \"AzureFunction\": \"AzureFunction1\",\n \"FunctionParameter\": \"{\\\"InputParam\\\": \\\"1\\\"}\"\n }\n }\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{titleId}.playfabapi.com/Admin/CreateSegment")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-SecretKey"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"SegmentModel\": {\n \"Name\": \"My user segment\",\n \"SegmentOrDefinitions\": [\n {\n \"SegmentAndDefinitions\": [\n {\n \"AllPlayersFilter\": {}\n }\n ]\n }\n ],\n \"EnteredSegmentActions\": [\n {\n \"BanPlayerAction\": {\n \"BanHours\": 2,\n \"ReasonForBan\": \"Not played for a year\"\n }\n }\n ],\n \"LeftSegmentActions\": [\n {\n \"ExecuteAzureFunctionAction\": {\n \"AzureFunction\": \"AzureFunction1\",\n \"FunctionParameter\": \"{\\\"InputParam\\\": \\\"1\\\"}\"\n }\n }\n ]\n }\n}"
response = http.request(request)
puts response.read_body{
"code": 123,
"status": "<string>",
"data": {
"ErrorMessage": "<string>",
"SegmentId": "<string>"
}
}{
"code": 123,
"errorCode": 123,
"status": "<string>",
"error": "<string>",
"errorMessage": "<string>",
"errorDetails": {}
}