DBBL Protocol Request Access
API Reference

API Reference

Base URL: https://api.dbblprotocol.org

All endpoints return JSON. All authenticated endpoints require a Bearer token. Timestamps are ISO 8601 UTC.

Authentication

All endpoints except GET /v1/health and POST /v1/platforms/register require a Bearer token obtained when your platform registered.

HTTP Header
Authorization: Bearer dbbl_<your-api-key>
Important: API keys are shown once at registration and cannot be retrieved again. Store yours securely. If lost, contact us to revoke and re-issue.
GET

/v1/health

Returns API status. No authentication required. Use for uptime monitoring.

Response 200
{"status": "ok",
 "version": "1",
 "timestamp": "2025-06-04T12:00:00.000Z"}
POST

/v1/platforms/register

Register a new platform. Returns a one-time API key — store it immediately, it cannot be retrieved again. No authentication required.

Request Body

application/json
{"name": "Jaydslist",
 "website": "https://jaydslist.com",
 "contactEmail": "admin@jaydslist.com"}
Field Type Notes
name string Your platform's display name
website url Must be a valid HTTPS URL
contactEmail email Used for account notices

Response 201

{"success": true,
 "platformId": "plat_01abc...",
 "apiKey": "dbbl_abc123...",
 "tier": "provisional",
 "status": "active"}
GET

/v1/scores

Query the risk score for an identity. At least one signal is required. Signals are checked in order: phone → email → username (exact) → username (fuzzy).

Scores are cached for 60 seconds on hit, 30 seconds on no-data. Every query is logged regardless of cache state.

Query Parameters

Param Type Notes
phoneHash string SHA-256 of E.164-normalized phone number
emailHash string SHA-256 of normalized email address
username string Plaintext. Normalized and fuzzy-matched. At least one signal required.

Response 200 — No data

{"status": "no_data",
 "clean": true,
 "score": null,
 "rating": null,
 "confidence": null,
 "dimensional": null,
 "platforms": null,
 "matchedSignals": []}

Response 200 — Found

{"status": "found",
 "clean": false,
 "score": 42.3,
 "rating": "cautioned",
 "confidence": "medium",
 "matchedSignals": ["phone"],
 "dimensional": {"unsolicited_dm": 10.0,
   "harassment": 55.2,
   "fake_profile": 0.0,
   "explicit_content": 20.1,
   "spam": 5.0},
 "reportCount": 3,
 "firstSeen": "2024-01-15T...",
 "lastReported": "2025-03-22T...",
 "platforms": [{"name": "Jaydslist",
   "website": "https://jaydslist.com"}]}
POST

/v1/reports

Submit a confirmed violation. Only submit violations your platform has already acted on — reports feed directly into scoring without review. Score is recalculated synchronously on submission.

Important: Do not submit pending or under-review reports. The DBBL Protocol trusts your moderation decisions. Only submit confirmed violations.

Request Body

{"phoneHash": "a8f2c3e1b4d5...",    // optional — at least one signal required
 "emailHash": "7f3d9b2a1c4e...",    // optional
 "username": "baduser99",            // optional — stored normalized
 "usernameType": "username",         // username | display_name | real_name | nickname
 "violationCategory": "harassment",  // see categories below
 "severity": "high",                 // low | medium | high | critical
 "additionalContext": "..."          // optional, max 1000 chars — for reviewers only, never exposed via API}

Response 201

{"success": true,
 "reportId": "rep_01abc...",
 "identityId": "idr_01xyz...",
 "updatedScore": {"score": 55.1,
   "rating": "restricted",
   "confidence": "medium"}}  

Violation Categories

Value Weight Description
harassment 0.30 Direct targeting, threats, sustained unwanted contact
fake_profile 0.25 Identity fraud, impersonation, sockpuppet accounts
explicit_content 0.20 Unsolicited explicit material, non-consensual sharing
unsolicited_dm 0.15 Repeated unsolicited direct messages
spam 0.10 Mass unsolicited messages, automated bulk activity

Error Codes

Status Meaning Notes
200 OK Query successful (score or no_data)
201 Created Report submitted or platform registered
400 Bad Request Validation failed — check request body/params
401 Unauthorized Missing or invalid Bearer token
403 Forbidden Platform is suspended or revoked
500 Server Error Unexpected error — contact support