BLAQclouds API

DRM-as-a-Service for content licensing and forensic watermarking

Register your organization โ†’
Base URL
https://api.blaqclouds.io
Authentication
Authorization: Bearer blk_live_***
Content-Type
application/json
Rate Limit Headers
X-RateLimit-Limit / Remaining / Reset

๐Ÿ’ฐ Pricing Plans

Three plans built for every stage โ€” from early studio tests to full white-label platforms.

All prices in APUSD (1 APUSD = $1 USD). No free tier.

Save 15% with annual billing.

Most Popular
๐Ÿš€

Paid

$99/mo per product
$1,009.80/yr annual
Self-service or admin
  • โœ“$99/month per product (Videos, Music, Flipbooks, Cards, Tickets)
  • โœ“Subscribe to multiple products independently
  • โœ“Full watermarking + forensics access
  • โœ“Marketplace access
  • โœ“Community + theAlley included
  • โœ“Per-product billing (separate invoices)
  • โœ“Stripe + APUSD payments
  • โœ“API key with product scoping (single or multi-product)
  • โœ“Webhook notifications
  • โœ“Standard support
โœจ

White-Label

Custom pricing
Custom annual annual
Admin only
  • โœ“Custom pricing per product
  • โœ“Complete white-label (custom domain, branding, documentation)
  • โœ“Per-viewer wallet + permanent forensic fingerprint
  • โœ“Webhook system with HMAC-SHA256 signing
  • โœ“Full Forensics API (leak detection + evidence chain)
  • โœ“Remove "Powered by BLAQclouds" badge
  • โœ“Dedicated support + SLA
  • โœ“Custom overage rates and volume commitments

๐Ÿ“ฆ Product API Routes

Each product has its own set of API routes with independent billing. Subscribe to one or multiple products.

๐ŸŽฌ

Videos API

/api/videos/v1/

Video upload, HLS streaming, collections, PPV/rental, watermarking, forensics

๐ŸŽต

Music API

/api/music/v1/

Music upload, GPU watermarking, albums, playlists, marketplace, forensics

๐Ÿ“–

Flipbooks API

/api/flipbooks/v1/

Flipbook creation, digital passes, resale, athlete templates

๐Ÿƒ

Digital Cards API

/api/cards/v1/

Card creation, DTCWT watermarking, collections, marketplace

๐ŸŽŸ๏ธ

Tickets/Events API

/api/tickets/v1/

Event creation, ticket sales, Stripe checkout, check-in

๐ŸŽฌ Video Processing Options

Two processing options for video uploads:

HLS + Encryption (Free)

HLS segmentation + AES-128-CBC encryption + IPFS upload. No forensic watermarking.

HLS + Encryption + Watermarking (Premium)

GPU DTCWT forensic watermarking + encryption + IPFS. Priced by resolution:

720p
$1,500 APUSD
1080p
$3,500 APUSD
4K
$5,000 APUSD
8K
$10,000 APUSD

Watermark Pass holders bypass the premium cost. Prices in APUSD (1 APUSD = $1 USD).

Why teams choose BLAQclouds

  • EVM wallet verification โ€” every viewer is cryptographically tied to a wallet.
  • Segmented & encrypted IPFS โ€” content is split, encrypted, and delivered via IPFS.
  • 40-bit dual-variant watermarking โ€” each viewer receives a unique pair of stream variants determined by their ID.
  • Forensic leak attribution โ€” identify exactly which viewer leaked the content.

All prices in APUSD. No setup fees. Cancel anytime on monthly plans. Annual plans are prepaid and non-refundable except as required by law.

Start on Growth โ†’Contact sales

๐Ÿš€ Getting Started

Register your organization and start using the BLAQclouds DRM-as-a-Service API.

POST/api/v1/auth/register

Register a new organization. Returns an API key (shown once), wallet address, organization ID, and webhook secret. If no wallet address is provided, one is auto-generated.

