Base URL
The sandbox environment is a fully isolated copy of the production API. Use it for integration testing — data created in sandbox does not affect production. Sandbox API keys are available from the Dashboard.
Authentication
All endpoints (except/health) require authentication. Include your API key as a Bearer token with every request:
X-Game-Id header. See Authentication for details on API keys, scopes, and the gateway auth flow.
Endpoints
Device
| Method | Path | Description |
|---|---|---|
| POST | /v1/device/check | Verify device signature and return ban/reputation status |
Bans
| Method | Path | Description |
|---|---|---|
| POST | /v1/bans | Create a ban |
| POST | /v1/bans/{ban_id}/revoke | Revoke a ban |
| GET | /v1/device/{device_id}/bans/cheat | List cheat bans |
| GET | /v1/device/{device_id}/bans/social | List social bans |
Policy
| Method | Path | Description |
|---|---|---|
| GET | /v1/policy | Get publisher policy |
| PUT | /v1/policy | Update publisher policy |
System
| Method | Path | Description |
|---|---|---|
| GET | /health | Health check (no auth required) |
Error Responses
All errors return a JSON object with anerror field containing a machine-readable error code:
Rate Limiting
Sentinel API
Rate limiting for the Sentinel API is handled at the APISIX gateway level and is not enforced by the API itself. Contact your account representative for rate limit details.Dashboard API
The dashboard enforces built-in rate limiting:| Scope | Limit | Window | Applies To |
|---|---|---|---|
| Auth | 60 requests | 1 minute | /api/auth/login/*, /api/auth/callback/*, /api/auth/exchange-token, /api/auth/refresh |
| Global | 300 requests per IP | 1 minute | All dashboard endpoints |
429 Too Many Requests with a Retry-After header:
Security Headers
The dashboard adds the following headers to every response:X-Content-Type-Options: nosniffX-Frame-Options: DENYReferrer-Policy: strict-origin-when-cross-originContent-Security-Policy: default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' https:;Strict-Transport-Security: max-age=31536000; includeSubDomains(production only)
