ZeriFlow inside your tools.
The REST API is for developers who want to use ZeriFlow as a building block — not as a product. Trigger scans from your VPS, your scripts, your Claude agent, or any CI system outside GitHub.
API key prefix: zf_live_ · Available on Pro, Business & Unlimited
Dashboard, GitHub Action, or API?
ZeriFlow has three ways to scan. Here's how to pick the right one.
Dashboard + Monitoring
No-code users
- You want to scan manually from the browser
- You want automated weekly/daily scans
- You want Slack/email alerts without writing code
- You want to read reports visually
Don't need the API.
GitHub Action
GitHub CI/CD users
- Your code is on GitHub
- You want to block PRs when score drops
- You want bot comments on pull requests
- You want 3-line CI setup
Don't need the raw API either.
REST API ← You are here
Developers who build
- You want scans triggered from your own code
- You use GitLab, Jenkins, or another CI
- You're building a client portal or dashboard
- You want to pipe results into your own system
- You want Claude or an AI agent to run scans
- You need a VPS cron that alerts your team
What developers build with it
VPS cron job
A Python or bash script on your server, scheduled weekly. It scans your site, logs the score, and sends a Slack/email alert if it drops. No dashboard needed — pure automation.
Claude / AI agent
Give your API key to Claude via MCP or a system prompt. Your agent can scan a URL, interpret the findings, write fix recommendations, and even open a GitHub issue — all from a conversation.
Client security portal
Build a white-label web app for your agency clients. Your frontend calls ZeriFlow's API, displays results with your branding, and lets clients request on-demand scans.
Non-GitHub CI/CD
GitLab CI, Bitbucket Pipelines, Jenkins, CircleCI — any CI system can call the API with a simple curl command. Fail the pipeline if the score drops below your threshold.
VPS cron script in 20 lines
Drop this on any server. It runs every Monday, checks your score, and alerts you if something breaks.
#!/usr/bin/env python3
# cron: 0 8 * * 1 (every Monday at 8am)
import requests, os, smtplib
API_KEY = os.environ["ZERIFLOW_API_KEY"]
SITE_URL = "https://yoursite.com"
ALERT_AT = 70 # alert if score drops below this
resp = requests.post(
"https://zeriflow.com/functions/v1/scan-quick",
headers={"X-API-Key": API_KEY},
json={"url": SITE_URL},
).json()
score = resp["score"]
print(f"Score: {score}/100")
if score < ALERT_AT:
# send alert email / Slack / PagerDuty
print(f"⚠️ Score dropped to {score} — alerting team")Set ZERIFLOW_API_KEY as an environment variable on your server. Never hardcode it.
One POST request. Full results.
curl -X POST https://zeriflow.com/functions/v1/scan-quick \
-H "X-API-Key: zf_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{"url": "https://yoursite.com"}'
# Response
{
"id": "scan_a1b2c3",
"score": 74,
"grade": "C",
"status": "done"
}Endpoints
Base URL: https://zeriflow.com · Auth header: X-API-Key: zf_live_...
/functions/v1/scan-quickRun a security scan on any URL. Returns full results in under 60 seconds.
Request body
{ "url": "https://yoursite.com" }Response
{ "id": "...", "score": 74, "grade": "C", "status": "done", "findings": [...] }/functions/v1/scan-results?scan_id=xxxRetrieve full results for any scan, including all findings and category scores.
Response
{ "scan": { "id": "...", "score": 74, "categories": [...], "findings": [...] } }/functions/v1/scan-quotaCheck remaining API quota and reset date for the current billing period.
Response
{ "api_calls": { "used": 12, "limit": 100, "resets_at": "2026-06-01" } }/functions/v1/scan-historyList recent scans with scores and timestamps. Useful for dashboards.
Response
{ "scans": [{ "id": "...", "url": "...", "score": 74, "created_at": "..." }] }Error codes
| 401 | Missing or invalid API key |
| 403 | Your plan doesn't include API access |
| 429 | Monthly quota exceeded — buy token packs to top up |
| 422 | Invalid URL or malformed request body |
API included from Pro
Every paid plan includes API access. Token packs let you top up when you need extra scans.
Pro
For solo developers
$48/yr · Save 20%
- REST API — 30 calls / month
- Unlimited quick web scans
- 1 advanced scan / month
- Weekly monitoring (5 URLs)
- PDF export
- API key management
Business
For teams and agencies
$192/yr · Save 20%
- REST API — 100 calls / month
- Unlimited quick web scans
- 5 advanced scans / month
- Daily monitoring (15 URLs)
- White-label PDF via API
- GitHub code analysis
Unlimited
For power users
$390/yr · Save 33%
- REST API — 1,000 calls / month
- Unlimited quick web scans
- 200 advanced scans / month*
- Daily monitoring (unlimited URLs)
- White-label PDF via API
- Priority support
* Subject to fair use policy.
Need extra API calls? Buy tokens
One token = one scan call. On top of your monthly quota. Tokens never expire.
10
tokens
$4.99
$0.50/scan
50
tokens
$19.99
$0.40/scan
100
tokens
$34.99
$0.35/scan
Common questions
Monitoring is a managed feature: you configure it in the dashboard and ZeriFlow handles scheduling, running scans, and sending Slack/email alerts automatically. The API is for when you want to control the scan yourself — trigger it from your own code, at your own cadence, and decide what to do with the results. Use Monitoring if you want a no-code solution; use the API if you want ZeriFlow as a building block inside your own system.
The GitHub Action is a pre-built wrapper around the API, designed specifically for GitHub pull request workflows. It handles everything: running the scan, posting results as a PR comment, and blocking merges if the score drops below your threshold. The raw API is for everything else — GitLab CI, Jenkins, custom scripts, VPS crons, Claude agents, or any context outside GitHub Actions.
Only POST /scan-quick and POST /scan-advanced consume a call from your monthly quota. Read-only endpoints (GET /scan-results, GET /scan-history, GET /scan-quota) are free and unlimited.
On the 1st of every calendar month. Unused calls don't carry over. Token packs never expire — they're a good option if your usage is irregular.
Yes. Any tool that can make an HTTP request can use the API. You can give your API key to Claude (via MCP or directly in a prompt) and ask it to scan a URL, interpret the findings, and suggest fixes. The JSON response is clean and structured, which makes it easy for LLMs to parse.
Yes. On Business and Unlimited plans, GET /functions/v1/scan-pdf?scan_id=xxx returns a PDF that respects your account's branding settings. This lets you fully automate the scan → branded report pipeline.
Ready to build?
Generate your API key in Profile settings. No approval, no waiting. Start scanning in 30 seconds.