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