Skip to main content

Billing

ShieldLabs uses request-based pricing — domain weight is decremented per processed fingerprint check.

Request counting

One billable request = one fingerprint check that decrements domain weight in Redis:
  • Each successful POST /snapshot (from checkAnonymous or checkAuthenticatedUser)
  • Each noscript beacon hit (GET /noscript)
Not decremented:
  • Failed auth (invalid public key / disabled domain) → 402 Payment Required
  • Port-scan follow-up POST alone (/snapshot/{id}/portscan)
  • Pub API history queries (separate weight rules on Core Management API if used)
Each check that completes scoring typically triggers a webhook. WebRTC may send a second webhook with Phase: "update".

Balance

View balance in the Dashboard under Settings → Billing, or via API:
GET https://account.shieldlabs.ai/api/users
Authorization: Bearer <token>
Response includes user profile with balance:
{
  "email": "you@example.com",
  "balance": {
    "requests": 45230,
    "usd": 12.50
  }
}
New domains receive starter weight (1000 requests) on creation. Weight is topped up from USD balance by the balance broadcaster worker.

Payments

Payments via Coinbase Commerce (crypto):
POST https://account.shieldlabs.ai/api/payment
GET  https://account.shieldlabs.ai/api/payment
Authorization: Bearer <token>

Usage per domain

Each domain shows traffic share in the dashboard:
{
  "domain": "example.com",
  "total_requests": 12450,
  "requests_percent": 34.5,
  "weight": 100
}

Questions

Contact billing@shieldlabs.ai.