Auth: None required
Request Body
{
  "name": "Your Organization Inc.",
  "email": "contact@yourorg.com",
  "walletAddress": "0x...",          // optional, auto-generated if omitted
  "signingPublicKey": "-----BEGIN PUBLIC KEY-----\n...",  // for signed viewer tokens
  "signingAlgorithm": "RS256",       // RS256 or ES256, default: RS256
  "webhookUrl": "https://yourorg.com/webhooks/blaqclouds"  // optional
}
Response
{
  "apiKey": "blk_live_a1b2c3d4e5f6...",
  "walletAddress": "0xABC123...",
  "organizationId": "uuid-here",
  "webhookSecret": "f7e8d9c0b1a2..."
}
Example
curl -X POST https://api.blaqclouds.io/api/v1/auth/register \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Your Organization Inc.",
    "email": "contact@yourorg.com",
    "signingPublicKey": "-----BEGIN PUBLIC KEY-----\n...",
    "webhookUrl": "https://yourorg.com/webhooks/blaqclouds"
  }'
GET/api/v1/auth/verify

Verify that your API key is valid. Returns your organization details, plan, scopes, and rate limits.

Auth: API Key (Bearer token)
Response
{
  "organization": {
    "name": "Your Organization Inc.",
    "plan": "paid",
    "walletAddress": "0xABC123..."
  },
  "scopes": ["catalog", "stream", "billing", "forensics"],
  "rateLimits": {
    "perHour": 1000,
    "remaining": 987
  }
}
Example
curl -X GET https://api.blaqclouds.io/api/v1/auth/verify \
  -H "Authorization: Bearer blk_live_xxx"
POST/api/v1/auth/rotate

Rotate your API key. The old key is immediately revoked. Returns a new API key. Minimum 1 hour cooldown between rotations.

Auth: API Key (Bearer token)
Response
{
  "apiKey": "blk_live_newkey...",
  "oldKeyRevoked": true
}
Example
curl -X POST https://api.blaqclouds.io/api/v1/auth/rotate \
  -H "Authorization: Bearer blk_live_oldkey"

๐Ÿ’ฐ Pricing

Three plans for every scale. All prices in APUSD (1 APUSD = $1 USD). No free tier. Upgrade or downgrade anytime.

GET/api/v1/billing/plans

Returns all available billing plans with pricing details. No authentication required.

Auth: None (public endpoint)
Response
{
  "plans": [
    {
      "name": "Paid",
      "basePriceApusd": 1000,
      "pricePerStream": 10,
      "pricePerGb": 1,
      "revenueSharePct": 10,
      "includedStreams": 1000,
      "includedGb": 10,
      "watermarkingIncluded": false,
      "whiteLabelAllowed": false,
      "poweredByRemovable": false
    },
    {
      "name": "Enterprise",
      "basePriceApusd": 25000,
      "pricePerStream": 1,
      "pricePerGb": 0.50,
      "revenueSharePct": 5,
      "includedStreams": 50000,
      "includedGb": 500,
      "watermarkingIncluded": true,
      "whiteLabelAllowed": true,
      "poweredByRemovable": true
    },
    {
      "name": "White-Label",
      "basePriceApusd": 50000,
      "pricePerStream": 0.50,
      "pricePerGb": 0.25,
      "revenueSharePct": 2,
      "includedStreams": 500000,
      "includedGb": 2000,
      "watermarkingIncluded": true,
      "whiteLabelAllowed": true,
      "poweredByRemovable": true
    }
  ]
}
Example
curl -X GET https://api.blaqclouds.io/api/v1/billing/plans

๐Ÿ“š Content Catalog

Browse licensed content available for streaming through your organization.

GET/api/v1/catalog

List all content licensed to your organization. Returns videos and music tracks with metadata.

Auth: API Key + catalog scope
Response
{
  "content": [
    {
      "id": "uuid",
      "title": "Video Title",
      "type": "video",
      "duration": 300,
      "resolution": "1080p",
      "thumbnail": "https://...",
      "previewUrl": "https://..."
    }
  ]
}
Example
curl -X GET https://api.blaqclouds.io/api/v1/catalog \
  -H "Authorization: Bearer blk_live_xxx"
GET/api/v1/catalog/{contentId}

Get detailed metadata for a specific content item. Verify your organization has a license for this content.

Auth: API Key + catalog scope
Response
{
  "id": "uuid",
  "title": "Video Title",
  "description": "Full description...",
  "type": "video",
  "duration": 300,
  "resolution": "1080p",
  "isWatermarked": true,
  "thumbnail": "https://...",
  "previewUrl": "https://..."
}
Example
curl -X GET https://api.blaqclouds.io/api/v1/catalog/content-uuid \
  -H "Authorization: Bearer blk_live_xxx"

๐ŸŽฌ Streaming

Create watermarked stream sessions for your viewers. Each stream gets a unique 40-bit forensic fingerprint.

