Common API calls
The following sections contain example cURL requests for common API calls. For a list of available API endpoints, refer to Endpoints.
Get Advanced TCP Protection status
This example obtains the current status of Advanced TCP Protection (enabled or disabled).
Example cURL request$ curl "https://api.cloudflare.com/client/v4/accounts/<ACCOUNT_ID>/magic/advanced_tcp_protection/configs/tcp_protection_status" \
-H "Authorization: Bearer <API_TOKEN>"
Example response{ "result": { "enabled": false }, "success": true, "errors": [], "messages": []
}
Enable Advanced TCP Protection
This example enables Advanced TCP Protection.
Example cURL request$ curl -X PATCH \"https://api.cloudflare.com/client/v4/accounts/<ACCOUNT_ID>/magic/advanced_tcp_protection/configs/tcp_protection_status" \-H "Authorization: Bearer <API_TOKEN>" \-H "Content-Type: application/json" \-d '{ "enabled": true
}'
Get existing prefixes
This example fetches all existing prefixes in Advanced TCP Protection.
Example cURL request$ curl "https://api.cloudflare.com/client/v4/accounts/<ACCOUNT_ID>/magic/advanced_tcp_protection/configs/prefixes" \
-H "Authorization: Bearer <API_TOKEN>"
Example response{ "result": [ { "prefix": "203.0.113/24", "comment": "My prefix", "excluded": false } ], "success": true, "errors": [], "messages": []
}
Add prefixes
This example adds two prefixes. The second prefix excludes a subset of the first prefix from Advanced TCP Protection.
Example cURL request$ curl -X POST \"https://api.cloudflare.com/client/v4/accounts/<ACCOUNT_ID>/magic/advanced_tcp_protection/configs/prefixes/bulk" \-H "Authorization: Bearer <API_TOKEN>" \-H "Content-Type: application/json" \-d '[ { "prefix": "192.0.2.0/24", "comment": "Game ranges", "excluded": false }, { "prefix": "192.0.2.2/26", "comment": "Range for a specific game", "excluded": true }
]'
Example response{ "result": [ { "id": "<PREFIX_1_ID>", "prefix": "192.0.2.0/24", "excluded": false, "comment": "Game ranges", "created_on": "<TIMESTAMP>", "modified_on": "<TIMESTAMP>" }, { "id": "<PREFIX_2_ID>", "prefix": "192.0.2.2/26", "excluded": true, "comment": "Range for a specific game", "created_on": "<TIMESTAMP>", "modified_on": "<TIMESTAMP>" } ], "success": true, "errors": [], "messages": []
}
Get all prefixes in allowlist
Example cURL request$ curl "https://api.cloudflare.com/client/v4/accounts/<ACCOUNT_ID>/magic/advanced_tcp_protection/configs/allowlist" \
-H "Authorization: Bearer <API_TOKEN>"
Example response{ "result": [ { "id": "<ALLOWLIST_PREFIX_ID>", "prefix": "192.0.2.127", "comment": "Single IP address in allowlist", "enabled": true, "created_on": "<TIMESTAMP>", "modified_on": "<TIMESTAMP>" } ], "success": true, "errors": [], "messages": []
}
Add a prefix to the allowlist
This example adds a prefix to the allowlist of the account.
Example cURL request$ curl -X POST \"https://api.cloudflare.com/client/v4/accounts/<ACCOUNT_ID>/magic/advanced_tcp_protection/configs/allowlist" \-H "Authorization: Bearer <API_TOKEN>" \-H "Content-Type: application/json" \-d '{ "prefix": "203.0.113.0/26", "comment": "Partner range", "enabled": true
}'
Example response{ "result": { "id": "<ALLOWLIST_PREFIX_1_ID>", "prefix": "203.0.113.0/26", "comment": "Partner range", "enabled": true, "created_on": "<TIMESTAMP>", "modified_on": "<TIMESTAMP>" }, "success": true, "errors": [], "messages": []
}
Create a SYN flood rule
This example creates a SYN flood rule with a regional scope (Western Europe) in monitoring mode.
Example cURL request$ curl -X POST \"https://api.cloudflare.com/client/v4/accounts/<ACCOUNT_ID>/magic/advanced_tcp_protection/configs/syn_protection/rules" \-H "Authorization: Bearer <API_TOKEN>" \-H "Content-Type: application/json" \-d '{ "scope": "region", "name": "WEUR", "mode": "monitoring", "rate_sensitivity": "medium", "burst_sensitivity": "medium"
}'
Example response{ "result": { "id": "<SYN_FLOOD_RULE_ID>", "scope": "region", "name": "WEUR", "mode": "monitoring", "rate_sensitivity": "medium", "burst_sensitivity": "medium", "created_on": "<TIMESTAMP>", "modified_on": "<TIMESTAMP>" }, "success": true, "errors": [], "messages": []
}
Refer to JSON objects for more information on the fields in the JSON body.
Create an out-of-state TCP rule
This example creates an out-of-state TCP rule in monitoring mode, with a regional scope, and with low rate and burst sensitivities.
Example cURL request$ curl -X POST \"https://api.cloudflare.com/client/v4/accounts/<ACCOUNT_ID>/magic/advanced_tcp_protection/configs/tcp_flow_protection/rules" \-H "Authorization: Bearer <API_TOKEN>" \-H "Content-Type: application/json" \-d '{ "scope": "region", "name": "WEUR", "mode": "monitoring", "rate_sensitivity": "low", "burst_sensitivity": "low"
}'
Example response{ "result": { "id": "<OOS_TCP_RULE_ID>", "scope": "region", "name": "WEUR", "mode": "monitoring", "rate_sensitivity": "low", "burst_sensitivity": "low", "created_on": "<TIMESTAMP>", "modified_on": "<TIMESTAMP>" }, "success": true, "errors": [], "messages": []
}
Refer to JSON objects for more information on the fields in the JSON body.
Create a SYN flood filter
This example creates a SYN flood filter setting SYN flood protection to monitoring mode for a specific range of destination IP addresses.
Example cURL request$ curl -X POST \"https://api.cloudflare.com/client/v4/accounts/<ACCOUNT_ID>/magic/advanced_tcp_protection/configs/syn_protection/filters" \-H "Authorization: Bearer <API_TOKEN>" \-H "Content-Type: application/json" \-d '{ "expression": "ip.dst in { 192.0.2.0/24 }", "mode": "monitoring"
}'
Example response{ "result": { "id": "<SYN_FLOOD_FILTER_ID>", "expression": "ip.dst in { 192.0.2.0/24 }", "mode": "monitoring", "created_on": "<TIMESTAMP>", "modified_on": "<TIMESTAMP>" }, "success": true, "errors": [], "messages": []
}
Refer to JSON objects for more information on the fields in the JSON body.
Create an out-of-state TCP filter
This example creates an out-of-state TCP filter disabling out-of-state TCP protection for a specific range of destination IP addresses and ports.
Example cURL request$ curl -X POST \"https://api.cloudflare.com/client/v4/accounts/<ACCOUNT_ID>/magic/advanced_tcp_protection/configs/tcp_flow_protection/filters" \-H "Authorization: Bearer <API_TOKEN>" \-H "Content-Type: application/json" \-d '{ "expression": "ip.dst in { 203.0.113.0/24 } and tcp.dstport in { 8000..8081 }", "mode": "disabled"
}'
Example response{ "result": { "id": "<OOS_TCP_FILTER_ID>", "expression": "ip.dst in { 203.0.113.0/24 } and tcp.dstport in { 8000..8081 }", "mode": "disabled", "created_on": "<TIMESTAMP>", "modified_on": "<TIMESTAMP>" }, "success": true, "errors": [], "messages": []
}
Refer to JSON objects for more information on the fields in the JSON body.