Detection, Mitigation & Response

Detect and mitigate DDoS attacks in under 1 second, respond automatically, and keep your users informed.

All features →
Learn
Documentation Quick Start API Reference Agent Setup DDoS Protection Landscape State of DDoS 2026 REPORT Free Certifications NEW
Research & Guides
Mirai Botnet Kill Switch Research memcached Amplification Dynamic Baselines PCAP Forensics PagerDuty Setup
Company
About Us Partners Managed Protection Whitelabel / Reseller Affiliate Program Pay with Crypto System Status
Legal & Support
Contact Us Security Trust Center Terms Privacy SLA
Who Uses Flowtriq

From indie hosts to ISPs, see how teams like yours use Flowtriq to detect and stop DDoS attacks.

Talk to Us →
Infrastructure
Hosting Providers ISPs MSPs/MSSPs Small Operators Routers Edge Node Defense
Gaming
Game Server Hosting Game Studios
Business
SaaS Platforms E-Commerce Financial Services Compliance

Full API Reference

Complete endpoint reference for the Flowtriq REST API v1. For core endpoints (nodes, incidents, channels, workspace), see the REST API page.

Base URL: https://flowtriq.com/api/v1  ·  Auth: Authorization: Bearer YOUR_DEPLOY_TOKEN  ·  All responses return JSON

Generate a deploy token in Dashboard → Settings → Workspace. The token is a 64-character hex string. Write operations (POST, PATCH, DELETE) require an active subscription.

Common Response Format

All endpoints return a consistent envelope. On success the top-level ok field is true. On error it is false and an error object provides a machine-readable code and human-readable message.

// Success { "ok": true, ... } // Error { "ok": false, "error": { "code": "invalid_parameter", "message": "target_ip is required" } }

Rate limit: 1,000 requests/minute per token. Custom plans can override this limit. See Rate Limits for details.

Mitigation

Manage BGP mitigation rules, adapters, escalation policies, and per-host thresholds. These endpoints power the BGP blackhole, FlowSpec, and cloud scrubbing orchestration layer.

List Active Mitigation Rules

GET/api/v1/mitigation/rules

Returns all currently active mitigation rules across your workspace, including BGP announcements, FlowSpec rules, and cloud scrubbing diversions.

Rule History

GET/api/v1/mitigation/rules/history

Returns historical mitigation rules including withdrawn and expired entries. Useful for audit trails and post-incident review.

Query ParameterDefaultDescription
limit100Results per page (1–500)

Create Manual BGP Rule

POST/api/v1/mitigation/rules

Manually announce a BGP blackhole or FlowSpec rule through a configured adapter. The rule remains active until explicitly withdrawn or its TTL expires.

Body ParameterRequiredDescription
target_ip*YesIP address or prefix to mitigate
intent_type*YesRule type: blackhole, flowspec, scrubbing
adapter_id*YesID of the BGP/mitigation adapter to use
ttlNoTime-to-live in seconds (0 = no expiry)
reasonNoHuman-readable reason for the rule
// cURL — Create a blackhole rule curl -X POST https://flowtriq.com/api/v1/mitigation/rules \ -H "Authorization: Bearer YOUR_DEPLOY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "target_ip": "203.0.113.50/32", "intent_type": "blackhole", "adapter_id": 1, "ttl": 3600, "reason": "Manual mitigation for UDP flood" }' // Response 200 { "ok": true, "rule": { "id": 42, "target_ip": "203.0.113.50/32", "intent_type": "blackhole", "status": "active", "created_at": "2026-05-12T14:30:00Z" } }

Withdraw Rule

POST/api/v1/mitigation/rules/{id}/withdraw

Withdraws an active mitigation rule, removing the BGP announcement or FlowSpec entry from all peers. This action is immediate.

List Adapters

GET/api/v1/mitigation/adapters

Returns all configured BGP and mitigation adapters in your workspace, including their connection status and capabilities.

Create / Update Adapter

POST/api/v1/mitigation/adapters

Creates a new adapter or updates an existing one. Adapters connect Flowtriq to your BGP speakers, cloud providers, and mitigation appliances.