POST/api/v1/stream/{contentId}

Create a stream session for a viewer. If a signed viewer token is provided, the platform verifies the token, auto-generates a viewer wallet (if new), and assigns a permanent 40-bit binary_id. If no viewer token is provided, a random viewer ID is generated (backward compatible).

Auth: API Key + stream scope
Request Body
{
  "viewerToken": "eyJhbGciOi...",  // JWT signed by your org's private key
  "walletAddress": "0x..."         // optional, if you already have a wallet for this viewer
}
Response
{
  "sessionId": "uuid",
  "playlistUrl": "/api/v1/stream/content-uuid/playlist?session=xxx",
  "binaryId": "0100111100000111101001011000000101101111",
  "walletAddress": "0xABC123...",
  "isNewViewer": true,
  "expiresAt": "2026-08-02T00:00:00Z"
}
Example
curl -X POST https://api.blaqclouds.io/api/v1/stream/content-uuid \
  -H "Authorization: Bearer blk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "viewerToken": "eyJhbGciOi..."
  }'
GET/api/v1/stream/{contentId}/playlist

Fetch the HLS playlist for a stream session. For watermarked content, segment URLs are rewritten to serve A/B variants based on the viewer's binary_id.

Auth: API Key + stream scope
Response
#EXTM3U
#EXT-X-KEY:METHOD=AES-128,URI="..."
#EXT-X-TARGETDURATION:10
#EXTINF:10.000000,
/api/v1/stream/content-uuid/segment/0?session=xxx
#EXTINF:10.000000,
/api/v1/stream/content-uuid/segment/1?session=xxx
...
Example
curl -X GET "https://api.blaqclouds.io/api/v1/stream/content-uuid/playlist?session=session-uuid" \
  -H "Authorization: Bearer blk_live_xxx"
GET/api/v1/stream/{contentId}/segment/{seg}

Fetch a watermarked HLS segment. The platform serves variant A or B based on the viewer's 40-bit binary_id โ€” bit 0 = segment 0, bit 1 = segment 1, etc. (repeating every 40 segments). This is the forensic watermark fingerprint.

Auth: API Key + stream scope
Response
Binary data (video/mp2t)
Example
curl -X GET "https://api.blaqclouds.io/api/v1/stream/content-uuid/segment/0?session=session-uuid" \
  -H "Authorization: Bearer blk_live_xxx" \
  -o segment0.ts
DELETE/api/v1/stream/sessions/{sessionId}

End a stream session. Marks the session as ended and stops serving segments for it.

Auth: API Key + stream scope
Response
{ "success": true }
Example
curl -X DELETE https://api.blaqclouds.io/api/v1/stream/sessions/session-uuid \
  -H "Authorization: Bearer blk_live_xxx"

๐Ÿ‘๏ธ Viewer Tracking

Manage viewers, their wallets, and forensic fingerprints. Each viewer has a permanent EVM wallet and 40-bit binary_id for leak tracing.

GET/api/v1/viewers

List all viewers for your organization. Supports pagination and filtering by blocked status.

Auth: API Key + stream scope
Response
{
  "viewers": [
    {
      "id": "uuid",
      "externalViewerId": "user-42718",
      "walletAddress": "0xABC123...",
      "binaryId": "0100111100...",
      "email": "john@yourorg.com",
      "totalStreams": 42,
      "isBlocked": false,
      "firstSeen": "2026-08-01T...",
      "lastSeen": "2026-08-01T..."
    }
  ],
  "total": 1,
  "page": 1
}
Example
curl -X GET https://api.blaqclouds.io/api/v1/viewers \
  -H "Authorization: Bearer blk_live_xxx"
GET/api/v1/viewers/{viewerId}

Get detailed information about a specific viewer, including their wallet, binary_id, and stream history.

Auth: API Key + stream scope
Response
{
  "id": "uuid",
  "externalViewerId": "user-42718",
  "walletAddress": "0xABC123...",
  "binaryId": "0100111100...",
  "email": "john@yourorg.com",
  "totalStreams": 42,
  "isBlocked": false,
  "firstSeen": "2026-08-01T...",
  "lastSeen": "2026-08-01T...",
  "streamSessions": [...]
}
Example
curl -X GET https://api.blaqclouds.io/api/v1/viewers/viewer-uuid \
  -H "Authorization: Bearer blk_live_xxx"
