Artist Plus

Admin Dashboard

Total Keys
—
Active
—
Disabled
—
Online Now
—
ProfileKeyStatusSessionsActiveCreatedActions
Loading…
NameProduct KeyData (JSON)CreatedActions
Loading…
NameProduct KeyArtistData (JSON)CreatedActions
Loading…

Public endpoints for client applications. Authenticate with your product key via X-Product-Key header or body.key.

Check Key

no session
GET /api/check/:key POST /api/check // key in body when keeping it out of URL logs // POST body: { "key": "your-product-key-uuid" } // Response: { "valid": true, "profile": "Artist Name", "key": "your-product-key-uuid", "max_sessions": 1 }

Get Settings

no session
GET /api/settings Header: X-Product-Key: your-product-key-uuid // Response: { "settings": { "theme": "dark", "feature_x": true, ... } }

Sync Settings

writes
POST /api/settings/sync // Merges incoming fields into stored settings (use replace:true to overwrite) // Body — key in header: Header: X-Product-Key: your-product-key-uuid { "settings": { "last_opened": "2026-07-20", "version": "2.1" } } // Body — key in body: { "key": "your-product-key-uuid", "settings": { ... }, "replace": false } // Response — full merged result: { "settings": { "theme": "dark", "last_opened": "2026-07-20", "version": "2.1" } }

Ping / Heartbeat

registers session
POST /api/ping // Call every 1–2 minutes. Returns settings on each ping. { "key": "uuid", "device_id": "unique-device-id", "device_name": "My PC" } // Valid response: { "valid": true, "profile": "Artist Name", "settings": { ... } } // Error responses: { "valid": false, "reason": "invalid_key" } { "valid": false, "reason": "key_disabled" } { "valid": false, "reason": "session_limit_reached", "limit": 1 }

Session Lifecycle

• Sessions expire automatically after 3 minutes without a ping (Redis TTL) • max_sessions limits how many devices can be active simultaneously • The same device_id always refreshes its own session (no double-counting) • Settings synced via /api/settings/sync are returned on the next /api/ping