{"openapi":"3.0.2","info":{"title":"moonvalley/text-to-video","description":"The request body Comfy Router accepts for the model \"moonvalley/text-to-video\", and the response body it returns. The INPUT schema is the same schema the server validates a call against before it reaches the provider, so what is published and what is enforced cannot differ. `x-comfy-router-input-modalities` records the media kinds the model is documented to accept; the request schema is shared across sibling models and may admit media kinds this model ignores. The OUTPUT schema describes the provider's native result document exactly as Router returns it: Router does not validate, narrow or re-envelope the response, so the output schema is descriptive rather than enforced, and Comfy owns no output shape of its own.","version":"b6e2eb1565b5"},"paths":{"/v2/models/moonvalley/text-to-video":{"post":{"operationId":"runRouterModel","summary":"Run moonvalley/text-to-video synchronously.","security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Request body for Moonvalley's text-to-video prompt route. Moonvalley declares no single required field here, so the only structural narrowing is that an empty body is refused.","example":{"prompt_text":"a single red maple leaf"},"minProperties":1,"properties":{"image_url":{"type":"string"},"inference_params":{"$ref":"#/components/schemas/MoonvalleyTextToVideoInferenceParams"},"prompt_text":{"type":"string"},"webhook_url":{"type":"string"}},"type":"object"}}}},"responses":{"200":{"description":"OK - the model's native JSON output, returned unchanged; the schema describes the provider's terminal result document as Router returns it.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/MoonvalleyPromptResponse"},{"required":["status","output_url"],"type":"object"}],"description":"Comfy Router output schema for the three Moonvalley video route slugs bound here: the terminal `GET /proxy/moonvalley/prompts/{prompt_id}` prompt document, forwarded unchanged. All three operations are SUBMIT-AND-POLL against that ONE status route — the submit answers a prompt handle and Router polls on the caller's behalf — so the body a caller receives is the finished prompt document rather than that handle.\nThe generated asset is at `output_url`; for every operation bound here it is a video. Comfy Router draws that line itself — a `completed` prompt carrying no `output_url` is answered as a Comfy Router error rather than with this document — so through Router a `200` here always carries an asset URL. Fetch it; nothing is inlined in this body.\n`status` is Moonvalley's own lowercase vocabulary. `completed` is the one terminal success. `error` is a terminal failure and reaches a Router caller as a Comfy Router error rather than as this document, with the provider's own detail under `error`. `queued` and `generating` are the in-flight states Router polls through and a caller never sees.\n`inference_params`, `model_params`, `meta`, `frame_conditioning` and `error` are free-form objects Moonvalley does not document a shape for; they are forwarded as-is and this schema does not narrow them.","example":{"id":"018f2c7a-4b1e-7c3d-9a05-6e2f8b41d0c9","output_url":"https://example.invalid/moonvalley/prompts/output.mp4","prompt_text":"a single red maple leaf falling onto still water","status":"completed"}}}}}}}}},"components":{"schemas":{"MoonvalleyPromptResponse":{"properties":{"error":{"type":"object"},"frame_conditioning":{"type":"object"},"id":{"type":"string"},"inference_params":{"type":"object"},"meta":{"type":"object"},"model_params":{"type":"object"},"output_url":{"type":"string"},"prompt_text":{"type":"string"},"status":{"type":"string"}},"type":"object"},"MoonvalleyTextToVideoInferenceParams":{"properties":{"guidance_scale":{"default":10,"description":"Guidance scale for generation control","format":"float","type":"number"},"height":{"default":1080,"description":"Height of the generated video in pixels","type":"integer"},"negative_prompt":{"description":"Negative prompt text","type":"string"},"seed":{"default":9,"description":"Random seed for generation (default: random)","type":"integer"},"steps":{"default":80,"description":"Number of denoising steps","type":"integer"},"use_negative_prompts":{"default":true,"description":"Whether to use negative prompts","type":"boolean"},"width":{"default":1920,"description":"Width of the generated video in pixels","type":"integer"}},"type":"object"}},"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-Key"},"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}}},"x-comfy-router-model-id":"moonvalley/text-to-video","x-comfy-input-schema-authored":true,"x-comfy-output-schema-authored":true,"x-comfy-router-input-modalities":["text"],"x-comfy-router-output-modalities":["video"]}
