Detection, Mitigation & Response

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

All features →
Docs
Documentation Quick Start API Reference Agent Setup Integrations 18
Learn
Free Tools 37 Free Certifications State of DDoS 2026 REPORT DDoS Protection Landscape Buyer's Guide PDF Hackathon Sponsorships DDoS Protection Facts
Company
About Us Become a Consultant 30% Partners White Label Managed Protection Contact Us System Status
Open Source
ftagent-lite MIT NetHawk MIT
Legal
Security Trust Center Terms & Privacy
Who Uses Flowtriq

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

All use cases →

Deploy Tokens & Mass Deployment

Programmatic node provisioning for fleets of any size

Deploy Tokens vs API Keys

Flowtriq uses two types of credentials. They serve different purposes and should not be confused:

CredentialScopePurposeWho holds it
Deploy TokenWorkspace-wideCreate new nodes via the /api/deploy endpoint. Cannot read data, send metrics, or manage existing nodes.DevOps / automation tools
API KeyPer-nodeAuthenticate the ftagent running on a specific server. Used for sending metrics, heartbeats, and incident data. One key per node.Each individual server (in /etc/ftagent/config.json)
API TokenWorkspace-wide (scoped)Full REST API access with optional scope restrictions. Read/write nodes, incidents, channels, analytics. Created in Dashboard → Settings → API Tokens.External integrations, SIEM connectors, custom dashboards

Creating Deploy Tokens

Go to Dashboard → Settings → Workspace and find the Mass Deployment Token card. Click Generate Deploy Token.

Your token is a 64-character hex string. Treat it like a password. Anyone with the token can create nodes in your workspace and increase your bill.

Security: Store your deploy token in environment variables or a secrets manager (Vault, AWS Secrets Manager, 1Password CLI). Never commit it to version control. Revoke it immediately from Settings if compromised.

One-Liner Deployment Script

Run this single command as root on any Linux server. It registers the node, installs ftagent, writes the config, enables the systemd service, and starts monitoring:

# Full deploy: register + install + configure + enable + start bash -c 'R=$(curl -sf https://flowtriq.com/api/deploy \ -H "Authorization: Bearer $FLOWTRIQ_DEPLOY_TOKEN" \ -H "Content-Type: application/json" \ -d "{\"name\":\"$(hostname)\",\"ip\":\"$(curl -s ifconfig.me)\"}") \ && eval $(echo "$R" | python3 -c "import sys,json;d=json.load(sys.stdin);print(\"API_KEY=\"+d[\"api_key\"]+\" NODE_UUID=\"+d[\"node_uuid\"])") \ && pip install ftagent --break-system-packages -q \ && mkdir -p /etc/ftagent /var/lib/ftagent/pcaps \ && echo "{\"api_key\":\"$API_KEY\",\"api_base\":\"https://flowtriq.com/api/v1\",\"node_uuid\":\"$NODE_UUID\",\"interface\":\"eth0\"}" > /etc/ftagent/config.json \ && chmod 600 /etc/ftagent/config.json \ && ftagent --install-service \ && systemctl enable ftagent \ && systemctl start ftagent \ && echo "Done - node registered and ftagent running"'

Deploy API Reference

POST https://flowtriq.com/api/deploy Authorization: Bearer YOUR_DEPLOY_TOKEN Content-Type: application/json { "name": "web-prod-3", "ip": "203.0.113.10", "location": "US-East", "os": "Ubuntu 24.04", "interface": "eth0" }
FieldRequiredDescription
nameYesUnique node name within your workspace
ipYesIPv4 or IPv6 address of the server
locationNoData center or region label
osNoOperating system string
interfaceNoNetwork interface to monitor (default: eth0)

Response

{ "ok": true, "node_uuid": "a1b2c3d4-...", "api_key": "64-char-hex-api-key-for-this-node", "name": "web-prod-3", "ip": "203.0.113.10" }

Ansible Playbook