POST/api/v1/viewers/{viewerId}/block

Block a viewer. Blocked viewers cannot create new stream sessions. Use this when a viewer is suspected of leaking content.

Auth: API Key + stream scope
Request Body
{ "reason": "Suspected content leak" }
Response
{ "success": true }
Example
curl -X POST https://api.blaqclouds.io/api/v1/viewers/viewer-uuid/block \
  -H "Authorization: Bearer blk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{ "reason": "Suspected content leak" }'
POST/api/v1/viewers/{viewerId}/unblock

Unblock a previously blocked viewer.

Auth: API Key + stream scope
Response
{ "success": true }
Example
curl -X POST https://api.blaqclouds.io/api/v1/viewers/viewer-uuid/unblock \
  -H "Authorization: Bearer blk_live_xxx"
GET/api/v1/viewers/search?binaryId={binaryId}

Search for a viewer by their 40-bit forensic fingerprint. Used after forensic analysis of leaked content to identify the source.

Auth: API Key + forensics scope
Response
{
  "viewer": {
    "id": "uuid",
    "externalViewerId": "user-42718",
    "walletAddress": "0xABC123...",
    "binaryId": "0100111100...",
    "organizationName": "Your Organization Inc.",
    "email": "john@yourorg.com",
    "totalStreams": 42,
    "firstSeen": "2026-08-01T..."
  }
}
Example
curl -X GET "https://api.blaqclouds.io/api/v1/viewers/search?binaryId=0100111100000111101001011000000101101111" \
  -H "Authorization: Bearer blk_live_xxx"

๐Ÿ”— Webhooks

Receive notifications when viewer wallets are created, streams start, or viewers are blocked. Webhooks are signed with HMAC-SHA256.

PUT/api/v1/webhook

Update your webhook URL and/or regenerate your webhook secret. The secret is used to sign all webhook deliveries for verification.

Auth: API Key + billing scope
Request Body
{
  "webhookUrl": "https://yourorg.com/webhooks/blaqclouds",
  "regenerateSecret": true
}
Response
{
  "webhookUrl": "https://yourorg.com/webhooks/blaqclouds",
  "webhookSecret": "newsecret..."
}
Example
curl -X PUT https://api.blaqclouds.io/api/v1/webhook \
  -H "Authorization: Bearer blk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "webhookUrl": "https://yourorg.com/webhooks/blaqclouds",
    "regenerateSecret": true
  }'
GET/api/v1/webhook/deliveries

View webhook delivery history, including status, response codes, and retry attempts.

Auth: API Key + billing scope
Response
{
  "deliveries": [
    {
      "id": "uuid",
      "eventType": "viewer.created",
      "status": "delivered",
      "attempts": 1,
      "responseCode": 200,
      "createdAt": "2026-08-01T...",
      "deliveredAt": "2026-08-01T..."
    }
  ]
}
Example
curl -X GET https://api.blaqclouds.io/api/v1/webhook/deliveries \
  -H "Authorization: Bearer blk_live_xxx"
POST/api/v1/webhook/test

Send a test webhook to your configured URL. Useful for verifying your endpoint is working.

Auth: API Key + billing scope
Response
{
  "success": true,
  "responseCode": 200
}
Example
curl -X POST https://api.blaqclouds.io/api/v1/webhook/test \
  -H "Authorization: Bearer blk_live_xxx"

๐Ÿ’ฐ Billing

Track usage, view invoices, fund your balance, and manage autopay settings.

GET/api/v1/billing/usage

Get your current billing period usage โ€” total streams, bandwidth consumed, and amount due.

Auth: API Key + billing scope
Response
{
  "totalStreams": 1542,
  "totalBytes": 53687091200,
  "amountDue": 15420,
  "balance": 50000,
  "periodStart": "2026-08-01T...",
  "periodEnd": "2026-09-01T..."
}
Example
curl -X GET https://api.blaqclouds.io/api/v1/billing/usage \
  -H "Authorization: Bearer blk_live_xxx"
GET/api/v1/billing/invoices

View your invoice history with payment status.

Auth: API Key + billing scope
Response
{
  "invoices": [
    {
      "id": "uuid",
      "periodStart": "2026-07-01T...",
      "periodEnd": "2026-08-01T...",
      "totalStreams": 1200,
      "amountApusd": 12000,
      "paymentStatus": "paid",
      "paidAt": "2026-08-01T..."
    }
  ]
}
Example
curl -X GET https://api.blaqclouds.io/api/v1/billing/invoices \
  -H "Authorization: Bearer blk_live_xxx"
