PsykoMedia is an early-access build. These docs describe what exists today, how the sovereign image engines connect, and what's honestly still on the roadmap.
Honestly not built yet. These are planned, not promised:
The v1 API is JSON over HTTP, rooted at /api. Responses are JSON; errors return a detail string. Multipart upload endpoints accept form fields. All endpoints documented here are the contract the backend implements.
| Endpoint | Method | Body | Response |
|---|---|---|---|
/api/waitlist |
POST |
{"email": string, "name": string, "interest": string} — all three required; email must be valid and unique |
{"ok": true} · 400 on invalid email or duplicate |
/api/studio/upload |
POST |
multipart: file (WebM), title? |
{"ok": true, "id": number, "title": string, "file_path": string} |
/api/studio/recordings |
GET |
— | {"ok": true, "recordings": [...]} |
/api/shows |
GET / POST |
{"title", "slug"?, "description"?, "author"?, "image"?} |
show list / created show · 409 on duplicate slug |
/api/shows/{id}/episodes |
GET / POST |
GET: ?include_unpublished=true; POST multipart: title, description?, status?, audio? |
episode list / created episode |
/api/episodes/{id} |
GET / PUT / DELETE |
PUT: {"title"?, "description"?, "status"?, ...} |
episode object |
/api/episodes/{id}/publish |
POST |
— | episode with status: "published" |
/cast/{slug}/feed.xml |
GET |
— | RSS 2.0 + iTunes, generated live from the DB |
/api/create/jobs |
POST |
{"prompt", "style"?: "flow|glitch|orb|grid", "engine"?: "local|flux", "negative_prompt"?, "steps"?, "guidance"?, "width"?, "height"?, "seed"?} — flux = SDXL on your machine (historical engine id) |
queued job with queue_position; SDXL jobs finish async with seed_used |
/api/create/jobs |
GET |
— | job list, each with status and queue_position |
/api/create/engines |
GET |
— | per-engine status: ready|warming_up|offline + latency ms |
/api/library |
GET |
?q=&kind=audio|video|image|other&license=psyko-free|cc-by|personal&source= |
{"items": [...], "count": n} |
/api/library/upload |
POST |
multipart: file, title?, kind?, license?, tags? |
created library item |
/api/library/{id} |
GET / PUT / DELETE |
PUT: ?title=&license=&tags= |
item object |
/api/library/{id}/file |
GET |
— | the stored media file (audio/video/image preview) |
/api/pipelines |
GET / POST |
{"name", "description"?, "trigger"?, "actions": [{"action", "params"}], "enabled"?} |
pipeline list / created pipeline |
/api/pipelines/{id}/run |
POST |
{"input"?: object} — fills $input.* placeholders |
run record with per-step logs |
/api/runs |
GET |
— | run history |
/api/automate/meta |
GET |
— | available actions + triggers for the pipeline builder |
/api/settings/flux |
GET / PUT |
SDXL adapter config (base URL, endpoint paths, active mode). Auth value accepted on PUT, never returned on GET. | adapter config + per-engine status |
Yes — every tier is free during early access. There is no checkout, no credit card field, and no "free trial" that converts. When we eventually charge, we'll say so plainly first.
No — there is no key slot anywhere. The procedural engine in Create runs entirely in your browser, and SDXL runs on your own machine through your own API (port 8003, reached via SSH tunnel). Nothing leaves your hardware and no third-party account is involved.
Not yet. Studio records to file today; browser RTMP live streaming is on the Phase 2 roadmap. If you need live this week, PsykoMedia isn't the tool for that — yet.
You do. Recordings, episodes, generated art, and pipelines are yours. We claim no ownership and won't sell or license your content. Generated art from the procedural engine and your own SDXL API is yours to use commercially — it's your hardware and your models.