Appearance
Playground
The Playground (AI Platform → Playground) is a live test bench for admins. It runs generations through the real customer gateway — the same routing, failover, usage recording, and library persistence a paying user hits — but with plan quotas bypassed, so you can exercise any model before you sell it, debug a provider, or sanity-check output quality.
What makes it different from a health check
Verify / Health-check all only ping a provider. The Playground actually generates and persists:
- Runs under a dedicated internal identity on an unlimited "Internal Playground" plan, so no quota can block a test.
- Every run writes a real
UsageRecord(with true provider cost) and aGenerationin the library — exactly like a customer's. - New models self-heal: the target model is auto-added to the internal plan's allow-list on first use, so you never hand-sync it.
Real upstream cost is spent (you're calling the provider for real). Those internal usage records are excluded from revenue analytics so they don't skew margins.
Tabs
| Tab | Does | Notes |
|---|---|---|
| Text | Chat / completion, with a streaming toggle | Set temperature, max tokens, system prompt; multi-turn conversations are saved |
| Image | Text-to-image, plus image-to-image via an uploaded source | Enhance prompt / Enhance image helpers refine the input first |
| Video | Text/image-to-video; returns a jobId you poll to completion | Needs the BullMQ worker + Redis running to finish and persist |
| Audio | Text-to-speech |
A model picker (with provider logos) lists only servable models — anything DISABLED, or under an INACTIVE/DISABLED provider, is hidden, because you can't meaningfully test what a customer can't reach.
History & analytics
- History / Generations — recent playground outputs, kept in the DB like a customer's library.
- Analytics — a per-day count of playground runs, so heavy testing is visible and separable from customer traffic.
API (admin-guarded, /v1/admin/playground/*)
GET /models · POST /text · POST /text/stream · POST /image · POST /audio · POST /video → GET /video/:jobId · POST /upload (image-to-image source) · POST /enhance-prompt · POST /enhance-image · GET /history · GET /generations · GET /analytics · POST/GET /conversations.
All require an ADMIN / SUPER_ADMIN session, same guard as the rest of the console.