MVAS/DCB compliance intelligence, built into your workflow.
Run evidence-backed landing-page and funnel checks, manage monitoring, consume the public rules catalog, and receive signed change events. The API never mutates live ad campaigns.
curl -X POST https://mvasdaddy.com/api/v1/scans \
-H "x-api-key: $MVASDADDY_API_KEY" \
-H "content-type: application/json" \
-d '{"url":"https://offer.example/sa","geo":"SA","carrier":"zain","platforms":["google_ads"]}'Authentication
All endpoints except Rules require an API key in the x-api-key header. Generate or rotate it from Account settings. Store keys server-side and never ship them in browser code.
Scans
/api/v1/scansQueue a landing-page scan
/api/v1/jobs/:idPoll any asynchronous v1 job
/api/v1/scansList saved scans
/api/v1/scans/:idGet scan evidence and recommendations
Funnels
/api/v1/funnelsQueue a consent-safe funnel crawl
/api/v1/funnels/:idGet job status and results
Batch
/api/v1/batchQueue up to the plan URL limit
/api/v1/batch/:idGet progress and result summary
Monitors
/api/v1/monitorsList policy monitors
/api/v1/monitorsCreate a monitor
/api/v1/monitors/:idGet monitor and alerts
/api/v1/monitors/:idUpdate cadence, alerts, or status
/api/v1/monitors/:idSoft-delete a monitor
/api/v1/monitors/:id/scanTrigger an approved scan
Alerts
/api/v1/alertsList alerts; use ?unread=true
/api/v1/alerts/:id/readMark an alert read
Public rules
No API key required. Limited to 20 requests per minute per client IP.
/api/v1/rulesFilter by q, platform, carrier, geo, severity, billing_model, category
/api/v1/rules/:idGet one public rule
Reports
/api/v1/reports/:idGet report evidence as JSON
/api/v1/reports/:id/pdfGet print-ready HTML for browser PDF export
Webhooks
Pro and Agency accounts can register up to 10 HTTPS endpoints for scan.completed, alert.triggered, and monitor.status_changed. Deliveries retry three times with exponential backoff.
/api/v1/webhooksRegister { url, events[] }; the signing value is returned once
/api/v1/webhooksList endpoints without signing values
/api/v1/webhooks/testSend a signed test using { id }
expected = HMAC_SHA256(raw_request_body, signingKey)
header = "sha256=" + expected
compare header to X-MVASDaddy-Signature using constant-time comparisonRate limits
| Plan | API calls/day | Rule API |
|---|---|---|
| Free | 20 | 20/minute/IP |
| Pro | 500 | |
| Agency | 5,000 |
Quota failures use HTTP 402 with plan_limit_exceeded. Burst controls can additionally return 429.
Error contract
{"success":false,"error":"validation_error","message":"Human-readable detail"}| 400 | Invalid input |
|---|---|
| 401 | Missing or invalid API key |
| 402 | Plan or usage limit |
| 403 | Insufficient workspace role |
| 404 | Resource not found |
| 429 | Rate limited |
| 500 | Safe internal failure |
Changelog
v1 · July 2026
Initial stable namespace: asynchronous scans, funnels, batches, team-aware monitors, alerts, public rules, reports, metered authentication, and signed webhooks.