POST/api/v1/billing/fund

Fund your account balance. For APUSD: returns the wallet address to send payment to. For Stripe: creates a payment intent and returns the client secret. Max amount: $1,000,000.

Auth: API Key + billing scope
Request Body
{
  "method": "apusd",   // or "stripe"
  "amount": 50000
}
Response
// APUSD:
{
  "method": "apusd",
  "walletAddress": "0x...",
  "amount": 50000,
  "status": "pending"
}

// Stripe:
{
  "method": "stripe",
  "clientSecret": "pi_xxx_secret_xxx",
  "amount": 50000
}
Example
curl -X POST https://api.blaqclouds.io/api/v1/billing/fund \
  -H "Authorization: Bearer blk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{ "method": "stripe", "amount": 50000 }'
GET/api/v1/billing/balance

Get your current APUSD and Stripe balances, plus any pending charges.

Auth: API Key + billing scope
Response
{
  "apusdBalance": 50000,
  "stripeBalance": 0,
  "pendingCharges": 15420
}
Example
curl -X GET https://api.blaqclouds.io/api/v1/billing/balance \
  -H "Authorization: Bearer blk_live_xxx"
PUT/api/v1/billing/autopay

Enable or disable automatic payment when invoices are generated. Supports APUSD (on-chain) or Stripe (fiat).

Auth: API Key + billing scope
Request Body
{
  "enabled": true,
  "method": "stripe"
}
Response
{ "success": true }
Example
curl -X PUT https://api.blaqclouds.io/api/v1/billing/autopay \
  -H "Authorization: Bearer blk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{ "enabled": true, "method": "stripe" }'

๐Ÿ” Forensics

Analyze leaked content to trace it back to the specific viewer. The forensic chain provides legally defensible evidence.

POST/api/v1/forensics/analyze

Submit leaked content for forensic analysis. The platform extracts the 40-bit binary_id from the watermarked content (DTCWT for video, STFT for music) and traces it to the viewer, organization, and stream session.

Auth: API Key + forensics scope
Request Body
// Multipart form:
// - file: leaked content file (video or audio)
// - contentId: UUID of the original content
// - contentType: "video" or "music"
Response
{
  "binaryId": "0100111100000111101001011000000101101111",
  "confidence": 1.0,
  "matchedSession": {
    "sessionId": "uuid",
    "viewerId": "uuid",
    "externalViewerId": "user-42718",
    "walletAddress": "0xABC123...",
    "ipAddress": "203.0.113.50",
    "streamDate": "2026-08-01T14:32:00Z"
  },
  "evidenceChain": {
    "organization": "Your Organization Inc.",
    "viewer": "user-42718",
    "wallet": "0xABC123...",
    "content": "Video Title",
    "streamDate": "2026-08-01T14:32:00Z",
    "ipAddress": "203.0.113.50",
    "confidence": 1.0
  },
  "caseId": "uuid"
}
Example
curl -X POST https://api.blaqclouds.io/api/v1/forensics/analyze \
  -H "Authorization: Bearer blk_live_xxx" \
  -F "file=@leaked-video.mp4" \
  -F "contentId=content-uuid" \
  -F "contentType=video"
GET/api/v1/forensics/cases

List all forensic cases for your organization.

Auth: API Key + forensics scope
Response
{
  "cases": [
    {
      "id": "uuid",
      "contentId": "content-uuid",
      "binaryId": "010011...",
      "confidence": 1.0,
      "status": "completed",
      "matchedViewer": "user-42718",
      "createdAt": "2026-08-01T..."
    }
  ]
}
Example
curl -X GET https://api.blaqclouds.io/api/v1/forensics/cases \
  -H "Authorization: Bearer blk_live_xxx"
GET/api/v1/forensics/cases/{caseId}

Get full details of a forensic case, including the complete evidence chain.

Auth: API Key + forensics scope
Response
{
  "id": "uuid",
  "contentId": "content-uuid",
  "binaryId": "0100111100...",
  "confidence": 1.0,
  "status": "completed",
  "evidenceChain": {
    "organization": "Your Organization Inc.",
    "viewer": "user-42718",
    "wallet": "0xABC123...",
    "content": "Video Title",
    "streamDate": "2026-08-01T14:32:00Z",
    "ipAddress": "203.0.113.50",
    "confidence": 1.0
  }
}
Example
curl -X GET https://api.blaqclouds.io/api/v1/forensics/cases/case-uuid \
  -H "Authorization: Bearer blk_live_xxx"