Body ParameterRequiredDescription
adapter_type*Yesexabgp, gobgp, cloudflare, webhook, bird2, frr, radware, f5
name*YesDisplay name for the adapter
endpoint*YesConnection endpoint (URL or IP:port)
auth_tokenNoAuthentication token or API key for the adapter
configNoAdapter-specific configuration object (ASN, communities, etc.)
capabilitiesNoArray of supported actions: blackhole, flowspec, scrubbing
// cURL — Create an ExaBGP adapter curl -X POST https://flowtriq.com/api/v1/mitigation/adapters \ -H "Authorization: Bearer YOUR_DEPLOY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "adapter_type": "exabgp", "name": "Core Router BGP", "endpoint": "10.0.0.1:5000", "config": {"local_as": 65001, "communities": ["65001:666"]}, "capabilities": ["blackhole", "flowspec"] }' // Response 200 { "ok": true, "adapter": { "id": 3, "adapter_type": "exabgp", "name": "Core Router BGP", "status": "configured" } }

Delete Adapter

DELETE/api/v1/mitigation/adapters/{id}

Permanently deletes a mitigation adapter. Any active rules using this adapter will be withdrawn first.

Test Adapter Connectivity

POST/api/v1/mitigation/adapters/{id}/test

Tests connectivity to the adapter endpoint and validates authentication. Returns connection status and latency.

Get Escalation Policy

GET/api/v1/mitigation/escalation

Returns the current escalation policy configuration, including threshold tiers, TTLs, baseline mode, geo lockdown settings, and dry-run status.

Save Escalation Policy

POST/api/v1/mitigation/escalation

Creates or updates the workspace escalation policy. The policy defines how Flowtriq automatically escalates mitigation actions as attack severity increases.

Body ParameterRequiredDescription
thresholdsNoTier-based BPS/PPS thresholds for escalation triggers
ttlNoDefault rule TTL per tier (seconds)
baseline_modeNostatic or dynamic — how thresholds are calculated
geo_lockdownNoGeographic lockdown configuration (country codes, action)
dry_runNoBoolean — log actions without executing them

List Per-Host Thresholds

GET/api/v1/mitigation/thresholds

Returns per-host mitigation thresholds that override the workspace-level escalation policy for specific IPs or prefixes.

Create / Update Threshold

POST/api/v1/mitigation/thresholds

Creates or updates a per-host threshold override. Use this when specific hosts need different mitigation sensitivity than the workspace default.

Body ParameterRequiredDescription
target_ip*YesIP address or prefix
labelNoFriendly label for the threshold
thresholds*YesObject with per-tier BPS thresholds (e.g. {"tier1_bps": 1000000, "tier2_bps": 5000000})

Delete Threshold

DELETE/api/v1/mitigation/thresholds/{id}

Removes a per-host threshold override. The host reverts to the workspace escalation policy.

Allowlist

Manage IP allowlist entries that bypass mitigation rules. Allowlisted IPs are never blocked by automated BGP rules, firewall profiles, or scrubbing diversions.

List Allowlist Entries

GET/api/v1/allowlist

Returns all allowlist entries in your workspace. Optionally filter by node to see entries scoped to a specific node.

Query ParameterDefaultDescription
nodeFilter by node UUID (returns workspace-wide + node-scoped entries)

Add Allowlist Entry

POST/api/v1/allowlist

Adds an IP address or CIDR prefix to the allowlist. Entries can be scoped to the entire workspace or a specific node.

Body ParameterRequiredDescription
ip_address*YesIPv4 or IPv6 address, or CIDR prefix
labelNoFriendly label (e.g. “Office VPN”)
scopeNoworkspace (default) or node
nodeNoNode UUID (required when scope is node)
// cURL — Allowlist an IP curl -X POST https://flowtriq.com/api/v1/allowlist \ -H "Authorization: Bearer YOUR_DEPLOY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "ip_address": "198.51.100.10", "label": "Monitoring Server", "scope": "workspace" }' // Response 200 { "ok": true, "entry": { "id": 15, "ip_address": "198.51.100.10", "label": "Monitoring Server", "scope": "workspace" } }

Remove Allowlist Entry

DELETE/api/v1/allowlist/{id}

