curl --request POST \
--url https://api.gcore.com/security/edgeproxy/v3/profiles \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "web-server-profile",
"origin_host": "8.8.8.8",
"rules": [
{
"mappings": [
{
"port": 80,
"protocol": "tcp",
"proxy_protocol": {
"accept_proxy": true,
"version": "2"
}
},
{
"port": 53,
"protocol": "udp"
}
],
"policy": "allow"
}
],
"template_id": 3
}
'import requests
url = "https://api.gcore.com/security/edgeproxy/v3/profiles"
payload = {
"name": "web-server-profile",
"origin_host": "8.8.8.8",
"rules": [
{
"mappings": [
{
"port": 80,
"protocol": "tcp",
"proxy_protocol": {
"accept_proxy": True,
"version": "2"
}
},
{
"port": 53,
"protocol": "udp"
}
],
"policy": "allow"
}
],
"template_id": 3
}
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({
name: 'web-server-profile',
origin_host: '8.8.8.8',
rules: [
{
mappings: [
{port: 80, protocol: 'tcp', proxy_protocol: {accept_proxy: true, version: '2'}},
{port: 53, protocol: 'udp'}
],
policy: 'allow'
}
],
template_id: 3
})
};
fetch('https://api.gcore.com/security/edgeproxy/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/edgeproxy/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([
'name' => 'web-server-profile',
'origin_host' => '8.8.8.8',
'rules' => [
[
'mappings' => [
[
'port' => 80,
'protocol' => 'tcp',
'proxy_protocol' => [
'accept_proxy' => true,
'version' => '2'
]
],
[
'port' => 53,
'protocol' => 'udp'
]
],
'policy' => 'allow'
]
],
'template_id' => 3
]),
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/edgeproxy/v3/profiles"
payload := strings.NewReader("{\n \"name\": \"web-server-profile\",\n \"origin_host\": \"8.8.8.8\",\n \"rules\": [\n {\n \"mappings\": [\n {\n \"port\": 80,\n \"protocol\": \"tcp\",\n \"proxy_protocol\": {\n \"accept_proxy\": true,\n \"version\": \"2\"\n }\n },\n {\n \"port\": 53,\n \"protocol\": \"udp\"\n }\n ],\n \"policy\": \"allow\"\n }\n ],\n \"template_id\": 3\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/edgeproxy/v3/profiles")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"web-server-profile\",\n \"origin_host\": \"8.8.8.8\",\n \"rules\": [\n {\n \"mappings\": [\n {\n \"port\": 80,\n \"protocol\": \"tcp\",\n \"proxy_protocol\": {\n \"accept_proxy\": true,\n \"version\": \"2\"\n }\n },\n {\n \"port\": 53,\n \"protocol\": \"udp\"\n }\n ],\n \"policy\": \"allow\"\n }\n ],\n \"template_id\": 3\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gcore.com/security/edgeproxy/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 \"name\": \"web-server-profile\",\n \"origin_host\": \"8.8.8.8\",\n \"rules\": [\n {\n \"mappings\": [\n {\n \"port\": 80,\n \"protocol\": \"tcp\",\n \"proxy_protocol\": {\n \"accept_proxy\": true,\n \"version\": \"2\"\n }\n },\n {\n \"port\": 53,\n \"protocol\": \"udp\"\n }\n ],\n \"policy\": \"allow\"\n }\n ],\n \"template_id\": 3\n}"
response = http.request(request)
puts response.read_body{
"client_id": 7,
"created_at": "2025-11-15T10:30:00Z",
"id": 42,
"is_error": false,
"is_processing": false,
"name": "web-server-profile",
"origin_host": "8.8.8.8",
"protected_ip_address": "10.0.0.50",
"rules": [
{
"mappings": [
{
"port": 80,
"protocol": "tcp",
"proxy_protocol": {
"accept_proxy": true,
"version": "2"
},
"rule_id": "3f2b8c1e-5d4a-4e6b-9c7d-1a2b3c4d5e6f"
},
{
"port": 53,
"protocol": "udp",
"rule_id": "7a9e0d2c-4b1f-4c3a-8e5d-6f7a8b9c0d1e"
}
],
"policy": "allow"
}
],
"status": "ACTIVE",
"template_id": 3
}{}{}{}{}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Create proxy profile
Create a new edge proxy profile with ACL rules. Omit protected_ip_address or use null for automatic allocation. For manual selection, supply an IPv4 string from any non-common pool assigned to the target customer, including restricted shared pools. Manual failures never substitute another address or pool.
curl --request POST \
--url https://api.gcore.com/security/edgeproxy/v3/profiles \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "web-server-profile",
"origin_host": "8.8.8.8",
"rules": [
{
"mappings": [
{
"port": 80,
"protocol": "tcp",
"proxy_protocol": {
"accept_proxy": true,
"version": "2"
}
},
{
"port": 53,
"protocol": "udp"
}
],
"policy": "allow"
}
],
"template_id": 3
}
'import requests
url = "https://api.gcore.com/security/edgeproxy/v3/profiles"
payload = {
"name": "web-server-profile",
"origin_host": "8.8.8.8",
"rules": [
{
"mappings": [
{
"port": 80,
"protocol": "tcp",
"proxy_protocol": {
"accept_proxy": True,
"version": "2"
}
},
{
"port": 53,
"protocol": "udp"
}
],
"policy": "allow"
}
],
"template_id": 3
}
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({
name: 'web-server-profile',
origin_host: '8.8.8.8',
rules: [
{
mappings: [
{port: 80, protocol: 'tcp', proxy_protocol: {accept_proxy: true, version: '2'}},
{port: 53, protocol: 'udp'}
],
policy: 'allow'
}
],
template_id: 3
})
};
fetch('https://api.gcore.com/security/edgeproxy/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/edgeproxy/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([
'name' => 'web-server-profile',
'origin_host' => '8.8.8.8',
'rules' => [
[
'mappings' => [
[
'port' => 80,
'protocol' => 'tcp',
'proxy_protocol' => [
'accept_proxy' => true,
'version' => '2'
]
],
[
'port' => 53,
'protocol' => 'udp'
]
],
'policy' => 'allow'
]
],
'template_id' => 3
]),
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/edgeproxy/v3/profiles"
payload := strings.NewReader("{\n \"name\": \"web-server-profile\",\n \"origin_host\": \"8.8.8.8\",\n \"rules\": [\n {\n \"mappings\": [\n {\n \"port\": 80,\n \"protocol\": \"tcp\",\n \"proxy_protocol\": {\n \"accept_proxy\": true,\n \"version\": \"2\"\n }\n },\n {\n \"port\": 53,\n \"protocol\": \"udp\"\n }\n ],\n \"policy\": \"allow\"\n }\n ],\n \"template_id\": 3\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/edgeproxy/v3/profiles")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"web-server-profile\",\n \"origin_host\": \"8.8.8.8\",\n \"rules\": [\n {\n \"mappings\": [\n {\n \"port\": 80,\n \"protocol\": \"tcp\",\n \"proxy_protocol\": {\n \"accept_proxy\": true,\n \"version\": \"2\"\n }\n },\n {\n \"port\": 53,\n \"protocol\": \"udp\"\n }\n ],\n \"policy\": \"allow\"\n }\n ],\n \"template_id\": 3\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gcore.com/security/edgeproxy/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 \"name\": \"web-server-profile\",\n \"origin_host\": \"8.8.8.8\",\n \"rules\": [\n {\n \"mappings\": [\n {\n \"port\": 80,\n \"protocol\": \"tcp\",\n \"proxy_protocol\": {\n \"accept_proxy\": true,\n \"version\": \"2\"\n }\n },\n {\n \"port\": 53,\n \"protocol\": \"udp\"\n }\n ],\n \"policy\": \"allow\"\n }\n ],\n \"template_id\": 3\n}"
response = http.request(request)
puts response.read_body{
"client_id": 7,
"created_at": "2025-11-15T10:30:00Z",
"id": 42,
"is_error": false,
"is_processing": false,
"name": "web-server-profile",
"origin_host": "8.8.8.8",
"protected_ip_address": "10.0.0.50",
"rules": [
{
"mappings": [
{
"port": 80,
"protocol": "tcp",
"proxy_protocol": {
"accept_proxy": true,
"version": "2"
},
"rule_id": "3f2b8c1e-5d4a-4e6b-9c7d-1a2b3c4d5e6f"
},
{
"port": 53,
"protocol": "udp",
"rule_id": "7a9e0d2c-4b1f-4c3a-8e5d-6f7a8b9c0d1e"
}
],
"policy": "allow"
}
],
"status": "ACTIVE",
"template_id": 3
}{}{}{}{}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}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
Body
Name of the proxy profile
1 - 60Origin host (IPv4 address or FQDN) for the proxy profile.
Rules grouped by policy
1Show child attributes
Show child attributes
ID of the proxy template to render this profile with
Optional manual IPv4 selection from any assigned non-common pool, including shared pools. Omit or use null for automatic allocation. Creation rechecks availability; no fallback on manual failure.
"192.0.2.10"
Response
Successful Response
Unique identifier of the proxy profile
Identifier of the client owning this profile
Name of the proxy profile
Origin host (IPv4 address or FQDN) of the proxy profile
Protected IP address assigned to the profile
Current status of the proxy profile
INACTIVE, ACTIVE, DELETED Whether the profile is currently being processed
Whether the profile is in an error state
Details of the error if the profile is in an error state
Show child attributes
Show child attributes
Timestamp when the profile was created
ID of the proxy template bound to this profile
Show child attributes
Show child attributes
Was this page helpful?