# deploy-flowtriq.yml - hosts: all vars: flowtriq_token: "{{ lookup('env', 'FLOWTRIQ_DEPLOY_TOKEN') }}" tasks: - name: Register node with Flowtriq uri: url: https://flowtriq.com/api/deploy method: POST headers: Authorization: "Bearer {{ flowtriq_token }}" Content-Type: application/json body_format: json body: name: "{{ inventory_hostname }}" ip: "{{ ansible_default_ipv4.address }}" os: "{{ ansible_distribution }} {{ ansible_distribution_version }}" location: "{{ datacenter | default('') }}" status_code: 200 register: flowtriq_result - name: Install ftagent pip: name: ftagent extra_args: --break-system-packages - name: Create config directory file: path: "{{ item }}" state: directory mode: '0755' loop: - /etc/ftagent - /var/lib/ftagent/pcaps - name: Write ftagent config copy: content: | {"api_key":"{{ flowtriq_result.json.api_key }}","api_base":"https://flowtriq.com/api/v1","node_uuid":"{{ flowtriq_result.json.node_uuid }}","interface":"eth0"} dest: /etc/ftagent/config.json mode: '0600' - name: Install systemd service command: ftagent --install-service - name: Enable and start ftagent systemd: name: ftagent enabled: true state: started daemon_reload: true

Cloud-Init / User Data

Add this to your EC2 user data, GCP startup script, or any cloud-init configuration to auto-register on first boot:

#!/bin/bash # cloud-init / user-data script DEPLOY_TOKEN="your-deploy-token-here" # Register with Flowtriq RESULT=$(curl -sf https://flowtriq.com/api/deploy \ -H "Authorization: Bearer $DEPLOY_TOKEN" \ -H "Content-Type: application/json" \ -d "{\"name\":\"$(hostname)\",\"ip\":\"$(curl -s ifconfig.me)\"}") API_KEY=$(echo "$RESULT" | python3 -c "import sys,json;print(json.load(sys.stdin)['api_key'])") NODE_UUID=$(echo "$RESULT" | python3 -c "import sys,json;print(json.load(sys.stdin)['node_uuid'])") # Install agent and write config pip install ftagent --break-system-packages -q mkdir -p /etc/ftagent /var/lib/ftagent/pcaps cat > /etc/ftagent/config.json <<EOF {"api_key":"$API_KEY","api_base":"https://flowtriq.com/api/v1","node_uuid":"$NODE_UUID","interface":"eth0"} EOF chmod 600 /etc/ftagent/config.json # Install service, enable on boot, and start ftagent --install-service systemctl enable ftagent systemctl start ftagent

Tagging Nodes on Deployment

Use the location and os fields to tag nodes during provisioning. These appear in the dashboard and can be used for filtering and grouping:

# Tag with datacenter region and OS curl -sf https://flowtriq.com/api/deploy \ -H "Authorization: Bearer $FLOWTRIQ_DEPLOY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "name": "'"$(hostname)"'", "ip": "'"$(curl -s ifconfig.me)"'", "location": "eu-west-1", "os": "'"$(lsb_release -ds 2>/dev/null || cat /etc/os-release | grep PRETTY_NAME | cut -d= -f2 | tr -d \\\")"'" }'

Bash Loop (Bulk Register)

#!/bin/bash # servers.txt format: name,ip # web-prod-1,203.0.113.10 # web-prod-2,203.0.113.11 while IFS=, read -r name ip; do echo "Registering $name ($ip)..." curl -s https://flowtriq.com/api/deploy \ -H "Authorization: Bearer $FLOWTRIQ_DEPLOY_TOKEN" \ -H "Content-Type: application/json" \ -d "{\"name\":\"$name\",\"ip\":\"$ip\"}" | jq '{name:.name, api_key:.api_key}' done < servers.txt

Error Codes

HTTPErrorMeaning
401Invalid deploy tokenToken is wrong, revoked, or missing
400Node name / IP requiredMissing required fields
402Payment failedNo active subscription or payment issue
409Duplicate nameA node with that name already exists in this workspace
ESC