Permanently removes an allowlist entry. The IP will be subject to mitigation rules again immediately.

Runbooks

Programmatically manage runbooks — automated incident response workflows that execute a sequence of steps when attack conditions are met.

List Runbooks

GET/api/v1/runbooks

Returns all runbooks in your workspace, including execution counts and active/inactive status.

Get Runbook

GET/api/v1/runbooks/{id}

Returns a single runbook with its full step configuration and trigger conditions.

Create Runbook

POST/api/v1/runbooks

Creates a new runbook with trigger conditions and an ordered list of action steps.

Body ParameterRequiredDescription
name*YesRunbook display name
descriptionNoDescription of what this runbook does
trigger_conditions*YesObject defining when the runbook fires (attack family, severity, PPS threshold, etc.)
steps*YesOrdered array of step objects

Each step object has action_type and action_config. Valid step types:

action_typeDescription
waitPause execution for a specified duration
iptablesApply or remove iptables/nftables rules on the node
notify_channelSend a notification to a configured alert channel
webhookFire an HTTP request to an external URL
cloudflare_uamEnable Cloudflare Under Attack Mode
scrubbing_enableActivate a cloud scrubbing integration
logWrite a message to the runbook execution log
conditionConditional branch — execute subsequent steps only if condition is met
// cURL — Create a runbook curl -X POST https://flowtriq.com/api/v1/runbooks \ -H "Authorization: Bearer YOUR_DEPLOY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "name": "Auto-mitigate UDP floods", "description": "Block UDP flood traffic and notify the team", "trigger_conditions": { "family": "udp_flood", "severity": "critical", "min_pps": 500000 }, "steps": [ {"action_type": "log", "action_config": {"message": "UDP flood detected, starting mitigation"}}, {"action_type": "iptables", "action_config": {"cmd": "block_udp_flood"}}, {"action_type": "wait", "action_config": {"seconds": 30}}, {"action_type": "notify_channel", "action_config": {"channel_id": 5}} ] }' // Response 200 { "ok": true, "runbook": { "id": 7, "name": "Auto-mitigate UDP floods", "active": true, "steps_count": 4 } }

Update Runbook

PATCH/api/v1/runbooks/{id}

Updates an existing runbook. Only include the fields you want to change. Steps can be replaced entirely or left unchanged.

Delete Runbook

DELETE/api/v1/runbooks/{id}

Permanently deletes a runbook. Any in-progress executions will complete but no new executions will start.

Toggle Runbook

POST/api/v1/runbooks/{id}/toggle

Toggles a runbook between active and inactive. Inactive runbooks are preserved but will not trigger on new incidents.

Manual Test Run

POST/api/v1/runbooks/{id}/run

Triggers a manual test execution of a runbook. Useful for validating step configuration before going live.

Body ParameterRequiredDescription
nodeNoNode UUID to run against (uses a synthetic test context if omitted)

Execution History

GET/api/v1/runbooks/{id}/executions

Returns the execution history for a runbook, including step-by-step results, timing, and success/failure status.

PCAPs

Retrieve and download packet captures collected by ftagent during incidents. PCAPs provide full packet-level forensic data for attack analysis.

List PCAP Captures

GET/api/v1/pcaps

Returns a paginated list of PCAP captures across your workspace, ordered by capture time (newest first).

Query ParameterDefaultDescription
limit50Results per page (1–100)
offset0Pagination offset

List Parsed Packets

GET/api/v1/pcaps/{id}/packets

Returns parsed packet metadata from a PCAP capture, including source/destination IPs, ports, protocols, and payload sizes.

Query ParameterDefaultDescription
limit100Packets per page (1–1000)
offset0Pagination offset

Forensic Analysis

GET/api/v1/pcaps/{id}/analysis

Returns cached AI-generated forensic analysis of the PCAP, including attack vector classification, source IP distribution, and recommended mitigation actions.

// cURL — Get PCAP analysis curl -H "Authorization: Bearer YOUR_DEPLOY_TOKEN" \ https://flowtriq.com/api/v1/pcaps/42/analysis // Response 200 { "ok": true, "analysis": { "attack_vector": "DNS amplification", "total_packets": 284501, "unique_sources": 1847, "top_source_countries": ["CN", "RU", "BR"], "summary": "DNS amplification attack using open resolvers..." } }