โš™๏ธ Admin (Platform Owner)

Platform administration endpoints. These use wallet auth (SIWE), not API keys. Only platform admins can access these.

GET/api/v1/admin/organizations

List all registered organizations with usage stats. Admin-only (wallet auth + isAdmin check).

Auth: Wallet auth (SIWE) + admin role
Response
{
  "organizations": [
    {
      "id": "uuid",
      "name": "Your Organization Inc.",
      "email": "contact@yourorg.com",
      "plan": "paid",
      "isActive": true,
      "streamsThisMonth": 1542,
      "apusdBalance": 50000,
      "totalApiKeys": 1,
      "activeLicenses": 3
    }
  ]
}
Example
curl -X GET https://api.blaqclouds.io/api/v1/admin/organizations \
  -H "Authorization: Bearer <siwe_jwt_token>"
POST/api/v1/admin/organizations/{id}/license

Assign a content license to an organization. Supports "all" (access to all content) or "specific" (individual content ID).

Auth: Wallet auth (SIWE) + admin role
Request Body
{
  "contentId": "*",              // or specific UUID
  "contentType": "video",       // or "music"
  "licenseScope": "all",        // or "specific"
  "watermarkingEnabled": true,
  "pricePerStream": 10
}
Response
{ "success": true, "licenseId": "uuid" }
Example
curl -X POST https://api.blaqclouds.io/api/v1/admin/organizations/org-uuid/license \
  -H "Authorization: Bearer <siwe_jwt_token>" \
  -H "Content-Type: application/json" \
  -d '{ "contentId": "*", "contentType": "video", "licenseScope": "all" }'
POST/api/v1/admin/organizations/{id}/rate-limit

Set rate limits for an organization. Both org-level and per-key limits are supported.

Auth: Wallet auth (SIWE) + admin role
Request Body
{
  "rateLimitPerHour": 10000,
  "monthlyStreamLimit": 100000
}
Response
{ "success": true }
Example
curl -X POST https://api.blaqclouds.io/api/v1/admin/organizations/org-uuid/rate-limit \
  -H "Authorization: Bearer <siwe_jwt_token>" \
  -H "Content-Type: application/json" \
  -d '{ "rateLimitPerHour": 10000 }'

๐Ÿ”— Webhook Events

Webhooks are sent as POST requests to your configured URL. Each delivery is signed with HMAC-SHA256 using your webhook secret.

Verification header:
X-BLAQClouds-Signature: HMAC-SHA256(webhook_secret, body)
X-BLAQClouds-Event: viewer.created

// Verify in Python:
import hmac, hashlib
expected = hmac.new(secret.encode(), body, hashlib.sha256).hexdigest()
hmac.compare_digest(signature, expected)
EventDescription
viewer.createdA new viewer wallet was auto-generated. Payload includes viewerId, walletAddress, and binaryId.
viewer.streamA viewer started a new stream. Payload includes viewerId, contentId, and sessionId.
viewer.blockedA viewer was blocked (by admin or organization). Payload includes viewerId and reason.
organization.suspendedAn organization was suspended by the platform admin. Payload includes organizationId and reason.

โš ๏ธ Error Codes

All error responses follow a consistent format with an error code for programmatic handling.

{
  "error": "Human-readable message",
  "code": "ERROR_CODE",
  "status": 403
}
CodeStatusDescription
INVALID_API_KEY401API key is missing, invalid, or revoked.
INSUFFICIENT_SCOPE403API key does not have the required scope for this endpoint.
RATE_LIMIT_EXCEEDED429Rate limit exceeded. Check X-RateLimit-Reset header for when the window resets.
NOT_FOUND404Requested resource (content, viewer, session) was not found.
LICENSE_REQUIRED403Your organization does not have a license for this content.
INSUFFICIENT_BALANCE402Your account balance is insufficient for this operation.
BAD_REQUEST400Malformed request โ€” missing required fields or invalid values.
INTERNAL_ERROR500Internal server error. Contact support if persistent.

Powered by BLAQclouds โ€” Forensic DRM for content licensing

Register ยท Admin Dashboard