Create protection profile
curl --request POST \
--url https://api.gcore.com/security/sifter/v3/profiles \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"fields": [
{
"name": "bandwidth_limit",
"template_field_id": 5,
"value": "100"
},
{
"name": "syn_flood_protection",
"template_field_id": 8,
"value": "enabled"
}
],
"name": "Web Server Protection",
"template_id": 1
}
'import requests
url = "https://api.gcore.com/security/sifter/v3/profiles"
payload = {
"fields": [
{
"name": "bandwidth_limit",
"template_field_id": 5,
"value": "100"
},
{
"name": "syn_flood_protection",
"template_field_id": 8,
"value": "enabled"
}
],
"name": "Web Server Protection",
"template_id": 1
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
fields: [
{name: 'bandwidth_limit', template_field_id: 5, value: '100'},
{name: 'syn_flood_protection', template_field_id: 8, value: 'enabled'}
],
name: 'Web Server Protection',
template_id: 1
})
};
fetch('https://api.gcore.com/security/sifter/v3/profiles', 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.gcore.com/security/sifter/v3/profiles",
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([
'fields' => [
[
'name' => 'bandwidth_limit',
'template_field_id' => 5,
'value' => '100'
],
[
'name' => 'syn_flood_protection',
'template_field_id' => 8,
'value' => 'enabled'
]
],
'name' => 'Web Server Protection',
'template_id' => 1
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"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.gcore.com/security/sifter/v3/profiles"
payload := strings.NewReader("{\n \"fields\": [\n {\n \"name\": \"bandwidth_limit\",\n \"template_field_id\": 5,\n \"value\": \"100\"\n },\n {\n \"name\": \"syn_flood_protection\",\n \"template_field_id\": 8,\n \"value\": \"enabled\"\n }\n ],\n \"name\": \"Web Server Protection\",\n \"template_id\": 1\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<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://api.gcore.com/security/sifter/v3/profiles")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"fields\": [\n {\n \"name\": \"bandwidth_limit\",\n \"template_field_id\": 5,\n \"value\": \"100\"\n },\n {\n \"name\": \"syn_flood_protection\",\n \"template_field_id\": 8,\n \"value\": \"enabled\"\n }\n ],\n \"name\": \"Web Server Protection\",\n \"template_id\": 1\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gcore.com/security/sifter/v3/profiles")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"fields\": [\n {\n \"name\": \"bandwidth_limit\",\n \"template_field_id\": 5,\n \"value\": \"100\"\n },\n {\n \"name\": \"syn_flood_protection\",\n \"template_field_id\": 8,\n \"value\": \"enabled\"\n }\n ],\n \"name\": \"Web Server Protection\",\n \"template_id\": 1\n}"
response = http.request(request)
puts response.read_body{
"client_id": 3,
"created_at": "2025-06-15T10:30:00Z",
"fields": [
{
"template_field_id": 5,
"value": "100"
},
{
"template_field_id": 8,
"value": "enabled"
}
],
"id": 10,
"modified_at": "2025-07-20T14:45:00Z",
"name": "Web Server Protection",
"networks": [
"192.168.1.0/24",
"10.0.0.0/16"
],
"template": {
"id": 1,
"name": "DDoS Protection Standard"
}
}{}{}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Protection Profiles
Create protection profile
Create protection profile
POST
/
security
/
sifter
/
v3
/
profiles
Create protection profile
curl --request POST \
--url https://api.gcore.com/security/sifter/v3/profiles \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"fields": [
{
"name": "bandwidth_limit",
"template_field_id": 5,
"value": "100"
},
{
"name": "syn_flood_protection",
"template_field_id": 8,
"value": "enabled"
}
],
"name": "Web Server Protection",
"template_id": 1
}
'import requests
url = "https://api.gcore.com/security/sifter/v3/profiles"
payload = {
"fields": [
{
"name": "bandwidth_limit",
"template_field_id": 5,
"value": "100"
},
{
"name": "syn_flood_protection",
"template_field_id": 8,
"value": "enabled"
}
],
"name": "Web Server Protection",
"template_id": 1
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
fields: [
{name: 'bandwidth_limit', template_field_id: 5, value: '100'},
{name: 'syn_flood_protection', template_field_id: 8, value: 'enabled'}
],
name: 'Web Server Protection',
template_id: 1
})
};
fetch('https://api.gcore.com/security/sifter/v3/profiles', 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.gcore.com/security/sifter/v3/profiles",
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([
'fields' => [
[
'name' => 'bandwidth_limit',
'template_field_id' => 5,
'value' => '100'
],
[
'name' => 'syn_flood_protection',
'template_field_id' => 8,
'value' => 'enabled'
]
],
'name' => 'Web Server Protection',
'template_id' => 1
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"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.gcore.com/security/sifter/v3/profiles"
payload := strings.NewReader("{\n \"fields\": [\n {\n \"name\": \"bandwidth_limit\",\n \"template_field_id\": 5,\n \"value\": \"100\"\n },\n {\n \"name\": \"syn_flood_protection\",\n \"template_field_id\": 8,\n \"value\": \"enabled\"\n }\n ],\n \"name\": \"Web Server Protection\",\n \"template_id\": 1\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<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://api.gcore.com/security/sifter/v3/profiles")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"fields\": [\n {\n \"name\": \"bandwidth_limit\",\n \"template_field_id\": 5,\n \"value\": \"100\"\n },\n {\n \"name\": \"syn_flood_protection\",\n \"template_field_id\": 8,\n \"value\": \"enabled\"\n }\n ],\n \"name\": \"Web Server Protection\",\n \"template_id\": 1\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gcore.com/security/sifter/v3/profiles")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"fields\": [\n {\n \"name\": \"bandwidth_limit\",\n \"template_field_id\": 5,\n \"value\": \"100\"\n },\n {\n \"name\": \"syn_flood_protection\",\n \"template_field_id\": 8,\n \"value\": \"enabled\"\n }\n ],\n \"name\": \"Web Server Protection\",\n \"template_id\": 1\n}"
response = http.request(request)
puts response.read_body{
"client_id": 3,
"created_at": "2025-06-15T10:30:00Z",
"fields": [
{
"template_field_id": 5,
"value": "100"
},
{
"template_field_id": 8,
"value": "enabled"
}
],
"id": 10,
"modified_at": "2025-07-20T14:45:00Z",
"name": "Web Server Protection",
"networks": [
"192.168.1.0/24",
"10.0.0.0/16"
],
"template": {
"id": 1,
"name": "DDoS Protection Standard"
}
}{}{}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Authorizations
API key for authentication. Make sure to include the word apikey, followed by a single space and then your token.
Example: apikey 1234_abcdef
Query Parameters
A positive integer ID
Required range:
1 <= x <= 1000000000Body
application/json
Response
Successful Response
Identifier for the protection profile
Identifier of the client owning this profile
Name of the protection profile
List of profile field values
Show child attributes
Show child attributes
Associated profile template
Show child attributes
Show child attributes
Example:
{
"id": 1,
"name": "DDoS Protection Standard"
}
Timestamp when the profile was created
Timestamp of the last modification
Was this page helpful?
⌘I