Download PCAP File

GET/api/v1/pcaps/{id}/download

Downloads the raw PCAP file in binary format. The response content type is application/vnd.tcpdump.pcap. Open with Wireshark, tcpdump, or any packet analysis tool.

// cURL — Download PCAP to file curl -H "Authorization: Bearer YOUR_DEPLOY_TOKEN" \ -o capture.pcap \ https://flowtriq.com/api/v1/pcaps/42/download

Scrubbing

Manage cloud scrubbing integrations that divert traffic through upstream cleaning providers during attacks. For configuration guides, see Cloud Scrubbing.

Supported integration types: cloudflare_magic_transit, ovh_mitigation, hetzner_mitigation, cloudflare_waf, digitalocean, vultr, aws_shield, linode

List Scrubbing Integrations

GET/api/v1/scrubbing

Returns all configured scrubbing integrations with their current status and provider details.

Get Integration Status

GET/api/v1/scrubbing/{id}/status

Returns the real-time status of a scrubbing integration, including whether traffic is currently being diverted and connection health.

Test Integration

POST/api/v1/scrubbing/{id}/test

Tests connectivity and authentication with the upstream scrubbing provider. Returns success/failure and latency.

Announce / Enable Scrubbing

POST/api/v1/scrubbing/{id}/announce

Activates the scrubbing integration, diverting traffic through the upstream provider for cleaning. The exact mechanism depends on the provider (BGP announcement, API call, tunnel activation, etc.).

Withdraw / Disable Scrubbing

POST/api/v1/scrubbing/{id}/withdraw

Deactivates the scrubbing integration, returning traffic to its normal direct path. Use after an attack has subsided.

// cURL — Announce scrubbing for an integration curl -X POST https://flowtriq.com/api/v1/scrubbing/3/announce \ -H "Authorization: Bearer YOUR_DEPLOY_TOKEN" // Response 200 { "ok": true, "status": "active", "provider": "cloudflare_magic_transit", "message": "Traffic diversion activated" } // cURL — Withdraw scrubbing curl -X POST https://flowtriq.com/api/v1/scrubbing/3/withdraw \ -H "Authorization: Bearer YOUR_DEPLOY_TOKEN" // Response 200 { "ok": true, "status": "inactive", "message": "Traffic diversion withdrawn" }

Attack Profiles

Apply pre-built firewall rule sets optimized for specific deployment types. Profiles contain curated iptables/nftables rules tuned for the traffic patterns of each environment.

Apply Firewall Profile

POST/api/v1/attack-profiles/apply

Pushes a firewall profile to one or more nodes. The agent applies the rules using the specified firewall suite. Pass ["all"] as node_ids to deploy to every node in your workspace.

Body ParameterRequiredDescription
profile_id*YesProfile identifier (see list below)
suite*YesFirewall backend: iptables, nftables, ufw, firewalld
node_ids*YesArray of node UUIDs, or ["all"] for all nodes
rulesNoOptional custom rules array, each with cmd and title

Available profile IDs:

profile_idOptimized For
game_serverGame servers (Minecraft, FiveM, Rust, CS2, etc.)
hosting_providerShared/reseller hosting providers
ispInternet service providers and transit networks
saasSaaS applications (web-heavy TCP traffic)
ecommerceE-commerce platforms (payment flow protection)
fintechFinancial services (strict ingress filtering)
small_operatorSmall operators and VPS providers
mspManaged service providers
edge_nodeEdge/CDN nodes and reverse proxies
routerSoftware routers and gateways
game_studioGame studios (development + production servers)
// cURL — Apply game_server profile to specific nodes curl -X POST https://flowtriq.com/api/v1/attack-profiles/apply \ -H "Authorization: Bearer YOUR_DEPLOY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "profile_id": "game_server", "suite": "nftables", "node_ids": ["a1b2c3d4-...", "e5f6a7b8-..."] }' // Response 200 { "ok": true, "applied_to": 2, "profile": "game_server", "suite": "nftables" }