{"openapi":"3.1.0","info":{"title":"Infinite Studio API","description":"Make videos and songs from your own tools. Bearer key from https://studio.infinitepeople.ai/#keys. Guide: https://studio.infinitepeople.ai/api/","version":"1"},"paths":{"/v1/video/loop":{"post":{"tags":["video"],"summary":"Create Loop","description":"Create a single video loop request (interactive priority).\n\nA service call: the result is ephemeral (7 days). Production loops are\nenqueued by LoopFiller directly, never through this route.","operationId":"create_loop_v1_video_loop_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateLoopRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VideoJob"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/video/batch":{"post":{"tags":["video"],"summary":"Create Batch","description":"Create a batch of video loop requests (batch priority).\n\nBatch jobs are only picked up by workers when no interactive job is queued.","operationId":"create_batch_v1_video_batch_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateBatchRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/VideoJob"},"type":"array","title":"Response Create Batch V1 Video Batch Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/video/me":{"get":{"tags":["video"],"summary":"Me","description":"The account as the app shows it: who, the Infinite Characters plan,\nthe week left in percent and when it starts again, what the plan\nallows, whether the terms are accepted. Never a price.","operationId":"me_v1_video_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Me V1 Video Me Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/video/terms/accept":{"post":{"tags":["video"],"summary":"Accept Terms","description":"The account accepts the current terms of use (409 for another version:\nthe app must show the current text).","operationId":"accept_terms_v1_video_terms_accept_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TermsBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Accept Terms V1 Video Terms Accept Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/video/plans":{"get":{"tags":["video"],"summary":"Plans","description":"The plans as the app's subscription page shows them: what each gives\nin the videos, its monthly price in `currency`, and which one the\naccount has. One subscription for Infinite Characters and Infinite\nVideos alike: the checkout and the portal are /v1/subscriptions.","operationId":"plans_v1_video_plans_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"currency","in":"query","required":false,"schema":{"type":"string","minLength":3,"maxLength":3,"default":"EUR","title":"Currency"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Plans V1 Video Plans Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/video/jobs":{"get":{"tags":["video"],"summary":"List Jobs","description":"The account's creations, newest first, for as long as their record\nlives (a week; the video itself expires after 7 days).","operationId":"list_jobs_v1_video_jobs_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response List Jobs V1 Video Jobs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["video"],"summary":"List Jobs","description":"The account's creations, newest first, for as long as their record\nlives (a week; the video itself expires after 7 days).","operationId":"list_jobs_v1_video_jobs_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response List Jobs V1 Video Jobs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/video/jobs/{job_id}":{"get":{"tags":["video"],"summary":"Get Job","description":"The creation: `ready` when the video is there, else `keep_polling`\nand `next` say what to do. GET or POST alike. The connection is held\nup to `wait` seconds (25 by default) so a caller makes a few calls\ninstead of sixty; the app passes 0.","operationId":"get_job_v1_video_jobs__job_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"wait","in":"query","required":false,"schema":{"type":"integer","maximum":25,"minimum":0,"description":"Seconds the connection is held until something changes; 0 answers at once.","default":25,"title":"Wait"},"description":"Seconds the connection is held until something changes; 0 answers at once."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Job V1 Video Jobs  Job Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["video"],"summary":"Get Job","description":"The creation: `ready` when the video is there, else `keep_polling`\nand `next` say what to do. GET or POST alike. The connection is held\nup to `wait` seconds (25 by default) so a caller makes a few calls\ninstead of sixty; the app passes 0.","operationId":"get_job_v1_video_jobs__job_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"wait","in":"query","required":false,"schema":{"type":"integer","maximum":25,"minimum":0,"description":"Seconds the connection is held until something changes; 0 answers at once.","default":25,"title":"Wait"},"description":"Seconds the connection is held until something changes; 0 answers at once."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Job V1 Video Jobs  Job Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["video"],"summary":"Delete Job","description":"Cancel a job that is not done, or delete a finished one for good.\n\nCancelling before the render costs nothing. A job a node is already\nrendering is cancelled too, but its render is charged to the week\n(`charged`: the app asks for a confirmation first); the node finishes\nand its result is dropped. Deleting removes the job record and, when\nthe result is ephemeral (a service job), the mp4 on R2. Production\nloops referenced by agent_media are never reachable here: they are\nnot ephemeral.","operationId":"delete_job_v1_video_jobs__job_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Job V1 Video Jobs  Job Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/video/jobs/{job_id}/review":{"post":{"tags":["video"],"summary":"Review Job","description":"Act on a job whose painted first frame is shown for review.\n\n`approve` queues it now; `pause` stops the countdown, `resume` restarts\nit; `regen` with `panels` repaints the painted first frame in\none gpt-image call, rewrites the motion for the new frames and opens a\nfresh review. Only a job in status \"review\" accepts this (409\notherwise); the countdown expiring is the same as `approve`.","operationId":"review_job_v1_video_jobs__job_id__review_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Review Job V1 Video Jobs  Job Id  Review Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/video/jobs/{job_id}/frame":{"post":{"tags":["video"],"summary":"Frame Of Job","description":"The picture of a finished video at `t` seconds, stored like an\nuploaded input (7 days): the edit studio starts again from it, or keeps\nit in a project. The clip came out of moderated inputs; the picture\nis not moderated again.","operationId":"frame_of_job_v1_video_jobs__job_id__frame_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FrameBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Frame Of Job V1 Video Jobs  Job Id  Frame Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/video/jobs/{job_id}/feedback":{"post":{"tags":["video"],"summary":"Give Feedback","description":"A 1-5 rating and a word on a video, one per account and per job;\nsending again replaces. The row keeps what the job was, so it still\nreads after the job record expires.","operationId":"give_feedback_v1_video_jobs__job_id__feedback_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__api__video__FeedbackBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Give Feedback V1 Video Jobs  Job Id  Feedback Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["video"],"summary":"Read Feedback","description":"The caller's own feedback on a job (404 while there is none).","operationId":"read_feedback_v1_video_jobs__job_id__feedback_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Read Feedback V1 Video Jobs  Job Id  Feedback Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/video/queue/stats":{"get":{"tags":["video"],"summary":"Queue Stats","description":"Public queue stats (depths only). For UI ETA hints.","operationId":"queue_stats_v1_video_queue_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Queue Stats V1 Video Queue Stats Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/video/generate":{"post":{"tags":["video"],"summary":"Generate","description":"Enqueue a generation on any model of the fleet.\n\nSame body as /estimate plus an optional `priority`. The job carries\n`estimate_seconds` for the generation itself; poll GET /jobs/{id}.\n\nOn the MiniMax models, `enhance` (a level, default low) answers with\nthe job in status \"enhancing\": GPT rewrites the prompt, and with\nreferences or text alone gpt-image paints the first frame at that\nquality, before the job is queued or shown for review. That work\nstarts when the job's turn comes (`enhance_started_at`): one job is\nprepared at a time, the next one for the GPU.\n\nThe account's plan (video_budget) decides: the queue priority (paid\naccounts first), what may be asked (length, director level: 402\n`not_on_plan`), and whether the week can still take it (402\n`week_over`, with `resets_at`). The team plan (admins, unless a plan is\nforced on them) is not bound.","operationId":"generate_v1_video_generate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__api__video__GenerateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Generate V1 Video Generate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/video/inputs":{"post":{"tags":["video"],"summary":"Upload Input","description":"Store an image (or a voice sample) on R2 and return the public URL\nto use as first_frame_url / last_frame_url / reference_urls (or\nvoice_url).\n\nNodes fetch inputs over HTTP, so a local file has to become a URL first;\nthis is that step for callers who do not host images themselves. Inputs\nare ephemeral like the outputs: gone from R2 after 7 days. Images go\nthrough moderation; audio does not.","operationId":"upload_input_v1_video_inputs_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_input_v1_video_inputs_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Upload Input V1 Video Inputs Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/video/models":{"get":{"tags":["video"],"summary":"List Models","description":"Every model the fleet can run, with what it accepts and how to prompt it.\n\n`online` reflects the heartbeat of the nodes that serve the model, so a\ncaller can tell \"queued behind a busy node\" from \"nobody can run this\".","operationId":"list_models_v1_video_models_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Models V1 Video Models Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/video/service":{"get":{"tags":["video"],"summary":"Service","description":"Whether the service runs, and the failure streak behind the breaker.","operationId":"service_v1_video_service_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Service V1 Video Service Get"}}}}},"security":[{"HTTPBearer":[]}]},"put":{"tags":["video"],"summary":"Set Service","description":"Admins only: resume the service after the breaker tripped (the\nstreak restarts at zero), or stop it by hand.","operationId":"set_service_v1_video_service_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Set Service V1 Video Service Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/video/estimate":{"post":{"tags":["video"],"summary":"Estimate","description":"Validate a request against its model and return the expected geometry\nand duration, without enqueuing anything.\n\nBody: `{\"model\": \"<id>\", ...params}` where params follow the model's entry\nin GET /models. Seconds are calibrated on measured runs and cover the\ngeneration only, not the time spent waiting in queue.","operationId":"estimate_v1_video_estimate_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Estimate V1 Video Estimate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/song/models":{"get":{"tags":["song"],"summary":"List Models","description":"Every engine, with what it accepts and how to write for it;\n`online` reflects the heartbeat of the nodes that serve it.","operationId":"list_models_v1_song_models_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Models V1 Song Models Get"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["song"],"summary":"List Models","description":"Every engine, with what it accepts and how to write for it;\n`online` reflects the heartbeat of the nodes that serve it.","operationId":"list_models_v1_song_models_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Models V1 Song Models Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/song/estimate":{"post":{"tags":["song"],"summary":"Estimate","description":"Validate a request and answer with what it would take (seconds,\nGPU seconds, cloud dollars) and whether the plan and the week can\ntake it, without queuing anything.","operationId":"estimate_v1_song_estimate_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Estimate V1 Song Estimate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/song/write":{"post":{"tags":["song"],"summary":"Write","description":"The director writes a draft from the request (or reworks `previous`\nthe way `notes` say). Nothing is queued: the app shows the draft, the\nperson edits, then POST /generate carries the final words. A cloud\ncall: subscribers only, counted on the week.","operationId":"write_v1_song_write_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WriteRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Write V1 Song Write Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/song/generate":{"post":{"tags":["song"],"summary":"Generate","description":"Queue one take. The plan decides what may be asked (mode, length,\nlane: 402 `not_on_plan`) and whether the week can take it (402\n`week_over`); the week is the videos' week. Counted at launch,\nrefunded if it fails or is cancelled before the generation starts.","operationId":"generate_v1_song_generate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__api__song__GenerateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Generate V1 Song Generate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/song/jobs":{"get":{"tags":["song"],"summary":"List Jobs","description":"The account's songs, newest first (records and files live a week);\neach one shaped like GET /jobs/{id}. The elements have their own list.","operationId":"list_jobs_v1_song_jobs_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response List Jobs V1 Song Jobs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["song"],"summary":"List Jobs","description":"The account's songs, newest first (records and files live a week);\neach one shaped like GET /jobs/{id}. The elements have their own list.","operationId":"list_jobs_v1_song_jobs_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response List Jobs V1 Song Jobs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/song/jobs/{job_id}":{"get":{"tags":["song"],"summary":"Get Job","description":"One creation. Holds the connection up to 25 s and answers as soon\nas its state changes (`?wait=0` for an immediate answer).","operationId":"get_job_v1_song_jobs__job_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"wait","in":"query","required":false,"schema":{"type":"integer","maximum":25,"minimum":0,"description":"Seconds to hold the connection for a change; 0 answers at once.","default":25,"title":"Wait"},"description":"Seconds to hold the connection for a change; 0 answers at once."},{"name":"complete","in":"query","required":false,"schema":{"type":"integer","maximum":1,"minimum":0,"description":"1 inlines the recipe of a finished song.","default":0,"title":"Complete"},"description":"1 inlines the recipe of a finished song."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Job V1 Song Jobs  Job Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["song"],"summary":"Get Job","description":"One creation. Holds the connection up to 25 s and answers as soon\nas its state changes (`?wait=0` for an immediate answer).","operationId":"get_job_v1_song_jobs__job_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"wait","in":"query","required":false,"schema":{"type":"integer","maximum":25,"minimum":0,"description":"Seconds to hold the connection for a change; 0 answers at once.","default":25,"title":"Wait"},"description":"Seconds to hold the connection for a change; 0 answers at once."},{"name":"complete","in":"query","required":false,"schema":{"type":"integer","maximum":1,"minimum":0,"description":"1 inlines the recipe of a finished song.","default":0,"title":"Complete"},"description":"1 inlines the recipe of a finished song."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Job V1 Song Jobs  Job Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["song"],"summary":"Delete Job","description":"Cancel a song that is not done (a generation under way is charged),\nor delete a finished one for good, with its files on R2.","operationId":"delete_job_v1_song_jobs__job_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Job V1 Song Jobs  Job Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/song/elements":{"post":{"tags":["song"],"summary":"Create Element","description":"Split a track into its voice and its music, on the node. The track\ncomes as multipart `file`, as `file_url` (already on our media host),\nor as `from_job` (one of your finished songs). Counted on the week\nlike a song (GPU seconds), refunded if it fails.","operationId":"create_element_v1_song_elements_post","security":[{"HTTPBearer":[]}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Element V1 Song Elements Post"}}}}}},"get":{"tags":["song"],"summary":"List Elements","description":"The account's elements, newest first (POST /elements creates one).","operationId":"list_elements_v1_song_elements_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response List Elements V1 Song Elements Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/song/elements/{element_id}/hear":{"post":{"tags":["song"],"summary":"Hear Element","description":"The same track again, split with the planner's hearing this time:\na new element (the old one stays), the one /write can take as 'music'.","operationId":"hear_element_v1_song_elements__element_id__hear_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"element_id","in":"path","required":true,"schema":{"type":"string","title":"Element Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Hear Element V1 Song Elements  Element Id  Hear Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/song/elements/{element_id}":{"get":{"tags":["song"],"summary":"Get Element","description":"One element; holds the connection up to 25 s like a song.","operationId":"get_element_v1_song_elements__element_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"element_id","in":"path","required":true,"schema":{"type":"string","title":"Element Id"}},{"name":"wait","in":"query","required":false,"schema":{"type":"integer","maximum":25,"minimum":0,"default":25,"title":"Wait"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Element V1 Song Elements  Element Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["song"],"summary":"Get Element","description":"One element; holds the connection up to 25 s like a song.","operationId":"get_element_v1_song_elements__element_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"element_id","in":"path","required":true,"schema":{"type":"string","title":"Element Id"}},{"name":"wait","in":"query","required":false,"schema":{"type":"integer","maximum":25,"minimum":0,"default":25,"title":"Wait"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Element V1 Song Elements  Element Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["song"],"summary":"Delete Element","description":"Cancel a separation under way, or delete an element with its files.","operationId":"delete_element_v1_song_elements__element_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"element_id","in":"path","required":true,"schema":{"type":"string","title":"Element Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Element V1 Song Elements  Element Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/song/me":{"get":{"tags":["song"],"summary":"Me","description":"The account as the app shows it: who, the plan, the week left in\npercent (the same week as the videos), what the plan allows in the\nsongs, the service state, the terms.","operationId":"me_v1_song_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Me V1 Song Me Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/song/queue/stats":{"get":{"tags":["song"],"summary":"Queue Stats","operationId":"queue_stats_v1_song_queue_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Queue Stats V1 Song Queue Stats Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/song/service":{"get":{"tags":["song"],"summary":"Service","operationId":"service_v1_song_service_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Service V1 Song Service Get"}}}}},"security":[{"HTTPBearer":[]}]},"put":{"tags":["song"],"summary":"Set Service","description":"Admins only: resume after the breaker tripped, or stop by hand.","operationId":"set_service_v1_song_service_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Set Service V1 Song Service Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/video/projects":{"get":{"tags":["video"],"summary":"List Projects","description":"The account's projects, newest first, each with its references.","operationId":"list_projects_v1_video_projects_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response List Projects V1 Video Projects Get"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["video"],"summary":"Create Project","operationId":"create_project_v1_video_projects_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Create Project V1 Video Projects Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/video/projects/{project_id}":{"patch":{"tags":["video"],"summary":"Rename Project","operationId":"rename_project_v1_video_projects__project_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"integer","title":"Project Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Rename Project V1 Video Projects  Project Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["video"],"summary":"Delete Project","description":"The project and everything in it, on R2 too: the pictures and the\nkept videos (their copies; the original results expire on their own).","operationId":"delete_project_v1_video_projects__project_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"integer","title":"Project Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Project V1 Video Projects  Project Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/video/projects/{project_id}/references":{"post":{"tags":["video"],"summary":"Add Reference","description":"A picture into the project: moderated, stored for good, answered\nwith its URL, the one a request then carries.","operationId":"add_reference_v1_video_projects__project_id__references_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"integer","title":"Project Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_add_reference_v1_video_projects__project_id__references_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Add Reference V1 Video Projects  Project Id  References Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/video/projects/{project_id}/references/from-url":{"post":{"tags":["video"],"summary":"Add Reference From Url","description":"A picture already online with us (a frame taken from a video, an\nuploaded input) kept in the project: fetched, moderated and stored\nlike an upload. Only our own media host is accepted.","operationId":"add_reference_from_url_v1_video_projects__project_id__references_from_url_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"integer","title":"Project Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReferenceFromUrl"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Add Reference From Url V1 Video Projects  Project Id  References From Url Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/video/projects/{project_id}/references/{reference_id}":{"delete":{"tags":["video"],"summary":"Delete Reference","operationId":"delete_reference_v1_video_projects__project_id__references__reference_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"integer","title":"Project Id"}},{"name":"reference_id","in":"path","required":true,"schema":{"type":"integer","title":"Reference Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Reference V1 Video Projects  Project Id  References  Reference Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/video/projects/{project_id}/videos":{"post":{"tags":["video"],"summary":"Keep Video","description":"A finished video of the account kept in the project: the clip and\nits frames are copied where they do not expire, and the row keeps the\nrequest, so the video outlives its job record (Nicolas, 2026-09-16: a\nvideo in a project lives as long as the project). Keeping the same\nvideo twice in a project answers the existing row.","operationId":"keep_video_v1_video_projects__project_id__videos_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"integer","title":"Project Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeepVideoBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Keep Video V1 Video Projects  Project Id  Videos Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/video/projects/{project_id}/videos/{video_id}":{"delete":{"tags":["video"],"summary":"Remove Kept Video","description":"The kept video leaves the project; its copies go, the original\nresult (if it has not expired) is untouched.","operationId":"remove_kept_video_v1_video_projects__project_id__videos__video_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"integer","title":"Project Id"}},{"name":"video_id","in":"path","required":true,"schema":{"type":"integer","title":"Video Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Remove Kept Video V1 Video Projects  Project Id  Videos  Video Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/studio/me":{"get":{"tags":["studio"],"summary":"Me","description":"Never a price. `limits` and `services` are keyed by trade.\n`confidentiality`: the account's default level and, per level, whether\ncreating is possible and which options each trade loses (the app greys\nthem with the reason; NORMES § 5.10).","operationId":"me_v1_studio_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Me V1 Studio Me Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/studio/confidentiality":{"post":{"tags":["studio"],"summary":"Set Confidentiality","description":"The account's default level for its creations (a request may still\nsay otherwise). A level not available today (high, until moderation\nruns on our machines) can be chosen: every creation is then refused\nwith the reason, which is what the person asked for.","operationId":"set_confidentiality_v1_studio_confidentiality_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfidentialityBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Set Confidentiality V1 Studio Confidentiality Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/studio/plans":{"get":{"tags":["studio"],"summary":"Plans","description":"The plans for the subscription page: the price in `currency`, and\nwhat each gives in every trade (`video`, `song`, ...). One Infinite\nPeople subscription; the checkout and the portal are /v1/subscriptions.","operationId":"plans_v1_studio_plans_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"currency","in":"query","required":false,"schema":{"type":"string","minLength":3,"maxLength":3,"default":"EUR","title":"Currency"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Plans V1 Studio Plans Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/studio/waitlist":{"post":{"tags":["studio"],"summary":"Join Waitlist","description":"Be told when a seat of a full plan opens. Asking twice is one row.","operationId":"join_waitlist_v1_studio_waitlist_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WaitlistBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Join Waitlist V1 Studio Waitlist Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/studio/seats":{"get":{"tags":["studio"],"summary":"List Seats","description":"The launch's seats per plan and who waits (admins only).","operationId":"list_seats_v1_studio_seats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Seats V1 Studio Seats Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/studio/terms/accept":{"post":{"tags":["studio"],"summary":"Accept Terms","description":"The account accepts the current terms of use (409 for another\nversion: the app must show the current text).","operationId":"accept_terms_v1_studio_terms_accept_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TermsBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Accept Terms V1 Studio Terms Accept Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/studio/key":{"delete":{"tags":["studio"],"summary":"Revoke Own Key","description":"A key revokes itself: the one this call carries stops working at\nonce (a script that leaks its key can burn it). Keys are otherwise\nmanaged from the app's Account screen; a key can never make or revoke\nanother one. An app session is refused: sign out instead.","operationId":"revoke_own_key_v1_studio_key_delete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Revoke Own Key V1 Studio Key Delete"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/studio/feedback":{"post":{"tags":["studio"],"summary":"Give Feedback","description":"Tell us anything: a bug, a wish, a word on a creation. From the app\nor from a script with a key; we read every one.","operationId":"give_feedback_v1_studio_feedback_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__api__studio__FeedbackBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Give Feedback V1 Studio Feedback Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/studio/session/enter-image-step":{"post":{"tags":["studio-session"],"summary":"Enter Image Step","description":"No-op — image gen is now cloud-based. Kept for Flutter compatibility.","operationId":"enter_image_step_v1_studio_session_enter_image_step_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageStepRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/studio/session/exit-image-step":{"post":{"tags":["studio-session"],"summary":"Exit Image Step","description":"No-op — no GPU coordination needed with cloud image gen.","operationId":"exit_image_step_v1_studio_session_exit_image_step_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageStepRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/studio/session/gpu-status":{"get":{"tags":["studio-session"],"summary":"Gpu Status","description":"Current GPU state.","operationId":"gpu_status_v1_studio_session_gpu_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/me/api-keys/scopes":{"get":{"tags":["api-keys"],"summary":"List Scopes","description":"What a key can be granted, and what each opens.\n\nServed rather than hardcoded in the client, so the picker cannot drift\nfrom what the server actually enforces.","operationId":"list_scopes_v1_me_api_keys_scopes_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/me/api-keys":{"get":{"tags":["api-keys"],"summary":"List Api Keys","description":"The user's keys, without their secrets.","operationId":"list_api_keys_v1_me_api_keys_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["api-keys"],"summary":"Create Api Key","description":"Mint a key. The secret is returned once and never again.\n\nOnly its hash is stored, so a lost key is replaced, not recovered.","operationId":"create_api_key_v1_me_api_keys_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/me/api-keys/{key_id}":{"delete":{"tags":["api-keys"],"summary":"Revoke Api Key","description":"Revoke a key. Takes effect on its next request.","operationId":"revoke_api_key_v1_me_api_keys__key_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"integer","title":"Key Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AccessBody":{"properties":{"allowed":{"type":"boolean","title":"Allowed"},"force":{"type":"boolean","title":"Force","default":false}},"type":"object","required":["allowed"],"title":"AccessBody"},"AdminGrant":{"properties":{"user_email":{"type":"string","title":"User Email"},"role":{"type":"string","title":"Role","default":"admin"}},"type":"object","required":["user_email"],"title":"AdminGrant"},"AgentCreate":{"properties":{"name":{"type":"string","title":"Name"},"gender":{"type":"string","title":"Gender"},"speciality":{"type":"string","title":"Speciality"},"personality_text":{"type":"string","title":"Personality Text"},"relationship_dynamics":{"type":"string","title":"Relationship Dynamics"},"intimacy_cap":{"type":"string","title":"Intimacy Cap","default":"emotional"},"style_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Style Text"},"backstory_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Backstory Text"},"initial_relationship":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Initial Relationship"},"forced_language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Forced Language"},"status":{"type":"string","title":"Status","default":"draft"},"visibility":{"type":"string","title":"Visibility","default":"private"},"character_type":{"type":"string","title":"Character Type","default":"fictional"},"theme":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Theme"}},"type":"object","required":["name","gender","speciality","personality_text","relationship_dynamics"],"title":"AgentCreate"},"AgentUniverseLink":{"properties":{"agent_id":{"type":"integer","title":"Agent Id"},"universe_id":{"type":"integer","title":"Universe Id"},"is_primary":{"type":"boolean","title":"Is Primary","default":false}},"type":"object","required":["agent_id","universe_id"],"title":"AgentUniverseLink"},"AgentUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"gender":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gender"},"speciality":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Speciality"},"personality_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Personality Text"},"relationship_dynamics":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Relationship Dynamics"},"intimacy_cap":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Intimacy Cap"},"style_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Style Text"},"backstory_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Backstory Text"},"initial_relationship":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Initial Relationship"},"forced_language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Forced Language"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"visibility":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Visibility"},"character_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Character Type"},"theme":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Theme"},"portrait_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Portrait Url"},"default_image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default Image Url"},"video_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Video Url"},"memory_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Memory Enabled"},"relationship_dynamics_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Relationship Dynamics Enabled"},"relationship_susceptibility_score":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Relationship Susceptibility Score"},"is_proactive":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Proactive"}},"type":"object","title":"AgentUpdate"},"AnalyzeRequest":{"properties":{"user_message":{"type":"string","title":"User Message"},"agent_response":{"type":"string","title":"Agent Response"},"user_id":{"type":"integer","title":"User Id"},"agent_id":{"type":"integer","title":"Agent Id"}},"type":"object","required":["user_message","agent_response","user_id","agent_id"],"title":"AnalyzeRequest"},"ApiKeyCreate":{"properties":{"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name"},"scopes":{"items":{"type":"string"},"type":"array","minItems":1,"title":"Scopes"},"expires_in_days":{"anyOf":[{"type":"integer","maximum":365.0,"minimum":1.0},{"type":"null"}],"title":"Expires In Days"}},"type":"object","required":["name","scopes"],"title":"ApiKeyCreate"},"ApprovePayload":{"properties":{"pricing_tier":{"type":"string","pattern":"^(free|subscriber)$","title":"Pricing Tier","description":"'free' = any authenticated user can download (subject to daily quota); 'subscriber' = active paid plan required","default":"subscriber"}},"type":"object","title":"ApprovePayload"},"AssignSkillPayload":{"properties":{"skill_definition_id":{"type":"integer","title":"Skill Definition Id"},"is_default":{"type":"boolean","title":"Is Default","default":true}},"type":"object","required":["skill_definition_id"],"title":"AssignSkillPayload"},"AttachDocumentsRequest":{"properties":{"step":{"type":"string","pattern":"^(identity|life)$","title":"Step"},"doc_ids":{"items":{"type":"string"},"type":"array","title":"Doc Ids"}},"type":"object","required":["step"],"title":"AttachDocumentsRequest"},"AugmentedPreviewCompleteBody":{"properties":{"file_key":{"type":"string","maxLength":200,"minLength":1,"title":"File Key"}},"type":"object","required":["file_key"],"title":"AugmentedPreviewCompleteBody"},"AugmentedPreviewCompleteResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"external_id":{"type":"string","title":"External Id"},"file_key":{"type":"string","title":"File Key"},"uploaded_at":{"type":"string","format":"date-time","title":"Uploaded At"}},"type":"object","required":["external_id","file_key","uploaded_at"],"title":"AugmentedPreviewCompleteResponse"},"AugmentedPreviewUploadUrlResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"external_id":{"type":"string","title":"External Id"},"url":{"type":"string","title":"Url"},"key":{"type":"string","title":"Key"},"content_type":{"type":"string","title":"Content Type"},"expires_in":{"type":"integer","title":"Expires In"}},"type":"object","required":["external_id","url","key","content_type","expires_in"],"title":"AugmentedPreviewUploadUrlResponse"},"AuthorRatingPayload":{"properties":{"rating":{"type":"integer","maximum":5.0,"minimum":1.0,"title":"Rating"},"comment":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Comment"}},"type":"object","required":["rating"],"title":"AuthorRatingPayload"},"AuthorRatingResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"average_rating":{"type":"number","title":"Average Rating"},"rating_count":{"type":"integer","title":"Rating Count"},"my_rating":{"type":"integer","title":"My Rating"}},"type":"object","required":["success","average_rating","rating_count","my_rating"],"title":"AuthorRatingResponse"},"Body_add_reference_v1_video_projects__project_id__references_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_add_reference_v1_video_projects__project_id__references_post"},"Body_import_skill_md_v1_workshop_skills_import_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_import_skill_md_v1_workshop_skills_import_post"},"Body_upload_character_reference_v1_workshop_characters_upload_reference_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_character_reference_v1_workshop_characters_upload_reference_post"},"Body_upload_clone_recording_v1_workshop_voices_clone_upload_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_clone_recording_v1_workshop_voices_clone_upload_post"},"Body_upload_document_v1_workshop_documents_upload_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_document_v1_workshop_documents_upload_post"},"Body_upload_input_v1_video_inputs_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_input_v1_video_inputs_post"},"Body_upload_reference_image_v1_admin_ic_library__external_id__upload_reference_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_reference_image_v1_admin_ic_library__external_id__upload_reference_post"},"Body_upload_reference_v1_infinite_character_upload_reference_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_reference_v1_infinite_character_upload_reference_post"},"Body_voices_audio_to_prompt_v1_workshop_voices_audio_to_prompt_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_voices_audio_to_prompt_v1_workshop_voices_audio_to_prompt_post"},"CalendarCreateEventRequest":{"properties":{"summary":{"type":"string","title":"Summary"},"start":{"type":"string","title":"Start"},"end":{"type":"string","title":"End"},"calendar_id":{"type":"string","title":"Calendar Id","default":"primary"},"description":{"type":"string","title":"Description","default":""},"location":{"type":"string","title":"Location","default":""},"attendees":{"items":{"type":"string"},"type":"array","title":"Attendees","default":[]},"all_day":{"type":"boolean","title":"All Day","default":false}},"type":"object","required":["summary","start","end"],"title":"CalendarCreateEventRequest"},"CalendarEventsRequest":{"properties":{"calendar_id":{"type":"string","title":"Calendar Id","default":"primary"},"time_min":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Min"},"time_max":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Max"},"limit":{"type":"integer","title":"Limit","default":10}},"type":"object","title":"CalendarEventsRequest"},"CallRequest":{"properties":{"user_id":{"type":"integer","title":"User Id"},"agent_slug":{"type":"string","title":"Agent Slug"},"message":{"type":"string","title":"Message"}},"type":"object","required":["user_id","agent_slug","message"],"title":"CallRequest"},"CancelResponse":{"properties":{"request":{"$ref":"#/components/schemas/RequestResponse"},"refunded":{"type":"boolean","title":"Refunded"},"credits_remaining":{"type":"number","title":"Credits Remaining"}},"type":"object","required":["request","refunded","credits_remaining"],"title":"CancelResponse"},"CanvasCompileRequest":{"properties":{"messages":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Messages"},"canvas_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Canvas Id"}},"type":"object","required":["messages"],"title":"CanvasCompileRequest","description":"Request to compile a canvas from a conversation."},"CanvasIterateRequest":{"properties":{"text":{"type":"string","maxLength":2000,"minLength":2,"title":"Text"},"history":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"History"}},"type":"object","required":["text"],"title":"CanvasIterateRequest"},"CanvasRenderRequest":{"properties":{"data":{"additionalProperties":true,"type":"object","title":"Data"}},"type":"object","required":["data"],"title":"CanvasRenderRequest","description":"Request to render a canvas with custom data."},"CanvasSaveRequest":{"properties":{"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"prompt_markdown":{"type":"string","title":"Prompt Markdown"},"html_template":{"type":"string","title":"Html Template"},"data_schema":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Data Schema"},"interactive_fields":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Interactive Fields"},"sample_data":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Sample Data"},"visibility":{"type":"string","title":"Visibility","default":"private"}},"type":"object","required":["name","prompt_markdown","html_template"],"title":"CanvasSaveRequest","description":"Request to create/update a canvas template."},"CanvasSelectVariantRequest":{"properties":{"variant_idx":{"type":"integer","title":"Variant Idx"},"preferred_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preferred Mode"}},"type":"object","required":["variant_idx"],"title":"CanvasSelectVariantRequest"},"CaseCreate":{"properties":{"series_slug":{"type":"string","title":"Series Slug","default":"seven-arrows"}},"type":"object","title":"CaseCreate"},"CaseUpdate":{"properties":{"style_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Style Id"},"decor_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Decor Mode"},"decor_instruction":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Decor Instruction"},"decor_ref_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Decor Ref Ids"},"shot_distance_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Shot Distance Key"},"shot_angle_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Shot Angle Key"},"characters":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Characters"},"objects":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Objects"},"expected_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expected Text"},"raw_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Raw Prompt"},"quality":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Quality"},"format_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Format Key"}},"type":"object","title":"CaseUpdate"},"CharacterCreate":{"properties":{"name":{"type":"string","title":"Name"},"gender":{"type":"string","title":"Gender"},"speciality":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Speciality"},"personality_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Personality Text"},"style_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Style Text"},"backstory_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Backstory Text"},"relationship_dynamics":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Relationship Dynamics"},"intimacy_cap":{"type":"string","title":"Intimacy Cap","default":"emotional"},"character_type":{"type":"string","title":"Character Type","default":"fictional"},"visibility":{"type":"string","title":"Visibility","default":"private"},"theme":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Theme"}},"type":"object","required":["name","gender"],"title":"CharacterCreate"},"CharacterDetailResponse":{"properties":{"external_id":{"type":"string","title":"External Id"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description_public":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description Public"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"author_display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Author Display Name"},"preview_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preview Url","description":"Signed URL, 1h TTL"},"average_rating":{"type":"number","title":"Average Rating"},"rating_count":{"type":"integer","title":"Rating Count"},"download_count":{"type":"integer","title":"Download Count"},"like_count":{"type":"integer","title":"Like Count","default":0},"dislike_count":{"type":"integer","title":"Dislike Count","default":0},"i_liked":{"type":"boolean","title":"I Liked","default":false},"i_disliked":{"type":"boolean","title":"I Disliked","default":false},"approved_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Approved At"},"pricing_tier":{"type":"string","title":"Pricing Tier","description":"'free' = any authenticated user, 'subscriber' = active plan required","default":"subscriber"},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt"},"render_urls":{"additionalProperties":true,"type":"object","title":"Render Urls","description":"All available render signed URLs (clean/standard/custom/...)"},"representation_image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Representation Image Url","description":"Signed URL of the UE5 in-engine capture (1h TTL)"},"augmented_preview_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Augmented Preview Url","description":"Signed URL of the AI-augmented preview (1h TTL)"},"my_rating":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"My Rating","description":"Stars 1-5 given by current user, null if never rated"},"is_owner":{"type":"boolean","title":"Is Owner","description":"True when the requesting user authored this character (matches author_user_id or user_id). The UI uses this flag to hide the rate-this-character section: the backend already enforces a 400 on /rate for the owner, but we want the form to disappear instead of failing on submit.","default":false}},"type":"object","required":["external_id","title","description_public","tags","author_display_name","average_rating","rating_count","download_count","approved_at","prompt"],"title":"CharacterDetailResponse"},"CharacterUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"gender":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gender"},"speciality":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Speciality"},"personality_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Personality Text"},"style_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Style Text"},"backstory_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Backstory Text"},"relationship_dynamics":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Relationship Dynamics"},"theme":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Theme"},"portrait_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Portrait Url"},"default_image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default Image Url"},"video_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Video Url"},"memory_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Memory Enabled"},"relationship_dynamics_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Relationship Dynamics Enabled"},"intimacy_cap":{"anyOf":[{"type":"string","pattern":"^(formal|friendly|emotional|intimate|unrestricted)$"},{"type":"null"}],"title":"Intimacy Cap"},"character_type":{"anyOf":[{"type":"string","pattern":"^(fictional|digital_double)$"},{"type":"null"}],"title":"Character Type"},"visibility":{"anyOf":[{"type":"string","pattern":"^(private|unlisted|public)$"},{"type":"null"}],"title":"Visibility"},"status":{"anyOf":[{"type":"string","pattern":"^(draft|production|archived)$"},{"type":"null"}],"title":"Status"},"forced_language":{"anyOf":[{"type":"string","pattern":"^[a-z]{2}(-[A-Z]{2})?$"},{"type":"null"}],"title":"Forced Language","description":"Lock the character to one language; null follows the user."},"relationship_susceptibility_score":{"anyOf":[{"type":"integer","maximum":100.0,"minimum":0.0},{"type":"null"}],"title":"Relationship Susceptibility Score","description":"How much exchanges move the relationship. 50 is normal."},"initial_relationship":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Initial Relationship","description":"Where a new user starts with this character, per dimension."},"is_proactive":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Proactive","description":"Whether the character looks for occasions to write first. Capped server-side at two an hour per subscriber; a requested reminder is delivered regardless of this flag."}},"type":"object","title":"CharacterUpdate"},"CheckoutRequest":{"properties":{"pack_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Pack Id"},"pack_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pack Slug"},"success_url":{"type":"string","title":"Success Url"},"cancel_url":{"type":"string","title":"Cancel Url"},"currency":{"type":"string","title":"Currency","default":"EUR"},"promo_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Promo Code"}},"type":"object","required":["success_url","cancel_url"],"title":"CheckoutRequest"},"ClaimResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"request":{"anyOf":[{"$ref":"#/components/schemas/PendingRequest"},{"type":"null"}]},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"}},"type":"object","required":["success"],"title":"ClaimResponse"},"CloneScriptRequest":{"properties":{"character_name":{"type":"string","maxLength":120,"title":"Character Name","default":""},"character_tagline":{"type":"string","maxLength":400,"title":"Character Tagline","default":""}},"type":"object","title":"CloneScriptRequest"},"Command":{"properties":{"action":{"type":"string","title":"Action"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"payload":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Payload"}},"type":"object","required":["action"],"title":"Command"},"CompileCharacterRequest":{"properties":{"messages":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Messages"},"current_sheet":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Current Sheet"},"reference_images":{"items":{"type":"string"},"type":"array","title":"Reference Images","default":[]},"language":{"type":"string","title":"Language","default":"fr"}},"type":"object","required":["messages"],"title":"CompileCharacterRequest","description":"Compile a conversation (with optional reference images) into a character sheet."},"CompileLifeRequest":{"properties":{"messages":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Messages"},"character_sheet":{"additionalProperties":true,"type":"object","title":"Character Sheet"},"current_life":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Current Life"}},"type":"object","required":["messages","character_sheet"],"title":"CompileLifeRequest","description":"Compile / update the life sheet from a conversation."},"CompileRequest":{"properties":{"messages":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Messages"},"skill_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Skill Id"}},"type":"object","required":["messages"],"title":"CompileRequest","description":"Request to compile a skill from a conversation."},"CompileStep4Request":{"properties":{"messages":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Messages"},"character_sheet":{"additionalProperties":true,"type":"object","title":"Character Sheet"},"active_capabilities":{"items":{"type":"string"},"type":"array","title":"Active Capabilities","default":[]},"current_skills":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Current Skills","default":[]},"active_canvas_skill_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Active Canvas Skill Id"}},"type":"object","required":["messages","character_sheet"],"title":"CompileStep4Request","description":"Compile / route the user's chat message at step 4 (capabilities & skills).\nReturns selective updates: capability_toggles, new_skill, skill_to_remove_id,\nor canvas_update."},"CompleteBody":{"properties":{"file_keys":{"additionalProperties":{"type":"string"},"type":"object","title":"File Keys"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"force_revive":{"type":"boolean","title":"Force Revive","default":false}},"type":"object","required":["file_keys"],"title":"CompleteBody"},"CompleteResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"external_id":{"type":"string","title":"External Id"},"files":{"additionalProperties":{"type":"string"},"type":"object","title":"Files"}},"type":"object","required":["external_id","files"],"title":"CompleteResponse"},"ConfidentialityBody":{"properties":{"level":{"type":"string","enum":["low","medium","high"],"title":"Level"}},"type":"object","required":["level"],"title":"ConfidentialityBody"},"ConfigUpdate":{"properties":{"key":{"type":"string","title":"Key"},"value":{"type":"string","title":"Value"}},"type":"object","required":["key","value"],"title":"ConfigUpdate"},"ConnectorCreate":{"properties":{"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"connector_type":{"type":"string","title":"Connector Type","default":"api"},"config":{"additionalProperties":true,"type":"object","title":"Config","default":{}},"requires_oauth":{"type":"boolean","title":"Requires Oauth","default":false},"oauth_provider":{"type":"string","title":"Oauth Provider","default":""},"oauth_scopes":{"items":{"type":"string"},"type":"array","title":"Oauth Scopes","default":[]}},"type":"object","required":["slug","name","description"],"title":"ConnectorCreate"},"ConsoleLogBatch":{"properties":{"messages":{"items":{"$ref":"#/components/schemas/ConsoleLogEntry"},"type":"array","title":"Messages"}},"type":"object","required":["messages"],"title":"ConsoleLogBatch"},"ConsoleLogEntry":{"properties":{"ts":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ts"},"text":{"type":"string","title":"Text"}},"type":"object","required":["text"],"title":"ConsoleLogEntry"},"ConversationStateOverride":{"properties":{"agent_slug":{"type":"string","title":"Agent Slug"},"user_id":{"type":"integer","title":"User Id"},"mood":{"type":"number","title":"Mood"},"energy":{"type":"number","title":"Energy"}},"type":"object","required":["agent_slug","user_id","mood","energy"],"title":"ConversationStateOverride"},"CreateBatchRequest":{"properties":{"items":{"items":{"$ref":"#/components/schemas/CreateLoopRequest"},"type":"array","maxItems":200,"minItems":1,"title":"Items"}},"type":"object","required":["items"],"title":"CreateBatchRequest"},"CreateEntryRequest":{"properties":{"user_id":{"type":"integer","title":"User Id"},"agent_id":{"type":"integer","title":"Agent Id"},"content":{"type":"string","title":"Content"},"category":{"type":"string","title":"Category","default":"preference"},"importance":{"type":"integer","title":"Importance","default":3},"source":{"type":"string","title":"Source","default":"user_direct"},"confidence":{"type":"number","title":"Confidence","default":0.9},"tags":{"items":{"type":"string"},"type":"array","title":"Tags","default":[]},"keywords_native":{"type":"string","title":"Keywords Native","default":""},"keywords_en":{"type":"string","title":"Keywords En","default":""}},"type":"object","required":["user_id","agent_id","content"],"title":"CreateEntryRequest","description":"Manually create a memory entry (for seeding/testing)."},"CreateInstanceRequest":{"properties":{"agent_slug":{"type":"string","title":"Agent Slug"},"skill_slug":{"type":"string","title":"Skill Slug"},"title":{"type":"string","title":"Title","default":""},"data":{"additionalProperties":true,"type":"object","title":"Data","default":{}},"settings":{"additionalProperties":true,"type":"object","title":"Settings","default":{}}},"type":"object","required":["agent_slug","skill_slug"],"title":"CreateInstanceRequest"},"CreateLoopRequest":{"properties":{"portrait_url":{"type":"string","title":"Portrait Url","description":"Public URL to the source image (any aspect)."},"mode":{"type":"string","pattern":"^(FAST|STANDARD|PREMIUM)$","title":"Mode","default":"FAST"},"output_aspect":{"type":"string","pattern":"^(auto|16:9|9:16|1:1|4:3|3:4)$","title":"Output Aspect","description":"'auto' detects the source ratio and keeps it. Force with '16:9', '9:16', '1:1', '4:3', '3:4'.","default":"auto"},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt"},"end_frame_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Frame Url"},"frames":{"type":"integer","maximum":97.0,"minimum":33.0,"title":"Frames","default":65},"seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed"}},"type":"object","required":["portrait_url"],"title":"CreateLoopRequest"},"CreateRequestBody":{"properties":{"prompt":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Prompt"},"reference_images":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":2},{"type":"null"}],"title":"Reference Images","description":"Up to 2 references: URLs returned by /upload-reference, or inline data URIs (jpeg, png, webp; 8 MB each)"},"params":{"anyOf":[{"$ref":"#/components/schemas/RequestParams"},{"type":"null"}]},"is_public":{"type":"boolean","title":"Is Public","default":false},"version":{"type":"string","pattern":"^(v1|v2)$","title":"Version","description":"Pipeline that serves the request: v1 (002) or v2 (003)","default":"v1"},"grooms":{"type":"boolean","title":"Grooms","description":"Also generate the hair grooms (v2 only)","default":false},"quality":{"type":"string","pattern":"^(fast|standard|pro)$","title":"Quality","description":"Quality level of the v2 line: fast, standard or pro (v2 only)","default":"standard"}},"type":"object","title":"CreateRequestBody"},"CreateResponse":{"properties":{"request":{"$ref":"#/components/schemas/RequestResponse"},"credits_remaining":{"type":"number","title":"Credits Remaining"},"shadow_request":{"anyOf":[{"$ref":"#/components/schemas/RequestResponse"},{"type":"null"}]}},"type":"object","required":["request","credits_remaining"],"title":"CreateResponse"},"CreateSkillRequest":{"properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description","default":""},"category":{"type":"string","title":"Category","default":"general"},"pipeline":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Pipeline"},"triggers":{"items":{"type":"string"},"type":"array","title":"Triggers","default":[]},"canvas_template_slug":{"type":"string","title":"Canvas Template Slug","default":""}},"type":"object","required":["name","pipeline"],"title":"CreateSkillRequest"},"CreateTaskRequest":{"properties":{"agent_slug":{"type":"string","title":"Agent Slug"},"skill_slug":{"type":"string","title":"Skill Slug"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"input_data":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Input Data"},"schedule":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Schedule"}},"type":"object","required":["agent_slug","skill_slug"],"title":"CreateTaskRequest"},"CreateV1SkillRequest":{"properties":{"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"content_markdown":{"type":"string","title":"Content Markdown"},"workflow_json":{"additionalProperties":true,"type":"object","title":"Workflow Json"},"is_interactive":{"type":"boolean","title":"Is Interactive","default":false},"trigger_modes":{"items":{"type":"string"},"type":"array","title":"Trigger Modes","default":["manual"]},"canvas_template_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Canvas Template Id"},"visibility":{"type":"string","title":"Visibility","default":"private"}},"type":"object","required":["name","content_markdown","workflow_json"],"title":"CreateV1SkillRequest","description":"Create a skill from a compiler result (workflow_json + content_markdown)."},"CreatorMessageReply":{"properties":{"reply_content":{"type":"string","maxLength":2000,"minLength":2,"title":"Reply Content"}},"type":"object","required":["reply_content"],"title":"CreatorMessageReply"},"CreatorMessageRequest":{"properties":{"content":{"type":"string","maxLength":2000,"minLength":2,"title":"Content"}},"type":"object","required":["content"],"title":"CreatorMessageRequest"},"CreditAdjustment":{"properties":{"amount":{"type":"integer","title":"Amount"},"reason":{"type":"string","title":"Reason","default":""}},"type":"object","required":["amount"],"title":"CreditAdjustment"},"DeleteRunResponse":{"properties":{"external_id":{"type":"string","title":"External Id"},"r2_objects_deleted":{"type":"integer","title":"R2 Objects Deleted"}},"type":"object","required":["external_id","r2_objects_deleted"],"title":"DeleteRunResponse"},"DownloadResponse":{"properties":{"url":{"type":"string","title":"Url","description":"Signed R2 URL (1h TTL)"},"filename":{"type":"string","title":"Filename"},"expires_in_seconds":{"type":"integer","title":"Expires In Seconds"}},"type":"object","required":["url","filename","expires_in_seconds"],"title":"DownloadResponse"},"EchoConsumeRequest":{"properties":{"echo_id":{"type":"integer","title":"Echo Id"}},"type":"object","required":["echo_id"],"title":"EchoConsumeRequest"},"EchoRequest":{"properties":{"conversation_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Conversation Id"},"agent_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Slug"},"partial_text":{"type":"string","title":"Partial Text"},"target_words":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Target Words"}},"type":"object","required":["partial_text"],"title":"EchoRequest","description":"Body for POST /talk/echo.\n\nEither conversation_id (preferred) or agent_slug must be provided.\nIf only agent_slug is given, we resolve the active conversation\nof the authenticated user with that agent."},"EligibleAuthor":{"properties":{"user_id":{"type":"integer","title":"User Id"},"display_name":{"type":"string","title":"Display Name"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"}},"type":"object","required":["user_id","display_name"],"title":"EligibleAuthor"},"EligibleAuthorsResponse":{"properties":{"authors":{"items":{"$ref":"#/components/schemas/EligibleAuthor"},"type":"array","title":"Authors"}},"type":"object","required":["authors"],"title":"EligibleAuthorsResponse"},"EntryCreate":{"properties":{"universe_id":{"type":"integer","title":"Universe Id"},"agent_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Agent Id"},"entry_type":{"type":"string","title":"Entry Type","default":"lore"},"category":{"type":"string","title":"Category","default":"daily_life"},"title":{"type":"string","title":"Title"},"content":{"type":"string","title":"Content"},"summary":{"type":"string","title":"Summary","default":""},"importance":{"type":"integer","title":"Importance","default":3},"keywords_native":{"type":"string","title":"Keywords Native","default":""},"keywords_en":{"type":"string","title":"Keywords En","default":""},"valid_from":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Valid From"},"valid_until":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Valid Until"},"injection_text":{"type":"string","title":"Injection Text","default":""},"parent_entry_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parent Entry Id"}},"type":"object","required":["universe_id","title","content"],"title":"EntryCreate"},"EtaStatsResponse":{"properties":{"period":{"type":"string","title":"Period"},"stages":{"items":{"$ref":"#/components/schemas/StageEtaStats"},"type":"array","title":"Stages"}},"type":"object","required":["period","stages"],"title":"EtaStatsResponse"},"ExpressCreateRequest":{"properties":{"prompt":{"type":"string","maxLength":2000,"minLength":4,"title":"Prompt"},"agent_type":{"type":"string","pattern":"^(character|twin)$","title":"Agent Type","description":"character = perso fictif ; twin = double virtuel","default":"character"},"photo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Photo Url","description":"URL R2 d'une photo de référence (optionnelle)"},"voice_mode":{"type":"string","pattern":"^(auto|clone)$","title":"Voice Mode","description":"auto = choix catalog ; clone = utiliser clone_audio_url","default":"auto"},"voice_clone_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Clone Url","description":"R2 URL du clone audio (mode 'clone')"},"voice_clone_script":{"anyOf":[{"type":"string","maxLength":3000},{"type":"null"}],"title":"Voice Clone Script","description":"Transcript exact du clone (requis avec voice_clone_url)"},"doc_urls":{"items":{"type":"string"},"type":"array","title":"Doc Urls","description":"URLs R2 des documents joints (futur)"},"language":{"type":"string","maxLength":5,"minLength":2,"title":"Language","default":"fr"}},"type":"object","required":["prompt"],"title":"ExpressCreateRequest","description":"Mode Express : création de personnage en une seule passe.\n\nLe pipeline tourne en cascade côté serveur (compile → portrait → voice →\nlife → finalize) et streame sa progression via SSE. À la fin, l'agent\nest créé en `visibility=private` et l'utilisateur est emmené vers un\nécran récap (Discuter / Modifier / Refaire)."},"ExtractRequest":{"properties":{"user_message":{"type":"string","title":"User Message"},"agent_response":{"type":"string","title":"Agent Response"},"user_id":{"type":"integer","title":"User Id"},"agent_id":{"type":"integer","title":"Agent Id"},"agent_name":{"type":"string","title":"Agent Name","default":""},"agent_speciality":{"type":"string","title":"Agent Speciality","default":""}},"type":"object","required":["user_message","agent_response","user_id","agent_id"],"title":"ExtractRequest","description":"Test extraction on a single exchange."},"FailBody":{"properties":{"error_message":{"type":"string","maxLength":2000,"title":"Error Message"},"error_code":{"type":"string","maxLength":40,"title":"Error Code","default":"INTERNAL_ERROR"}},"type":"object","required":["error_message"],"title":"FailBody"},"FailResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"external_id":{"type":"string","title":"External Id"},"refunded":{"type":"boolean","title":"Refunded"}},"type":"object","required":["external_id","refunded"],"title":"FailResponse"},"FinalizeRequest":{"properties":{"visibility":{"type":"string","pattern":"^(private|unlisted|public)$","title":"Visibility"},"character_kind":{"type":"string","pattern":"^(personal|instructor)$","title":"Character Kind","default":"personal"},"categories":{"items":{"type":"string"},"type":"array","title":"Categories"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","required":["visibility"],"title":"FinalizeRequest"},"FrameBody":{"properties":{"t":{"type":"number","maximum":60.0,"minimum":0.0,"title":"T","description":"Seconds from the start of the clip.","default":0.0}},"type":"object","title":"FrameBody"},"GdprDeleteRequest":{"properties":{"confirm":{"type":"string","title":"Confirm"},"reason":{"type":"string","title":"Reason","default":""}},"type":"object","required":["confirm"],"title":"GdprDeleteRequest"},"GenerateCharacterImageRequest":{"properties":{"character_sheet":{"additionalProperties":true,"type":"object","title":"Character Sheet"},"reference_images":{"items":{"type":"string"},"type":"array","title":"Reference Images","default":[]},"agent_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Agent Id"},"extra_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Extra Prompt"},"messages":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Messages","default":[]},"quality":{"type":"string","title":"Quality","default":"standard"}},"type":"object","required":["character_sheet"],"title":"GenerateCharacterImageRequest","description":"Generate a three-quarter body image of the character from its sheet."},"GenerateLoopRequest":{"properties":{"state":{"type":"string","title":"State"},"mood":{"type":"string","title":"Mood","default":"neutral"},"source_media_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Source Media Id"}},"type":"object","required":["state"],"title":"GenerateLoopRequest"},"GeneratePortraitRequest":{"properties":{"prompt":{"type":"string","title":"Prompt"},"reference_image_base64":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reference Image Base64"}},"type":"object","required":["prompt"],"title":"GeneratePortraitRequest"},"GenerateResponse":{"properties":{"html":{"type":"string","title":"Html"},"composition":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Composition"},"style_prompt":{"type":"string","title":"Style Prompt"},"style_spec":{"additionalProperties":true,"type":"object","title":"Style Spec"},"cost_usd":{"type":"number","title":"Cost Usd"},"credits_debited":{"type":"number","title":"Credits Debited"},"credits_remaining":{"type":"number","title":"Credits Remaining"},"elapsed_ms":{"type":"integer","title":"Elapsed Ms"}},"type":"object","required":["html","composition","style_prompt","style_spec","cost_usd","credits_debited","credits_remaining","elapsed_ms"],"title":"GenerateResponse"},"GenerationCreate":{"properties":{"parent_generation_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parent Generation Id"}},"type":"object","title":"GenerationCreate"},"GiftCredits":{"properties":{"amount":{"type":"integer","title":"Amount"},"note":{"type":"string","title":"Note"},"send_email":{"type":"boolean","title":"Send Email","default":true}},"type":"object","required":["amount","note"],"title":"GiftCredits"},"GreetingRequest":{"properties":{"agent_slug":{"type":"string","title":"Agent Slug"},"context":{"type":"string","title":"Context","default":"reconnection"},"language":{"type":"string","title":"Language","default":"fr"},"audio_output":{"type":"boolean","title":"Audio Output","default":false}},"type":"object","required":["agent_slug"],"title":"GreetingRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HeartbeatPayload":{"properties":{"node_id":{"type":"string","maxLength":40,"minLength":1,"title":"Node Id"},"machine_status":{"type":"string","pattern":"^(dev|prod)$","title":"Machine Status","default":"prod"},"account":{"type":"string","title":"Account","default":""},"current_state":{"type":"string","title":"Current State","description":"DEV | PROD-VOX | DRAINING-VOX | PROD-CHAR | DRAINING-CHAR | BOOTING"},"services":{"$ref":"#/components/schemas/HeartbeatServices","default":{}},"system":{"$ref":"#/components/schemas/HeartbeatSystem","default":{"hostname":"","vram_used_gb":0.0,"vram_total_gb":0.0,"characters_pending":-1,"voxcpm_active_sessions":0}},"timestamp":{"type":"integer","title":"Timestamp","description":"Unix seconds"}},"type":"object","required":["node_id","current_state","timestamp"],"title":"HeartbeatPayload"},"HeartbeatResponse":{"properties":{"ack":{"type":"boolean","title":"Ack","default":true},"server_time":{"type":"integer","title":"Server Time"},"commands":{"items":{"$ref":"#/components/schemas/Command"},"type":"array","title":"Commands","default":[]}},"type":"object","required":["server_time"],"title":"HeartbeatResponse"},"HeartbeatServiceCharacters":{"properties":{"running":{"type":"boolean","title":"Running","default":false},"processing":{"type":"boolean","title":"Processing","default":false},"current_request_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Request Id"},"current_stage_num":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Current Stage Num"},"current_stage_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Stage Name"}},"type":"object","title":"HeartbeatServiceCharacters"},"HeartbeatServiceSong":{"properties":{"running":{"type":"boolean","title":"Running","default":false},"processing":{"type":"boolean","title":"Processing","default":false},"current_job_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Job Id"},"current_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Mode"},"current_started_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Current Started At"}},"type":"object","title":"HeartbeatServiceSong"},"HeartbeatServiceUpscaler":{"properties":{"running":{"type":"boolean","title":"Running","default":false},"processing":{"type":"boolean","title":"Processing","default":false},"engines_loaded":{"type":"integer","title":"Engines Loaded","default":0},"current_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Mode"},"current_target":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Target"},"current_started_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Current Started At"}},"type":"object","title":"HeartbeatServiceUpscaler"},"HeartbeatServiceVideo":{"properties":{"running":{"type":"boolean","title":"Running","default":false},"processing":{"type":"boolean","title":"Processing","default":false},"current_job_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Job Id"},"current_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Mode"},"current_aspect":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Aspect"},"current_started_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Current Started At"}},"type":"object","title":"HeartbeatServiceVideo"},"HeartbeatServiceVoxCPM":{"properties":{"running":{"type":"boolean","title":"Running","default":false},"ready":{"type":"boolean","title":"Ready","default":false}},"type":"object","title":"HeartbeatServiceVoxCPM"},"HeartbeatServices":{"properties":{"voxcpm":{"anyOf":[{"$ref":"#/components/schemas/HeartbeatServiceVoxCPM"},{"type":"null"}]},"characters":{"anyOf":[{"$ref":"#/components/schemas/HeartbeatServiceCharacters"},{"type":"null"}]},"video":{"anyOf":[{"$ref":"#/components/schemas/HeartbeatServiceVideo"},{"type":"null"}]},"upscaler":{"anyOf":[{"$ref":"#/components/schemas/HeartbeatServiceUpscaler"},{"type":"null"}]},"song":{"anyOf":[{"$ref":"#/components/schemas/HeartbeatServiceSong"},{"type":"null"}]}},"type":"object","title":"HeartbeatServices"},"HeartbeatSystem":{"properties":{"hostname":{"type":"string","title":"Hostname","default":""},"vram_used_gb":{"type":"number","title":"Vram Used Gb","default":0},"vram_total_gb":{"type":"number","title":"Vram Total Gb","default":0},"characters_pending":{"type":"integer","title":"Characters Pending","default":-1},"voxcpm_active_sessions":{"type":"integer","title":"Voxcpm Active Sessions","default":0}},"type":"object","title":"HeartbeatSystem"},"HookSufficientRequest":{"properties":{"agent_slug":{"type":"string","title":"Agent Slug"},"conversation_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Conversation Id"},"user_message":{"type":"string","title":"User Message","default":""},"hook_text":{"type":"string","title":"Hook Text","default":""},"pre_analysis":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Pre Analysis"}},"type":"object","required":["agent_slug"],"title":"HookSufficientRequest"},"ImageStepRequest":{"properties":{"agent_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Agent Id"}},"type":"object","title":"ImageStepRequest"},"ImpersonateRequest":{"properties":{"user_id":{"type":"integer","title":"User Id"}},"type":"object","required":["user_id"],"title":"ImpersonateRequest"},"JudgeRequest":{"properties":{"agent_slug":{"type":"string","title":"Agent Slug"},"user_message":{"type":"string","title":"User Message"},"hook_text":{"type":"string","title":"Hook Text"},"analysis_service":{"type":"string","title":"Analysis Service","default":"none"},"analysis_draft_answer":{"type":"string","title":"Analysis Draft Answer","default":""}},"type":"object","required":["agent_slug","user_message","hook_text"],"title":"JudgeRequest"},"KeepVideoBody":{"properties":{"job_id":{"type":"string","maxLength":36,"minLength":1,"title":"Job Id"}},"type":"object","required":["job_id"],"title":"KeepVideoBody"},"LatencyReport":{"properties":{"agent_slug":{"type":"string","title":"Agent Slug"},"text":{"type":"string","title":"Text"},"platform":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Platform"},"ptt_release_iso":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ptt Release Iso"},"stream_start_iso":{"type":"string","title":"Stream Start Iso"},"first_chunk_iso":{"type":"string","title":"First Chunk Iso"},"playback_start_iso":{"type":"string","title":"Playback Start Iso"},"voxcpm_ttfa_ms":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Voxcpm Ttfa Ms"},"stream_player_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stream Player Error"}},"type":"object","required":["agent_slug","text","stream_start_iso","first_chunk_iso","playback_start_iso"],"title":"LatencyReport"},"LevelCreate":{"properties":{"tree_id":{"type":"integer","title":"Tree Id"},"level_number":{"type":"integer","title":"Level Number"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description","default":""},"unlock_condition":{"type":"string","title":"Unlock Condition","default":"all_required"}},"type":"object","required":["tree_id","level_number","name"],"title":"LevelCreate"},"LibraryActionResponse":{"properties":{"external_id":{"type":"string","title":"External Id"},"public_status":{"type":"string","title":"Public Status"},"pricing_tier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pricing Tier"},"author_user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Author User Id"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"}},"type":"object","required":["external_id","public_status"],"title":"LibraryActionResponse"},"LibraryCard":{"properties":{"external_id":{"type":"string","title":"External Id"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description_public":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description Public"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"author_display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Author Display Name"},"preview_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preview Url","description":"Signed URL, 1h TTL"},"average_rating":{"type":"number","title":"Average Rating"},"rating_count":{"type":"integer","title":"Rating Count"},"download_count":{"type":"integer","title":"Download Count"},"like_count":{"type":"integer","title":"Like Count","default":0},"dislike_count":{"type":"integer","title":"Dislike Count","default":0},"i_liked":{"type":"boolean","title":"I Liked","default":false},"i_disliked":{"type":"boolean","title":"I Disliked","default":false},"approved_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Approved At"},"pricing_tier":{"type":"string","title":"Pricing Tier","description":"'free' = any authenticated user, 'subscriber' = active plan required","default":"subscriber"}},"type":"object","required":["external_id","title","description_public","tags","author_display_name","average_rating","rating_count","download_count","approved_at"],"title":"LibraryCard"},"LibraryListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/LibraryCard"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"offset":{"type":"integer","title":"Offset"},"limit":{"type":"integer","title":"Limit"}},"type":"object","required":["items","total","offset","limit"],"title":"LibraryListResponse"},"LifeEventCreate":{"properties":{"event_type":{"type":"string","title":"Event Type"},"title":{"type":"string","title":"Title"},"content":{"type":"string","title":"Content"},"emotional_impact":{"type":"string","title":"Emotional Impact","default":"neutral"},"intensity":{"type":"number","title":"Intensity","default":0.5},"happens_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Happens At"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"is_recurring":{"type":"boolean","title":"Is Recurring","default":false},"recurrence_cron":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recurrence Cron"},"affects_mood":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Affects Mood"},"affects_energy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Affects Energy"},"injection_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Injection Text"},"status":{"type":"string","title":"Status","default":"scheduled"}},"type":"object","required":["event_type","title","content"],"title":"LifeEventCreate"},"LinkAgentConnector":{"properties":{"agent_id":{"type":"integer","title":"Agent Id"},"connector_slug":{"type":"string","title":"Connector Slug"}},"type":"object","required":["agent_id","connector_slug"],"title":"LinkAgentConnector"},"LinkAgentSkill":{"properties":{"agent_id":{"type":"integer","title":"Agent Id"},"skill_slug":{"type":"string","title":"Skill Slug"},"is_default":{"type":"boolean","title":"Is Default","default":true}},"type":"object","required":["agent_id","skill_slug"],"title":"LinkAgentSkill"},"LinkSkillConnector":{"properties":{"skill_slug":{"type":"string","title":"Skill Slug"},"connector_slug":{"type":"string","title":"Connector Slug"},"is_required":{"type":"boolean","title":"Is Required","default":false}},"type":"object","required":["skill_slug","connector_slug"],"title":"LinkSkillConnector"},"ListResponse":{"properties":{"requests":{"items":{"$ref":"#/components/schemas/RequestResponse"},"type":"array","title":"Requests"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"}},"type":"object","required":["requests","total","limit","offset"],"title":"ListResponse"},"MediaCreate":{"properties":{"media_type":{"type":"string","title":"Media Type"},"state":{"type":"string","title":"State","default":"idle"},"variant":{"type":"string","title":"Variant","default":"neutral"},"url":{"type":"string","title":"Url"},"thumbnail_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thumbnail Url"},"duration_ms":{"type":"integer","title":"Duration Ms","default":0},"is_default":{"type":"boolean","title":"Is Default","default":false},"conditions":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Conditions"},"sort_order":{"type":"integer","title":"Sort Order","default":0}},"type":"object","required":["media_type","url"],"title":"MediaCreate"},"MediaUpdate":{"properties":{"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"thumbnail_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thumbnail Url"},"duration_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duration Ms"},"is_default":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Default"},"conditions":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Conditions"},"sort_order":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sort Order"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},"type":"object","title":"MediaUpdate"},"ModerationActionResponse":{"properties":{"external_id":{"type":"string","title":"External Id"},"public_status":{"type":"string","title":"Public Status"},"pricing_tier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pricing Tier"}},"type":"object","required":["external_id","public_status"],"title":"ModerationActionResponse"},"ModerationItem":{"properties":{"external_id":{"type":"string","title":"External Id"},"author_user_id":{"type":"integer","title":"Author User Id"},"author_display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Author Display Name"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description_public":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description Public"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt"},"submitted_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Submitted At"},"preview_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preview Url"}},"type":"object","required":["external_id","author_user_id","author_display_name","title","description_public","tags","prompt","submitted_at","preview_url"],"title":"ModerationItem"},"ModerationQueueResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ModerationItem"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"offset":{"type":"integer","title":"Offset"},"limit":{"type":"integer","title":"Limit"}},"type":"object","required":["items","total","offset","limit"],"title":"ModerationQueueResponse"},"ModifyRequest":{"properties":{"modify_prompt":{"type":"string","maxLength":2000,"minLength":2,"title":"Modify Prompt"}},"type":"object","required":["modify_prompt"],"title":"ModifyRequest"},"ModifyResponse":{"properties":{"session_id":{"type":"integer","title":"Session Id"},"html":{"type":"string","title":"Html"},"composition":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Composition"},"style_spec":{"additionalProperties":true,"type":"object","title":"Style Spec"},"action_applied":{"type":"string","title":"Action Applied"},"action_reason":{"type":"string","title":"Action Reason"},"regen_consumed":{"type":"boolean","title":"Regen Consumed"},"regens_used":{"type":"integer","title":"Regens Used"},"regens_remaining":{"type":"integer","title":"Regens Remaining"},"cost_usd":{"type":"number","title":"Cost Usd"},"credits_remaining":{"type":"number","title":"Credits Remaining"},"elapsed_ms":{"type":"integer","title":"Elapsed Ms"}},"type":"object","required":["session_id","html","composition","style_spec","action_applied","action_reason","regen_consumed","regens_used","regens_remaining","cost_usd","credits_remaining","elapsed_ms"],"title":"ModifyResponse"},"NoOpClassifyRequest":{"properties":{"text":{"type":"string","maxLength":400,"minLength":1,"title":"Text"},"last_assistant_message":{"anyOf":[{"type":"string","maxLength":400},{"type":"null"}],"title":"Last Assistant Message"}},"type":"object","required":["text"],"title":"NoOpClassifyRequest"},"NodeSnapshot":{"properties":{"node_id":{"type":"string","title":"Node Id"},"last_heartbeat_s_ago":{"type":"number","title":"Last Heartbeat S Ago"},"state":{"additionalProperties":true,"type":"object","title":"State"}},"type":"object","required":["node_id","last_heartbeat_s_ago","state"],"title":"NodeSnapshot"},"NotifyAuthorizedRequest":{"properties":{"connector_slug":{"type":"string","title":"Connector Slug"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes","default":[]}},"type":"object","required":["connector_slug"],"title":"NotifyAuthorizedRequest"},"OAuthRequest":{"properties":{"provider":{"type":"string","title":"Provider"},"signup":{"type":"boolean","title":"Signup","default":true},"id_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Token"},"access_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access Token"},"code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"},"redirect_uri":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Redirect Uri"}},"type":"object","required":["provider"],"title":"OAuthRequest","description":"Body for /v1/auth/oauth.\n\nThree flow variants are supported:\n  - provider=\"google\" + id_token            (mobile/web after Google Sign-In)\n  - provider=\"google\" + access_token        (legacy / Google JS lib path)\n  - provider=\"google_code\" + code + redirect_uri\n        Used by the UE5 desktop plugin: it captures the OAuth authorization\n        code from a localhost loopback and asks the backend to exchange it.\n        The backend holds the desktop client_secret so it never ships in\n        the binary.\n  - provider=\"apple\" + id_token             (Sign in with Apple)"},"ObjectiveCreate":{"properties":{"agent_id":{"type":"integer","title":"Agent Id"},"level_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Level Id"},"trigger_type":{"type":"string","title":"Trigger Type","default":"progression"},"trigger_condition":{"additionalProperties":true,"type":"object","title":"Trigger Condition","default":{}},"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description","default":""},"injection_prompt":{"type":"string","title":"Injection Prompt"},"insistence":{"type":"integer","title":"Insistence","default":3},"is_required":{"type":"boolean","title":"Is Required","default":true},"priority":{"type":"integer","title":"Priority","default":1},"cooldown_minutes":{"type":"integer","title":"Cooldown Minutes","default":0}},"type":"object","required":["agent_id","title","injection_prompt"],"title":"ObjectiveCreate"},"OptInRequest":{"properties":{"agent_slug":{"type":"string","title":"Agent Slug"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"scheduled_enabled":{"type":"boolean","title":"Scheduled Enabled","default":false},"editorial_enabled":{"type":"boolean","title":"Editorial Enabled","default":true},"notify_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notify Type"}},"type":"object","required":["agent_slug"],"title":"OptInRequest"},"OtpRequestBody":{"properties":{"email":{"type":"string","title":"Email"},"lang":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lang"}},"type":"object","required":["email"],"title":"OtpRequestBody"},"OtpVerifyBody":{"properties":{"email":{"type":"string","title":"Email"},"code":{"type":"string","title":"Code"}},"type":"object","required":["email","code"],"title":"OtpVerifyBody"},"OverrideRequest":{"properties":{"user_id":{"type":"integer","title":"User Id"},"agent_id":{"type":"integer","title":"Agent Id"},"trust":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Trust"},"intimacy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Intimacy"},"tension":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Tension"},"attraction":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Attraction"},"respect":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Respect"},"familiarity":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Familiarity"},"rivalry":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Rivalry"}},"type":"object","required":["user_id","agent_id"],"title":"OverrideRequest"},"OwnRatingResponse":{"properties":{"rating":{"type":"integer","title":"Rating"},"comment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Comment"},"rated_at":{"type":"string","format":"date-time","title":"Rated At"}},"type":"object","required":["rating","rated_at"],"title":"OwnRatingResponse"},"PayPalCaptureRequest":{"properties":{"order_id":{"type":"string","title":"Order Id"}},"type":"object","required":["order_id"],"title":"PayPalCaptureRequest"},"PayPalOrderRequest":{"properties":{"pack_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Pack Id"},"pack_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pack Slug"},"currency":{"type":"string","title":"Currency","default":"EUR"},"promo_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Promo Code"}},"type":"object","title":"PayPalOrderRequest"},"PendingRequest":{"properties":{"request_id":{"type":"string","title":"Request Id"},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt"},"reference_images":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Reference Images"},"params":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Params"},"version":{"type":"string","title":"Version","default":"v1"},"grooms":{"type":"boolean","title":"Grooms","default":false},"quality":{"type":"string","title":"Quality","default":"standard"},"is_public":{"type":"boolean","title":"Is Public"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["request_id","prompt","reference_images","params","is_public","created_at"],"title":"PendingRequest"},"PendingResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"requests":{"items":{"$ref":"#/components/schemas/PendingRequest"},"type":"array","title":"Requests"}},"type":"object","required":["requests"],"title":"PendingResponse"},"Personality":{"properties":{"name":{"type":"string","title":"Name"},"tagline":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tagline"},"narrative":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Narrative"},"tone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tone"},"traits":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Traits"}},"type":"object","required":["name"],"title":"Personality"},"PhaseStat":{"properties":{"name":{"type":"string","title":"Name"},"sample_count":{"type":"integer","title":"Sample Count"},"p50_s":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"P50 S"},"p95_s":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"P95 S"}},"type":"object","required":["name","sample_count"],"title":"PhaseStat"},"PhaseStatsResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"period":{"type":"string","title":"Period"},"stages":{"items":{"$ref":"#/components/schemas/StagePhaseStats"},"type":"array","title":"Stages"}},"type":"object","required":["period","stages"],"title":"PhaseStatsResponse"},"PlanUpdate":{"properties":{"daily_credits":{"type":"integer","title":"Daily Credits"},"credits_limit":{"type":"integer","title":"Credits Limit"},"price_dollars":{"type":"number","title":"Price Dollars"},"is_active":{"type":"boolean","title":"Is Active"}},"type":"object","title":"PlanUpdate"},"PoolSnapshot":{"properties":{"nodes":{"items":{"$ref":"#/components/schemas/NodeSnapshot"},"type":"array","title":"Nodes"},"voxcpm_active_total":{"type":"integer","title":"Voxcpm Active Total"},"voxcpm_nodes_count":{"type":"integer","title":"Voxcpm Nodes Count"}},"type":"object","required":["nodes","voxcpm_active_total","voxcpm_nodes_count"],"title":"PoolSnapshot"},"PortalRequest":{"properties":{"return_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Return Url"}},"type":"object","title":"PortalRequest","description":"Body for the billing portal endpoint."},"PowerAction":{"properties":{"confirm":{"type":"string","title":"Confirm"},"force":{"type":"boolean","title":"Force","default":false},"off_seconds":{"type":"integer","title":"Off Seconds","default":10}},"type":"object","required":["confirm"],"title":"PowerAction"},"PriceUpdate":{"properties":{"model":{"type":"string","title":"Model"},"field":{"type":"string","title":"Field"},"value":{"type":"number","title":"Value"}},"type":"object","required":["model","field","value"],"title":"PriceUpdate"},"ProfileUpdate":{"properties":{"username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Username"},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bio"},"social_links":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Social Links"}},"type":"object","title":"ProfileUpdate"},"ProgressResponse":{"properties":{"external_id":{"type":"string","title":"External Id"},"status":{"type":"string","title":"Status"},"current_stage":{"type":"integer","title":"Current Stage"},"stage_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stage Name"},"progress_percent":{"type":"integer","title":"Progress Percent"},"phase_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phase Name"},"phase_progress_percent":{"type":"integer","title":"Phase Progress Percent"},"eta_remaining_s":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Eta Remaining S"},"has_fallback":{"type":"boolean","title":"Has Fallback"},"has_retry":{"type":"boolean","title":"Has Retry"},"queue_position":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Queue Position"}},"type":"object","required":["external_id","status","current_stage","stage_name","progress_percent","phase_name","phase_progress_percent","eta_remaining_s","has_fallback","has_retry"],"title":"ProgressResponse"},"ProjectBody":{"properties":{"name":{"type":"string","maxLength":80,"minLength":1,"title":"Name"}},"type":"object","required":["name"],"title":"ProjectBody"},"PublicTagsCatalogueResponse":{"properties":{"catalogue":{"additionalProperties":{"items":{"type":"string"},"type":"array"},"type":"object","title":"Catalogue"},"max_tags_per_character":{"type":"integer","title":"Max Tags Per Character"}},"type":"object","required":["catalogue","max_tags_per_character"],"title":"PublicTagsCatalogueResponse"},"PublishEditorialRequest":{"properties":{"agent_slug":{"type":"string","title":"Agent Slug"},"skill_slug":{"type":"string","title":"Skill Slug"},"category":{"type":"string","title":"Category"},"title":{"type":"string","title":"Title"},"content":{"type":"string","title":"Content"},"notify_type":{"type":"string","title":"Notify Type","default":"push"}},"type":"object","required":["agent_slug","skill_slug","category","title","content"],"title":"PublishEditorialRequest"},"PublishPayload":{"properties":{"author_user_id":{"type":"integer","title":"Author User Id","description":"Admin user id credited as author on the library card"},"tags":{"items":{"type":"string"},"type":"array","maxItems":10,"minItems":1,"title":"Tags"},"pricing_tier":{"type":"string","pattern":"^(free|subscriber)$","title":"Pricing Tier"},"title":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Title"},"description_public":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Description Public"},"public_prompt_override":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Public Prompt Override","description":"If set, replaces the request prompt before publishing (hides the original — useful to scrub celebrity names)."},"reference_images_override":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":10},{"type":"null"}],"title":"Reference Images Override","description":"If set, replaces the request reference images. Same use case as public_prompt_override."}},"type":"object","required":["author_user_id","tags","pricing_tier"],"title":"PublishPayload"},"PurgeConversations":{"properties":{"user_email":{"type":"string","title":"User Email"},"agent_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Slug"}},"type":"object","required":["user_email"],"title":"PurgeConversations"},"QwenSuggestResponse":{"properties":{"external_id":{"type":"string","title":"External Id"},"suggested_tags":{"items":{"type":"string"},"type":"array","title":"Suggested Tags"},"suggested_title":{"type":"string","title":"Suggested Title","default":""},"suggested_description":{"type":"string","title":"Suggested Description","default":""}},"type":"object","required":["external_id","suggested_tags"],"title":"QwenSuggestResponse"},"RatePayload":{"properties":{"stars":{"type":"integer","maximum":5.0,"minimum":1.0,"title":"Stars"},"review":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Review"}},"type":"object","required":["stars"],"title":"RatePayload"},"RateResponse":{"properties":{"average_rating":{"type":"number","title":"Average Rating"},"rating_count":{"type":"integer","title":"Rating Count"},"my_rating":{"type":"integer","title":"My Rating"}},"type":"object","required":["average_rating","rating_count","my_rating"],"title":"RateResponse"},"ReactionResponse":{"properties":{"external_id":{"type":"string","title":"External Id"},"like_count":{"type":"integer","title":"Like Count"},"dislike_count":{"type":"integer","title":"Dislike Count"},"i_liked":{"type":"boolean","title":"I Liked"},"i_disliked":{"type":"boolean","title":"I Disliked"}},"type":"object","required":["external_id","like_count","dislike_count","i_liked","i_disliked"],"title":"ReactionResponse"},"ReferenceFromUrl":{"properties":{"url":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Url"}},"type":"object","required":["url"],"title":"ReferenceFromUrl"},"RegisterDeviceRequest":{"properties":{"platform":{"type":"string","title":"Platform"},"device_token":{"type":"string","title":"Device Token"},"device_name":{"type":"string","title":"Device Name","default":""}},"type":"object","required":["platform","device_token"],"title":"RegisterDeviceRequest"},"RegisterVoIPTokenRequest":{"properties":{"voip_token":{"type":"string","title":"Voip Token"}},"type":"object","required":["voip_token"],"title":"RegisterVoIPTokenRequest"},"RejectPayload":{"properties":{"reason":{"type":"string","maxLength":500,"minLength":4,"title":"Reason"}},"type":"object","required":["reason"],"title":"RejectPayload"},"RequestParams":{"properties":{"age":{"anyOf":[{"type":"integer","maximum":120.0,"minimum":1.0},{"type":"null"}],"title":"Age"},"gender":{"anyOf":[{"type":"string","pattern":"^(male|female|neutral)$"},{"type":"null"}],"title":"Gender"},"height":{"anyOf":[{"type":"integer","maximum":250.0,"minimum":50.0},{"type":"null"}],"title":"Height","description":"cm"},"bmi":{"anyOf":[{"type":"number","maximum":60.0,"minimum":10.0},{"type":"null"}],"title":"Bmi"},"muscle_fat_ratio":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Muscle Fat Ratio"},"chest_size":{"anyOf":[{"type":"number","maximum":2.0,"minimum":0.0},{"type":"null"}],"title":"Chest Size"}},"type":"object","title":"RequestParams","description":"Generation parameters. All optional; stage 1 fills gaps from the prompt."},"RequestResponse":{"properties":{"external_id":{"type":"string","title":"External Id"},"status":{"type":"string","title":"Status"},"current_stage":{"type":"integer","title":"Current Stage"},"stage_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stage Name"},"progress_percent":{"type":"integer","title":"Progress Percent"},"queue_position":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Queue Position"},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt"},"reference_images":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Reference Images"},"params":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Params"},"version":{"type":"string","title":"Version","default":"v1"},"grooms":{"type":"boolean","title":"Grooms","default":false},"quality":{"type":"string","title":"Quality","default":"standard"},"is_public":{"type":"boolean","title":"Is Public"},"public_status":{"type":"string","title":"Public Status","default":"private"},"public_rejection_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Public Rejection Reason"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description_public":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description Public"},"credits_debited":{"type":"integer","title":"Credits Debited"},"credits_refunded":{"type":"boolean","title":"Credits Refunded"},"error_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Code"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"output_files":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Output Files"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At"},"rating":{"anyOf":[{"$ref":"#/components/schemas/OwnRatingResponse"},{"type":"null"}]}},"type":"object","required":["external_id","status","current_stage","stage_name","progress_percent","prompt","reference_images","params","is_public","credits_debited","credits_refunded","error_code","error_message","output_files","created_at","started_at","completed_at"],"title":"RequestResponse"},"RestyleCanvasRequest":{"properties":{"source_canvas_id":{"type":"integer","title":"Source Canvas Id"},"skill_summary":{"type":"string","title":"Skill Summary"},"workflow_json":{"additionalProperties":true,"type":"object","title":"Workflow Json"},"skill_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Skill Name"}},"type":"object","required":["source_canvas_id","skill_summary","workflow_json"],"title":"RestyleCanvasRequest","description":"Restyle a source canvas to fit a target skill's data shape.\n\nUsed when the user picks a canvas in the skill builder that doesn't\nnatively match the skill workflow's output. The compiler keeps the\nvisual style of the source and adapts the structure to the new content."},"ResultResponse":{"properties":{"external_id":{"type":"string","title":"External Id"},"status":{"type":"string","title":"Status"},"version":{"type":"string","title":"Version"},"download_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Download Url"},"representation_image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Representation Image Url"},"character_info_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Character Info Url"},"expires_in":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expires In"},"error_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Code"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"}},"type":"object","required":["external_id","status","version"],"title":"ResultResponse"},"ResumeSkillRequest":{"properties":{"user_response":{"title":"User Response"}},"type":"object","title":"ResumeSkillRequest","description":"Request to resume a paused workflow."},"ReviewRequest":{"properties":{"action":{"type":"string","enum":["approve","pause","resume","regen"],"title":"Action"},"panels":{"items":{"type":"integer"},"type":"array","title":"Panels","default":[]}},"type":"object","required":["action"],"title":"ReviewRequest"},"ReviewRow":{"properties":{"user_id":{"type":"integer","title":"User Id"},"user_email":{"type":"string","title":"User Email"},"stars":{"type":"integer","title":"Stars"},"review":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Review"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["user_id","user_email","stars","review","created_at","updated_at"],"title":"ReviewRow"},"RouteUpdate":{"properties":{"provider":{"type":"string","title":"Provider"},"model":{"type":"string","title":"Model"},"fallback_provider":{"type":"string","title":"Fallback Provider"},"fallback_model":{"type":"string","title":"Fallback Model"}},"type":"object","required":["provider","model"],"title":"RouteUpdate"},"RunDetail":{"properties":{"summary":{"$ref":"#/components/schemas/RunSummary"},"stages":{"items":{"$ref":"#/components/schemas/StageRow"},"type":"array","title":"Stages"},"tier_calls":{"items":{"$ref":"#/components/schemas/TierCallRow"},"type":"array","title":"Tier Calls"}},"type":"object","required":["summary","stages","tier_calls"],"title":"RunDetail"},"RunSkillRequest":{"properties":{"agent_slug":{"type":"string","title":"Agent Slug"},"trigger_source":{"type":"string","title":"Trigger Source","default":"manual"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"}},"type":"object","required":["agent_slug"],"title":"RunSkillRequest","description":"Request to start a skill workflow execution."},"RunSummary":{"properties":{"external_id":{"type":"string","title":"External Id"},"status":{"type":"string","title":"Status"},"color":{"type":"string","title":"Color"},"user_id":{"type":"integer","title":"User Id"},"user_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Name"},"user_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Email"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"prompt_excerpt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt Excerpt"},"current_stage":{"type":"integer","title":"Current Stage"},"progress_percent":{"type":"integer","title":"Progress Percent"},"phase_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phase Name"},"eta_remaining_s":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Eta Remaining S"},"has_fallback":{"type":"boolean","title":"Has Fallback"},"has_retry":{"type":"boolean","title":"Has Retry"},"total_cost_usd":{"type":"number","title":"Total Cost Usd"},"duration_s":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Duration S"},"claimed_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Claimed By"},"version":{"type":"string","title":"Version","default":"v1"},"quality":{"type":"string","title":"Quality","default":"standard"},"grooms":{"type":"boolean","title":"Grooms","default":false},"created_at":{"type":"string","format":"date-time","title":"Created At"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At"},"representation_image_thumb_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Representation Image Thumb Url"},"representation_image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Representation Image Url"},"ue5_capture_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ue5 Capture Url"},"public_status":{"type":"string","title":"Public Status","default":"private"},"pricing_tier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pricing Tier"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"author_user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Author User Id"},"description_public":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description Public"},"public_approved_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Public Approved At"},"download_count":{"type":"integer","title":"Download Count","default":0},"rating_count":{"type":"integer","title":"Rating Count","default":0},"average_rating":{"type":"number","title":"Average Rating","default":0.0},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt"},"reference_images":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Reference Images"}},"type":"object","required":["external_id","status","color","user_id","title","prompt_excerpt","current_stage","progress_percent","phase_name","eta_remaining_s","has_fallback","has_retry","total_cost_usd","duration_s","claimed_by","created_at","started_at","completed_at"],"title":"RunSummary","description":"Compact row for the historical table + live cards."},"SaveCanvasSessionRequest":{"properties":{"canvas_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Canvas Id"},"messages":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Messages"},"last_compilation":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Last Compilation"}},"type":"object","required":["messages"],"title":"SaveCanvasSessionRequest","description":"Save the current canvas builder session draft."},"SaveCharacterSessionRequest":{"properties":{"agent_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Agent Id"},"form_data":{"additionalProperties":true,"type":"object","title":"Form Data"},"messages":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Messages","default":[]},"reference_images":{"items":{"type":"string"},"type":"array","title":"Reference Images","default":[]},"step":{"type":"integer","title":"Step","default":0}},"type":"object","required":["form_data"],"title":"SaveCharacterSessionRequest","description":"Save the current character builder draft."},"SaveSessionRequest":{"properties":{"skill_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Skill Id"},"messages":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Messages"},"last_compilation":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Last Compilation"}},"type":"object","required":["messages"],"title":"SaveSessionRequest","description":"Save the current builder session draft."},"ScheduleProductionRequest":{"properties":{"agent_slug":{"type":"string","title":"Agent Slug"},"skill_slug":{"type":"string","title":"Skill Slug"},"category":{"type":"string","title":"Category"},"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description","default":""},"is_personalized":{"type":"boolean","title":"Is Personalized","default":true},"input_template":{"additionalProperties":true,"type":"object","title":"Input Template","default":{}},"schedule_type":{"type":"string","title":"Schedule Type","default":"daily"},"schedule_config":{"additionalProperties":true,"type":"object","title":"Schedule Config","default":{}},"notify_type":{"type":"string","title":"Notify Type","default":"push"},"max_credits_per_day":{"type":"integer","title":"Max Credits Per Day","default":100}},"type":"object","required":["agent_slug","skill_slug","category","title"],"title":"ScheduleProductionRequest"},"ServerStatusResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"is_paused":{"type":"boolean","title":"Is Paused","default":false},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"},"resume_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resume At"},"auto_paused":{"type":"boolean","title":"Auto Paused","default":false}},"type":"object","title":"ServerStatusResponse"},"ServiceBody":{"properties":{"stopped":{"type":"boolean","title":"Stopped"},"reason":{"type":"string","title":"Reason","default":"stopped by an admin"}},"type":"object","required":["stopped"],"title":"ServiceBody"},"SessionResponse":{"properties":{"session_id":{"type":"integer","title":"Session Id"},"html":{"type":"string","title":"Html"},"composition":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Composition"},"style_spec":{"additionalProperties":true,"type":"object","title":"Style Spec"},"style_prompt":{"type":"string","title":"Style Prompt"},"regens_used":{"type":"integer","title":"Regens Used"},"regens_max":{"type":"integer","title":"Regens Max"},"regens_remaining":{"type":"integer","title":"Regens Remaining"},"total_cost_usd":{"type":"number","title":"Total Cost Usd"},"credits_remaining":{"type":"number","title":"Credits Remaining"},"state":{"type":"string","title":"State"}},"type":"object","required":["session_id","html","composition","style_spec","style_prompt","regens_used","regens_max","regens_remaining","total_cost_usd","credits_remaining","state"],"title":"SessionResponse"},"SessionStartRequest":{"properties":{"personality":{"$ref":"#/components/schemas/Personality"},"user_prompt":{"type":"string","maxLength":4000,"minLength":5,"title":"User Prompt"},"persona_portrait_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Persona Portrait Url","default":""},"agent_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Agent Id"},"regens_max":{"type":"integer","title":"Regens Max","default":6},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title","default":"Canvas"}},"type":"object","required":["personality","user_prompt"],"title":"SessionStartRequest"},"SkillAssign":{"properties":{"skill_slug":{"type":"string","title":"Skill Slug"},"is_default":{"type":"boolean","title":"Is Default","default":true}},"type":"object","required":["skill_slug"],"title":"SkillAssign"},"SkillCreate":{"properties":{"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"trigger_description":{"type":"string","title":"Trigger Description"},"instructions":{"type":"string","title":"Instructions"},"reference_files":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Reference Files","default":[]},"category":{"type":"string","title":"Category","default":"general"},"is_system":{"type":"boolean","title":"Is System","default":false}},"type":"object","required":["slug","name","description","trigger_description","instructions"],"title":"SkillCreate"},"SkillSubscribeRequest":{"properties":{"agent_slug":{"type":"string","title":"Agent Slug"},"schedule_type":{"type":"string","title":"Schedule Type"},"schedule_config":{"additionalProperties":true,"type":"object","title":"Schedule Config"},"notification_mode":{"type":"string","title":"Notification Mode","default":"auto"}},"type":"object","required":["agent_slug","schedule_type","schedule_config"],"title":"SkillSubscribeRequest","description":"Subscribe to a skill with a recurring schedule."},"SkillSubscriptionUpdate":{"properties":{"schedule_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Schedule Type"},"schedule_config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Schedule Config"},"notification_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notification Mode"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},"type":"object","title":"SkillSubscriptionUpdate"},"SongJob":{"properties":{"job_id":{"type":"string","title":"Job Id"},"status":{"type":"string","enum":["queued","in_progress","done","failed","cancelled"],"title":"Status"},"lane":{"type":"string","enum":["priority","normal","fill"],"title":"Lane","default":"normal"},"model":{"type":"string","title":"Model","default":"acestep-1.5-xl-turbo"},"request":{"additionalProperties":true,"type":"object","title":"Request"},"estimate_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Estimate Seconds"},"output_prefix":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Output Prefix"},"created_at":{"type":"integer","title":"Created At"},"enqueued_at":{"type":"integer","title":"Enqueued At"},"started_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Started At"},"completed_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Completed At"},"node_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Node Id"},"lease_until":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Lease Until"},"result_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Result Url"},"recipe_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recipe Url"},"duration_s":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Duration S"},"result":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Result"},"edited_from":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Edited From"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"render_seconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Render Seconds"},"render_started_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Render Started At"},"user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Id"},"attempts":{"type":"integer","title":"Attempts","default":0}},"type":"object","required":["job_id","status","created_at","enqueued_at"],"title":"SongJob"},"StageEndBody":{"properties":{"stage_no":{"type":"integer","maximum":990.0,"minimum":1.0,"title":"Stage No"},"status":{"type":"string","title":"Status","description":"success | failed | timed_out"},"duration_s":{"type":"number","minimum":0.0,"title":"Duration S"},"retry_count":{"type":"integer","maximum":10.0,"minimum":0.0,"title":"Retry Count","default":0},"phases":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Phases","description":"StageTimings dump: list of {name, parallel_group, duration_s, ...}"},"error_message":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Error Message"}},"type":"object","required":["stage_no","status","duration_s"],"title":"StageEndBody"},"StageEtaStats":{"properties":{"stage_no":{"type":"integer","title":"Stage No"},"sample_count":{"type":"integer","title":"Sample Count"},"p50_s":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"P50 S"},"p95_s":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"P95 S"},"p99_s":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"P99 S"}},"type":"object","required":["stage_no","sample_count","p50_s","p95_s","p99_s"],"title":"StageEtaStats"},"StageOpResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"request_id":{"type":"string","title":"Request Id"},"stage_no":{"type":"integer","title":"Stage No"}},"type":"object","required":["request_id","stage_no"],"title":"StageOpResponse"},"StagePhaseStats":{"properties":{"stage_no":{"type":"integer","title":"Stage No"},"sample_count":{"type":"integer","title":"Sample Count"},"p50_s":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"P50 S"},"p95_s":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"P95 S"},"phases":{"items":{"$ref":"#/components/schemas/PhaseStat"},"type":"array","title":"Phases"}},"type":"object","required":["stage_no","sample_count","phases"],"title":"StagePhaseStats"},"StageRow":{"properties":{"stage_no":{"type":"integer","title":"Stage No"},"stage_name":{"type":"string","title":"Stage Name"},"status":{"type":"string","title":"Status"},"worker_machine_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Worker Machine Id"},"started_at":{"type":"string","format":"date-time","title":"Started At"},"ended_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Ended At"},"duration_s":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Duration S"},"retry_count":{"type":"integer","title":"Retry Count"},"phases":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Phases"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"}},"type":"object","required":["stage_no","stage_name","status","worker_machine_id","started_at","ended_at","duration_s","retry_count","phases","error_message"],"title":"StageRow"},"StageStartBody":{"properties":{"stage_no":{"type":"integer","maximum":990.0,"minimum":1.0,"title":"Stage No"},"stage_name":{"type":"string","maxLength":40,"minLength":1,"title":"Stage Name"},"eta_remaining_s":{"anyOf":[{"type":"integer","maximum":3600.0,"minimum":0.0},{"type":"null"}],"title":"Eta Remaining S"}},"type":"object","required":["stage_no","stage_name"],"title":"StageStartBody"},"StatusResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"status":{"type":"string","title":"Status"},"current_stage":{"type":"integer","title":"Current Stage"},"progress_percent":{"type":"integer","title":"Progress Percent"}},"type":"object","required":["status","current_stage","progress_percent"],"title":"StatusResponse"},"StatusUpdate":{"properties":{"current_stage":{"type":"integer","maximum":990.0,"minimum":0.0,"title":"Current Stage"},"progress_percent":{"type":"integer","maximum":100.0,"minimum":0.0,"title":"Progress Percent"},"stage_name":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Stage Name"},"phase_name":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Phase Name"},"phase_progress_percent":{"anyOf":[{"type":"integer","maximum":100.0,"minimum":0.0},{"type":"null"}],"title":"Phase Progress Percent"},"eta_remaining_s":{"anyOf":[{"type":"integer","maximum":3600.0,"minimum":0.0},{"type":"null"}],"title":"Eta Remaining S"}},"type":"object","required":["current_stage","progress_percent"],"title":"StatusUpdate"},"SubmitForReviewPayload":{"properties":{"title":{"type":"string","maxLength":120,"minLength":2,"title":"Title"},"description_public":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Description Public"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":12},{"type":"null"}],"title":"Tags"}},"type":"object","required":["title"],"title":"SubmitForReviewPayload","description":"Metadata required when submitting a character for public listing."},"SubmitForReviewResponse":{"properties":{"external_id":{"type":"string","title":"External Id"},"public_status":{"type":"string","title":"Public Status"}},"type":"object","required":["external_id","public_status"],"title":"SubmitForReviewResponse"},"SubscriptionCheckoutRequest":{"properties":{"plan_slug":{"type":"string","title":"Plan Slug"},"success_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Success Url"},"cancel_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cancel Url"},"currency":{"type":"string","title":"Currency","default":"EUR"}},"type":"object","required":["plan_slug"],"title":"SubscriptionCheckoutRequest"},"TTSRequest":{"properties":{"agent_slug":{"type":"string","title":"Agent Slug"},"text":{"type":"string","title":"Text"}},"type":"object","required":["agent_slug","text"],"title":"TTSRequest"},"TTSTestRequest":{"properties":{"text":{"type":"string","title":"Text","default":"Bonjour, ceci est un test de voix."},"voice_id":{"type":"string","title":"Voice Id","default":""}},"type":"object","title":"TTSTestRequest"},"TagsCatalogueResponse":{"properties":{"catalogue":{"additionalProperties":{"items":{"type":"string"},"type":"array"},"type":"object","title":"Catalogue"},"max_tags_per_character":{"type":"integer","title":"Max Tags Per Character"},"max_custom_tags_per_character":{"type":"integer","title":"Max Custom Tags Per Character"}},"type":"object","required":["catalogue","max_tags_per_character","max_custom_tags_per_character"],"title":"TagsCatalogueResponse"},"TalkRequest":{"properties":{"agent_slug":{"type":"string","title":"Agent Slug"},"text":{"type":"string","title":"Text"},"conversation_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Conversation Id"},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"},"mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mode","default":"text"},"reaction_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reaction Id"},"reaction_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reaction Text"},"audio_output":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Audio Output","default":false},"user_local_time":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Local Time"},"user_local_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Local Date"},"user_timezone_offset":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Timezone Offset"},"lat":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lat"},"lon":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lon"},"pre_analysis":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Pre Analysis"},"pre_analysis_service":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pre Analysis Service"},"pre_analysis_draft_answer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pre Analysis Draft Answer"},"skip_hook_audio":{"type":"boolean","title":"Skip Hook Audio","default":false}},"type":"object","required":["agent_slug","text"],"title":"TalkRequest","description":"Common request body for talk endpoints."},"TermsBody":{"properties":{"version":{"type":"string","title":"Version"}},"type":"object","required":["version"],"title":"TermsBody"},"TestFetchRequest":{"properties":{"connector_slug":{"type":"string","title":"Connector Slug"},"query":{"type":"string","title":"Query"},"limit":{"type":"integer","title":"Limit","default":5},"language":{"type":"string","title":"Language","default":"fr"}},"type":"object","required":["connector_slug","query"],"title":"TestFetchRequest"},"TestSkillRequest":{"properties":{"skill_id":{"type":"integer","title":"Skill Id","default":0},"pipeline":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Pipeline","default":[]},"agent_slug":{"type":"string","title":"Agent Slug","default":"mia"},"user_message":{"type":"string","title":"User Message","default":""}},"type":"object","title":"TestSkillRequest"},"TierCallBody":{"properties":{"stage_no":{"type":"integer","maximum":990.0,"minimum":1.0,"title":"Stage No"},"tier_name":{"type":"string","maxLength":40,"minLength":1,"title":"Tier Name"},"fallback_level":{"type":"integer","maximum":5.0,"minimum":0.0,"title":"Fallback Level","default":0},"provider":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Provider"},"model":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Model"},"status":{"type":"string","title":"Status","description":"success | failed | timeout"},"cost_usd":{"type":"number","minimum":0.0,"title":"Cost Usd","default":0},"duration_ms":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Duration Ms"},"prompt_tokens":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Prompt Tokens"},"completion_tokens":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Completion Tokens"},"error_excerpt":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Error Excerpt"}},"type":"object","required":["stage_no","tier_name","status"],"title":"TierCallBody"},"TierCallResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"request_id":{"type":"string","title":"Request Id"},"tier_call_id":{"type":"integer","title":"Tier Call Id"}},"type":"object","required":["request_id","tier_call_id"],"title":"TierCallResponse"},"TierCallRow":{"properties":{"id":{"type":"integer","title":"Id"},"stage_no":{"type":"integer","title":"Stage No"},"tier_name":{"type":"string","title":"Tier Name"},"fallback_level":{"type":"integer","title":"Fallback Level"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"status":{"type":"string","title":"Status"},"cost_usd":{"type":"number","title":"Cost Usd"},"duration_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duration Ms"},"prompt_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Prompt Tokens"},"completion_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Completion Tokens"},"error_excerpt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Excerpt"},"worker_machine_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Worker Machine Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","stage_no","tier_name","fallback_level","provider","model","status","cost_usd","duration_ms","prompt_tokens","completion_tokens","error_excerpt","worker_machine_id","created_at"],"title":"TierCallRow"},"TrackEventBody":{"properties":{"event":{"type":"string","maxLength":64,"minLength":1,"title":"Event"},"session_id":{"type":"string","maxLength":36,"minLength":8,"title":"Session Id"},"path":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Path"},"referrer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Referrer"},"properties":{"additionalProperties":true,"type":"object","title":"Properties"}},"type":"object","required":["event","session_id"],"title":"TrackEventBody"},"TreeCreate":{"properties":{"agent_id":{"type":"integer","title":"Agent Id"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description","default":""}},"type":"object","required":["agent_id","name"],"title":"TreeCreate"},"UniverseAssign":{"properties":{"universe_id":{"type":"integer","title":"Universe Id"},"is_primary":{"type":"boolean","title":"Is Primary","default":false}},"type":"object","required":["universe_id"],"title":"UniverseAssign"},"UniverseCreate":{"properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description","default":""},"universe_type":{"type":"string","title":"Universe Type","default":"real"},"parent_universe_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parent Universe Id"},"time_reference":{"type":"string","title":"Time Reference","default":"real_time"},"news_sources":{"items":{"type":"string"},"type":"array","title":"News Sources","default":[]}},"type":"object","required":["name"],"title":"UniverseCreate"},"UpdateDataRequest":{"properties":{"action":{"type":"string","title":"Action"},"payload":{"additionalProperties":true,"type":"object","title":"Payload","default":{}}},"type":"object","required":["action"],"title":"UpdateDataRequest","description":"Partial update to instance data."},"UpdateLibraryPayload":{"properties":{"author_user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Author User Id"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":10,"minItems":1},{"type":"null"}],"title":"Tags"},"pricing_tier":{"anyOf":[{"type":"string","pattern":"^(free|subscriber)$"},{"type":"null"}],"title":"Pricing Tier"},"title":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Title"},"description_public":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Description Public"},"public_prompt_override":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Public Prompt Override"},"reference_images_override":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":10},{"type":"null"}],"title":"Reference Images Override"}},"type":"object","title":"UpdateLibraryPayload","description":"All fields optional — only the ones provided are updated."},"UpdatePromptPayload":{"properties":{"public_prompt":{"type":"string","maxLength":4000,"minLength":1,"title":"Public Prompt"}},"type":"object","required":["public_prompt"],"title":"UpdatePromptPayload"},"UpdatePromptResponse":{"properties":{"external_id":{"type":"string","title":"External Id"},"new_prompt":{"type":"string","title":"New Prompt"},"repackaged":{"type":"boolean","title":"Repackaged"},"repackage_warning":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Repackage Warning"}},"type":"object","required":["external_id","new_prompt","repackaged"],"title":"UpdatePromptResponse"},"UploadRefResponse":{"properties":{"external_id":{"type":"string","title":"External Id"},"key":{"type":"string","title":"Key"},"url":{"type":"string","title":"Url"},"size_bytes":{"type":"integer","title":"Size Bytes"}},"type":"object","required":["external_id","key","url","size_bytes"],"title":"UploadRefResponse"},"UploadUrlEntry":{"properties":{"url":{"type":"string","title":"Url"},"key":{"type":"string","title":"Key"},"content_type":{"type":"string","title":"Content Type"}},"type":"object","required":["url","key","content_type"],"title":"UploadUrlEntry"},"UploadUrlsBody":{"properties":{"file_types":{"items":{"type":"string"},"type":"array","minItems":1,"title":"File Types"},"force_revive":{"type":"boolean","title":"Force Revive","default":false}},"type":"object","required":["file_types"],"title":"UploadUrlsBody"},"UploadUrlsResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"external_id":{"type":"string","title":"External Id"},"urls":{"additionalProperties":{"$ref":"#/components/schemas/UploadUrlEntry"},"type":"object","title":"Urls"},"expires_in":{"type":"integer","title":"Expires In"}},"type":"object","required":["external_id","urls","expires_in"],"title":"UploadUrlsResponse"},"UsageResponse":{"properties":{"daily_limit_credits":{"type":"integer","title":"Daily Limit Credits"},"daily_consumed_credits":{"type":"number","title":"Daily Consumed Credits"},"daily_remaining_generations":{"type":"integer","title":"Daily Remaining Generations"},"ic_monthly_limit":{"type":"integer","title":"Ic Monthly Limit"},"ic_monthly_consumed":{"type":"integer","title":"Ic Monthly Consumed"},"ic_monthly_remaining":{"type":"integer","title":"Ic Monthly Remaining"},"has_subscription":{"type":"boolean","title":"Has Subscription"},"credit_balance":{"type":"number","title":"Credit Balance"},"summons_from_credits":{"type":"integer","title":"Summons From Credits"},"library_daily_quota":{"type":"integer","title":"Library Daily Quota"},"library_daily_consumed":{"type":"integer","title":"Library Daily Consumed"},"library_daily_remaining":{"type":"integer","title":"Library Daily Remaining"}},"type":"object","required":["daily_limit_credits","daily_consumed_credits","daily_remaining_generations","ic_monthly_limit","ic_monthly_consumed","ic_monthly_remaining","has_subscription","credit_balance","summons_from_credits","library_daily_quota","library_daily_consumed","library_daily_remaining"],"title":"UsageResponse"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"VariantKeptRequest":{"properties":{"kept":{"type":"boolean","title":"Kept"}},"type":"object","required":["kept"],"title":"VariantKeptRequest"},"VideoJob":{"properties":{"job_id":{"type":"string","title":"Job Id"},"status":{"type":"string","enum":["enhancing","review","queued","in_progress","done","failed","cancelled"],"title":"Status"},"priority":{"type":"string","enum":["priority","interactive","batch"],"title":"Priority"},"model":{"type":"string","title":"Model","default":"wan2.2-i2v-a14b"},"params":{"anyOf":[{"$ref":"#/components/schemas/VideoJobParams"},{"type":"null"}]},"request":{"additionalProperties":true,"type":"object","title":"Request"},"estimate_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Estimate Seconds"},"output_prefix":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Output Prefix"},"review_deadline":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Review Deadline"},"created_at":{"type":"integer","title":"Created At"},"enqueued_at":{"type":"integer","title":"Enqueued At"},"started_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Started At"},"completed_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Completed At"},"node_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Node Id"},"lease_until":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Lease Until"},"result_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Result Url"},"poster_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Poster Url"},"last_poster_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Poster Url"},"edited_from":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Edited From"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"render_seconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Render Seconds"},"render_started_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Render Started At"},"enhance_started_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Enhance Started At"},"user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Id"},"attempts":{"type":"integer","title":"Attempts","default":0}},"type":"object","required":["job_id","status","priority","created_at","enqueued_at"],"title":"VideoJob"},"VideoJobParams":{"properties":{"portrait_url":{"type":"string","title":"Portrait Url","description":"HTTP URL to source image (any aspect)."},"mode":{"type":"string","enum":["FAST","STANDARD","PREMIUM"],"title":"Mode","default":"FAST"},"output_aspect":{"type":"string","enum":["auto","16:9","9:16","1:1","4:3","3:4"],"title":"Output Aspect","description":"'auto' (default) detects the source image aspect and keeps it. Force a specific ratio with '16:9', '9:16', '1:1', '4:3', '3:4'.","default":"auto"},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt"},"negative_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Negative Prompt"},"end_frame_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Frame Url"},"frames":{"type":"integer","title":"Frames","default":65},"seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed"},"agent_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Agent Id","description":"If set, the result is persisted as an AgentMedia loop row for this agent."},"target_state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target State","description":"AgentMedia.state to write (idle / talking / listening / thinking)."},"target_variant":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Variant","description":"AgentMedia.variant to write (neutral / happy / angry / sad)."},"target_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Slug","description":"Agent slug, used to build a stable R2 path (agents/<slug>/<state>_<variant>_<ts>.mp4)."},"crossfade_frames":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Crossfade Frames","description":"Centered loop crossfade total frame count. None = worker auto, 0 = off."},"upgrade_from_native_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Upgrade From Native Url","description":"R2 URL of a previously-saved native Wan22 mp4 to upgrade. Skips diffusion."}},"type":"object","required":["portrait_url"],"title":"VideoJobParams","description":"Parameters describing the video to generate."},"VideoLoopRequest":{"properties":{"source_image_url":{"type":"string","title":"Source Image Url"},"state":{"type":"string","pattern":"^(idle|talking|listening|thinking)$","title":"State"},"mood":{"type":"string","title":"Mood","default":"neutral"}},"type":"object","required":["source_image_url","state"],"title":"VideoLoopRequest"},"VoiceCreate":{"properties":{"voice_id":{"type":"string","title":"Voice Id"},"provider":{"type":"string","title":"Provider","default":"elevenlabs"},"language_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language Code"},"is_default":{"type":"boolean","title":"Is Default","default":false}},"type":"object","required":["voice_id"],"title":"VoiceCreate"},"VoicePreviewRequest":{"properties":{"voice_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Id","description":"ID of a catalog voice (Mode A)"},"description":{"anyOf":[{"type":"string","maxLength":600},{"type":"null"}],"title":"Description","description":"Free-form French description (Mode B)"},"clone_audio_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clone Audio Url","description":"R2 URL of the user's recorded voice (Mode C)"},"clone_script":{"anyOf":[{"type":"string","maxLength":3000},{"type":"null"}],"title":"Clone Script","description":"Exact transcript of clone_audio_url (Mode C, REQUIRED with clone_audio_url)"},"character_name":{"type":"string","maxLength":120,"minLength":1,"title":"Character Name"},"character_tagline":{"type":"string","maxLength":400,"title":"Character Tagline","default":""},"gender":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gender","description":"male/female/neutral — used as fallback for description mode when nano-vllm-voxcpm can't synthesize from a free-form prompt and we need to pick a catalog voice."}},"type":"object","required":["character_name"],"title":"VoicePreviewRequest","description":"Exactly ONE of `voice_id`, `description`, or `clone_audio_url` must be set.\n- voice_id           : Mode A — pick from the catalog\n- description        : Mode B — voice design from a free-form French desc\n- clone_audio_url    : Mode C — clone the user's recorded voice (must come\n  with `clone_script`, the exact transcript of the audio)"},"VoiceTestRequest":{"properties":{"text":{"type":"string","title":"Text"},"voice_id":{"type":"string","title":"Voice Id"},"previous_request_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Previous Request Id"}},"type":"object","required":["text","voice_id"],"title":"VoiceTestRequest","description":"Test voice generation."},"VoiceUpdate":{"properties":{"voice_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Id"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"},"language_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language Code"},"is_default":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Default"}},"type":"object","title":"VoiceUpdate"},"WaitlistBody":{"properties":{"plan":{"type":"string","enum":["free","starter","standard","pro"],"title":"Plan"}},"type":"object","required":["plan"],"title":"WaitlistBody"},"WorldEntryCreate":{"properties":{"category":{"type":"string","title":"Category"},"title":{"type":"string","title":"Title"},"content":{"type":"string","title":"Content"},"priority":{"type":"integer","title":"Priority","default":3},"valid_from":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Valid From"},"valid_until":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Valid Until"}},"type":"object","required":["category","title","content"],"title":"WorldEntryCreate"},"WriteRequest":{"properties":{"request":{"type":"string","maxLength":1500,"minLength":3,"title":"Request","description":"What the song is about, in the client's words."},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language","description":"Vocals language; the director picks it from the request when absent."},"duration_s":{"anyOf":[{"type":"number","maximum":240.0,"minimum":30.0},{"type":"null"}],"title":"Duration S"},"previous":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Previous"},"notes":{"type":"string","maxLength":1000,"title":"Notes","default":""},"music":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Music","description":"An element id: the director writes in the spirit of what the planner heard in it (style, tempo, key)."}},"type":"object","required":["request"],"title":"WriteRequest"},"app__api__admin_users__ResetRequest":{"properties":{"agent_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Slug"}},"type":"object","title":"ResetRequest"},"app__api__canvas__GenerateRequest":{"properties":{"personality":{"$ref":"#/components/schemas/Personality"},"user_prompt":{"type":"string","maxLength":4000,"minLength":5,"title":"User Prompt"},"persona_portrait_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Persona Portrait Url","default":""},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title","default":"Canvas"}},"type":"object","required":["personality","user_prompt"],"title":"GenerateRequest"},"app__api__internal_song__CompletePayload":{"properties":{"result_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Result Url"},"recipe_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recipe Url"},"duration_s":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Duration S"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"render_seconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Render Seconds"},"result":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Result"}},"type":"object","title":"CompletePayload"},"app__api__internal_video__CompletePayload":{"properties":{"result_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Result Url"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"render_seconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Render Seconds"},"poster_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Poster Url"},"last_poster_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Poster Url"}},"type":"object","title":"CompletePayload"},"app__api__memory__SearchRequest":{"properties":{"query":{"type":"string","title":"Query"},"user_id":{"type":"integer","title":"User Id"},"agent_id":{"type":"integer","title":"Agent Id"},"top_k":{"type":"integer","title":"Top K","default":5}},"type":"object","required":["query","user_id","agent_id"],"title":"SearchRequest","description":"Test hybrid memory search."},"app__api__song__GenerateRequest":{"properties":{"model":{"type":"string","title":"Model","default":"acestep-1.5-xl-turbo"},"lane":{"anyOf":[{"type":"string","enum":["priority","normal","fill"]},{"type":"null"}],"title":"Lane","description":"priority (counted x3), normal, or fill (x0.5, when a node is free)."},"voice":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice","description":"An element id: the singer's timbre and manner come from its voice."},"music":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Music","description":"An element id: the song is sung on its music (length follows it)."},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source","description":"The editor: the id of a finished song of yours that 'edit' works on; lyrics and caption default to that song's."}},"additionalProperties":true,"type":"object","title":"GenerateRequest","description":"`model` (the default engine when absent), `lane` (the plan's default\nwhen absent) plus whatever the engine accepts (see GET /models); the\nper-engine fields are validated by the registry."},"app__api__studio__FeedbackBody":{"properties":{"subject":{"type":"string","enum":["api","video","song","app","other"],"title":"Subject","default":"other"},"message":{"type":"string","maxLength":2000,"minLength":1,"title":"Message"},"job_id":{"anyOf":[{"type":"string","maxLength":36},{"type":"null"}],"title":"Job Id","description":"The video or song it is about, if any."}},"type":"object","required":["message"],"title":"FeedbackBody"},"app__api__talk__ResetRequest":{"properties":{"agent_slug":{"type":"string","title":"Agent Slug"}},"type":"object","required":["agent_slug"],"title":"ResetRequest"},"app__api__universe__SearchRequest":{"properties":{"query":{"type":"string","title":"Query"},"agent_id":{"type":"integer","title":"Agent Id"},"top_k":{"type":"integer","title":"Top K","default":5}},"type":"object","required":["query","agent_id"],"title":"SearchRequest"},"app__api__video__FeedbackBody":{"properties":{"rating":{"type":"integer","maximum":5.0,"minimum":1.0,"title":"Rating"},"comment":{"type":"string","maxLength":500,"title":"Comment","default":""}},"type":"object","required":["rating"],"title":"FeedbackBody"},"app__api__video__GenerateRequest":{"properties":{"model":{"type":"string","title":"Model"},"priority":{"type":"string","enum":["priority","interactive","batch"],"title":"Priority","default":"interactive"}},"additionalProperties":true,"type":"object","required":["model"],"title":"GenerateRequest","description":"`model` plus whatever that model accepts (see GET /models).\n\nThe per-model fields are validated by the registry, not here: their\nschema depends on `model`, so the body is left open on purpose."}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}},"servers":[{"url":"https://api.infinitepeople.ai"}]}