---
title: "P-API"
url: "https://docs.api.pruna.ai/apis/models-api-0/versions/e82c070d-36fc-4aa3-b8cc-8140e0221f53"
---

# P-API

OpenAPI specification document.

````json
{"openapi":"3.0.3","info":{"title":"P-API","description":"P-API provides access to multiple AI models for image generation, video generation, and image-to-video transformation. The API supports both asynchronous and synchronous workflows:\n\n**Asynchronous Workflow (default):**\n1. **POST /v1/predictions** - Submit a generation request\n2. **GET /v1/predictions/status/{id}** - Check prediction status and get results\n3. **GET /v1/predictions/delivery/{path}** - Download the generated content\n\n**Synchronous Workflow (with Try-Sync header):**\n1. **POST /v1/predictions** with `Try-Sync: true` header - Submit a generation request and wait up to 60 seconds for completion. If the generation completes within this time, the response includes the final result directly.\n\nThe API exposes 13 AI models across different categories:\n- **Text-to-Image**: p-image, flux-dev, wan-image-small, qwen-image, qwen-image-fast, z-image-turbo, z-image-turbo-lora\n- **Image Editing**: p-image-edit, qwen-image-edit-plus, flux-dev-lora\n- **Text-to-Video**: wan-t2v\n- **Image-to-Video**: wan-i2v\n- **Video Generation/Editing**: vace\n\nFor detailed model documentation, see: https://docs.api.pruna.ai/guides/models\n\nAll requests require API key authentication via the `apikey` header. Rate limits apply per model (see individual model descriptions).\n","version":"0.1.0","contact":{"name":"Pruna AI Support","email":"support@pruna.ai"}},"servers":[{"url":"https://api.pruna.ai","description":"Production server"}],"security":[{"ApiKeyAuth":[]}],"paths":{"/v1/predictions":{"post":{"summary":"Submit a content generation request","description":"Submit a request to generate images or videos using one of the available AI models. This is the first step in the workflow.\nThe request will be queued for processing and you'll receive a prediction ID to track its status.\n\nThe model to use is specified via the `Model` header. The request body structure varies by model (see examples below).\n\nIf the `Try-Sync` header is set to true, the API will wait up to 60 seconds for completion. If generation completes within this time, the response will include the final result directly.\n","operationId":"createPrediction","x-microcks-operation":{"dispatcher":"HEADER","dispatcherRules":"Model"},"tags":["Predictions"],"security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"Model","in":"header","required":true,"description":"The AI model to use for generation. Each model has specific capabilities and input requirements.","schema":{"type":"string","enum":["flux-dev","flux-dev-lora","wan-i2v","wan-t2v","wan-image-small","qwen-image","qwen-image-edit-plus","vace","p-image","p-image-edit"]}},{"name":"Try-Sync","in":"header","required":false,"description":"If true, the API will wait up to 60 seconds for the generation to complete. If generation completes within this time, returns the final result directly with status 'succeeded' and generation_url. If it times out or this header is false/absent, follows the standard asynchronous workflow where you poll the status endpoint.","schema":{"type":"boolean","default":false}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PredictionRequest"},"examples":{"flux-dev":{"summary":"flux-dev","description":"Advanced text-to-image generation using Flux.1-dev base model. Supports multiple aspect ratios, speed optimizations, and high-quality outputs. Rate limit: 150 requests per minute.","value":{"input":{"prompt":"A beautiful landscape with mountains and a lake at sunset, vibrant colors, photorealistic","speed_mode":"Juiced 🔥 (default)","num_inference_steps":28,"guidance":3.5,"seed":42,"aspect_ratio":"16:9","image_size":1024,"output_format":"jpg","output_quality":80}}},"flux-dev-lora":{"summary":"flux-dev-lora","description":"Text-to-image and image-to-image generation with Flux.1-dev supporting custom LoRA weights from HuggingFace. Rate limit: 150 requests per minute.","value":{"input":{"lora":"prithivMLmods/Flux-Long-Toon-LoRA","seed":42,"prompt":"Long toons, a close-up of a cartoon character with a red backdrop","guidance":3,"lora_scale":1,"megapixels":"1","speed_mode":"Extra Juiced 🔥","num_outputs":1,"aspect_ratio":"1:1","output_format":"jpg","output_quality":80,"prompt_strength":0.8,"extra_lora_scale":1,"num_inference_steps":28}}},"wan-i2v":{"summary":"wan-i2v","description":"Transform static images into animated videos with text prompts. Supports 480p and 720p resolutions. Rate limit: 30 requests per minute.","value":{"input":{"image":"https://api.pruna.ai/v1/files/<uploaded image>","prompt":"Close-up shot of an elderly sailor wearing a yellow raincoat, seated on the deck of a catamaran, slowly puffing on a pipe. His cat lies quietly beside him with eyes closed, enjoying the calm. The warm glow of the setting sun bathes the scene, with gentle waves lapping against the hull and a few seabirds circling slowly above. The camera slowly pushes in, capturing this peaceful and harmonious moment.","num_frames":81,"resolution":"720p","sample_shift":12,"frames_per_second":16,"interpolate_output":true,"lora_scale_transformer":1,"lora_scale_transformer_2":1}}},"wan-t2v":{"summary":"wan-t2v","description":"Generate videos directly from text prompts. Supports 480p and 720p resolutions with 16:9 and 9:16 aspect ratios. Rate limit: 30 requests per minute.","value":{"input":{"prompt":"A sports car is driving very fast along a beach at sunset","num_frames":81,"resolution":"480p","aspect_ratio":"16:9","sample_shift":12,"optimize_prompt":false,"frames_per_second":16,"interpolate_output":true,"lora_scale_transformer":1,"lora_scale_transformer_2":1}}},"wan-image-small":{"summary":"wan-image-small","description":"Fast image generation optimized for speed. Rate limit: 150 requests per minute.","value":{"input":{"prompt":"a cute cat sitting on a windowsill, soft lighting, cozy atmosphere","juiced":false,"aspect_ratio":"16:9","seed":42,"output_format":"jpg","output_quality":80}}},"qwen-image":{"summary":"qwen-image","description":"High-quality text-to-image generation with optional LoRA weights. Rate limit: 150 requests per minute.","value":{"input":{"prompt":"Beautiful mountain landscape with a crystal clear lake reflecting the peaks","enhance_prompt":false,"aspect_ratio":"16:9","image_size":"optimize_for_quality","go_fast":true,"num_inference_steps":30,"guidance":3,"seed":42,"output_format":"webp","output_quality":80,"negative_prompt":" ","disable_safety_checker":false}}},"qwen-image-edit-plus":{"summary":"qwen-image-edit-plus","description":"Edit images using text instructions. Supports multi-image editing and pose transfer. Rate limit: 150 requests per minute.","value":{"input":{"prompt":"Change the background to a beach sunset scene","image":["https://api.pruna.ai/v1/files/<uploaded-image>"],"aspect_ratio":"16:9","go_fast":true,"seed":42,"output_format":"webp","output_quality":95,"disable_safety_checker":false}}},"vace":{"summary":"vace","description":"Advanced video generation and editing with character reference images and prompts. Input videos/images can be provided as URLs or base64. Rate limit: 30 requests per minute.","value":{"input":{"seed":-1,"size":"832*480","prompt":"A yellow car driving down a scenic mountain road at sunset","frame_num":81,"speed_mode":"Extra Juiced 🚀 (even more speed)","src_ref_images":["https://api.pruna.ai/pbxt/N323t5X69JB1MPD4w4cDIxK4rm0BG0W2JOWBrDrR4O9HTcyp/src_ref_image_1.png"],"src_video":"https://api.pruna.ai/pbxt/N323u1ljtNYyyaLrgw0ZLmXgepvWlBvxbJWi3sAa2VDPuNus/src_video.mp4","sample_shift":16,"sample_steps":50,"sample_solver":"unipc","sample_guide_scale":5}}},"p-image":{"summary":"p-image","description":"Ultra-fast text-to-image generation with automatic prompt enhancement and 2-stage refinement. Supports custom aspect ratios and dimensions. Rate limit: 250 requests per minute.","value":{"input":{"prompt":"A majestic lion standing on a rocky cliff at sunset","aspect_ratio":"16:9","seed":42,"disable_safety_checker":false}}},"p-image-edit":{"summary":"p-image-edit","description":"Edit and compose multiple images (1-5) with text instructions. Supports various editing modes and flexible aspect ratios. Rate limit: 250 requests per minute.","value":{"input":{"prompt":"Transform the subject into a watercolor painting style","images":["https://api.pruna.ai/v1/files/<uploaded image>","https://api.pruna.ai/v1/files/<uploaded image>"],"aspect_ratio":"1:1","seed":123,"disable_safety_checker":false}}}}}}},"responses":{"201":{"description":"Prediction request created successfully. Returns either an async response with prediction ID (default) or a sync response with final results (if Try-Sync=true and generation completes within 60 seconds).","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PredictionResponse"},{"type":"object","properties":{"status":{"type":"string","enum":["succeeded"],"description":"Generation completed successfully"},"generation_url":{"type":"string","description":"URL to download the generated content"}}}]},"examples":{"flux-dev":{"summary":"flux-dev response","value":{"id":"pred_fluxdev_001","model":"flux-dev","input":{"prompt":"A beautiful landscape with mountains and a lake at sunset","speed_mode":"Juiced 🔥 (default)","num_inference_steps":28,"guidance":3.5,"seed":42},"get_url":"https://api.pruna.ai/v1/predictions/status/pred_fluxdev_001"}},"flux-dev-lora":{"summary":"flux-dev-lora response","value":{"id":"pred_fluxdevlora_001","model":"flux-dev-lora","input":{"prompt":"Long toons, a close-up of a cartoon character","lora":"prithivMLmods/Flux-Long-Toon-LoRA","num_inference_steps":28,"guidance":3,"seed":42},"get_url":"https://api.pruna.ai/v1/predictions/status/pred_fluxdevlora_001"}},"wan-i2v":{"summary":"wan-i2v response","value":{"id":"pred_wani2v_001","model":"wan-i2v","input":{"prompt":"Close-up shot of an elderly sailor wearing a yellow raincoat","image":"https://api.pruna.ai/v1/files/example_image","num_frames":81,"resolution":"480p"},"get_url":"https://api.pruna.ai/v1/predictions/status/pred_wani2v_001"}},"wan-t2v":{"summary":"wan-t2v response","value":{"id":"pred_want2v_001","model":"wan-t2v","input":{"prompt":"A sports car driving along a beach at sunset","num_frames":81,"resolution":"480p","aspect_ratio":"16:9"},"get_url":"https://api.pruna.ai/v1/predictions/status/pred_want2v_001"}},"wan-image-small":{"summary":"wan-image-small response","value":{"id":"pred_wanimagesmall_001","model":"wan-image-small","input":{"prompt":"A cute cat sitting on a windowsill","aspect_ratio":"16:9","seed":42},"get_url":"https://api.pruna.ai/v1/predictions/status/pred_wanimagesmall_001"}},"qwen-image":{"summary":"qwen-image response","value":{"id":"pred_qwenimage_001","model":"qwen-image","input":{"prompt":"Beautiful mountain landscape with a crystal clear lake","num_inference_steps":30,"guidance":3,"seed":42},"get_url":"https://api.pruna.ai/v1/predictions/status/pred_qwenimage_001"}},"qwen-image-edit-plus":{"summary":"qwen-image-edit-plus response","value":{"id":"pred_qwenimageeditplus_001","model":"qwen-image-edit-plus","input":{"prompt":"Change the background to a beach sunset scene","image":["https://api.pruna.ai/v1/files/example_image"],"seed":42},"get_url":"https://api.pruna.ai/v1/predictions/status/pred_qwenimageeditplus_001"}},"vace":{"summary":"vace response","value":{"id":"pred_vace_001","model":"vace","input":{"prompt":"A yellow car driving down a scenic mountain road","frame_num":81,"sample_guide_scale":5,"sample_shift":16,"sample_solver":"unipc","sample_steps":50,"seed":-1,"size":"832*480","speed_mode":"Extra Juiced 🚀 (even more speed)","src_ref_images":["https://api.pruna.ai/pbxt/N323t5X69JB1MPD4w4cDIxK4rm0BG0W2JOWBrDrR4O9HTcyp/src_ref_image_1.png"],"src_video":"https://api.pruna.ai/pbxt/N323u1ljtNYyyaLrgw0ZLmXgepvWlBvxbJWi3sAa2VDPuNus/src_video.mp4"},"get_url":"https://api.pruna.ai/v1/predictions/status/pred_vace_001"}},"p-image":{"summary":"p-image response","value":{"id":"pred_pimage_001","model":"p-image","input":{"prompt":"A majestic lion standing on a rocky cliff at sunset","aspect_ratio":"16:9","seed":42},"get_url":"https://api.pruna.ai/v1/predictions/status/pred_pimage_001"}},"p-image-edit":{"summary":"p-image-edit response","value":{"id":"pred_pimageedit_001","model":"p-image-edit","input":{"prompt":"Transform the subject into a watercolor painting style","images":["https://api.pruna.ai/v1/files/example_image"],"aspect_ratio":"1:1","seed":123},"get_url":"https://api.pruna.ai/v1/predictions/status/pred_pimageedit_001"}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"422":{"$ref":"#/components/responses/ValidationError"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/v1/predictions/status/{id}":{"get":{"summary":"Get prediction status","description":"Check the status of a prediction request. This is the second step in the asynchronous workflow.\nWhen the prediction is completed successfully, the response will include download URLs for the generated content (images or videos).\n\nRate limit: 30,000 requests per minute.\n","operationId":"getPredictionStatus","tags":["Predictions"],"security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The prediction ID returned from the initial request","schema":{"type":"string","example":"1knpbkf075rme0csjqr987hg4w"}}],"responses":{"200":{"description":"Prediction status retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PredictionStatusResponse"},"examples":{"processing":{"summary":"Prediction in progress","value":{"status":"processing","message":"Generation in progress"}},"starting":{"summary":"Prediction starting","value":{"status":"starting","message":"Generation in progress"}},"completed":{"summary":"Prediction completed successfully","value":{"status":"succeeded","generation_url":"https://api.pruna.ai/v1/predictions/delivery/xezq/52UGYRrRfqViaKmvYsEnENTh0qLDAWHptQ8jOnEHu7XC6AtKA/output.mp4"}},"canceled":{"summary":"Prediction was canceled","value":{"status":"canceled","message":"Prediction was canceled"}},"failed":{"summary":"Prediction failed during processing","value":{"status":"failed","message":"Prediction failed","error":"Number of samples, -5, must be non-negative."}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/v1/predictions/delivery/{path}":{"get":{"summary":"Download generated content","description":"Download the generated content file. This is the third and final step in the workflow.\nUse the URL provided in the prediction status response to download your generated content.\n\nRate limit: 10,000 requests per minute.\n","operationId":"downloadContent","tags":["Content Delivery"],"security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"path","in":"path","required":true,"description":"The delivery path returned in the prediction status response","schema":{"type":"string","example":"xezq/52UGYRrRfqViaKmvYsEnENTh0qLDAWHptQ8jOnEHu7XC6AtKA/output_42_0.jpeg"}}],"responses":{"200":{"description":"Content file downloaded successfully","content":{"image/jpeg":{"schema":{"type":"string","format":"binary","description":"Generated image file"}},"image/png":{"schema":{"type":"string","format":"binary","description":"Generated image file"}},"image/webp":{"schema":{"type":"string","format":"binary","description":"Generated image file"}},"video/mp4":{"schema":{"type":"string","format":"binary","description":"Generated video file"}},"application/octet-stream":{"schema":{"type":"string","format":"binary","description":"Generated content file"}}},"headers":{"Content-Type":{"description":"The MIME type of the generated content","schema":{"type":"string","example":"image/jpeg"}},"Content-Length":{"description":"The size of the file in bytes","schema":{"type":"integer","example":2048576}},"Content-Disposition":{"description":"Suggested filename for download","schema":{"type":"string","example":"attachment; filename=\"output_42_0.jpeg\""}},"Cache-Control":{"description":"Caching directives","schema":{"type":"string","example":"public, max-age=3600"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"410":{"description":"Content expired or no longer available","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":{"code":"CONTENT_EXPIRED","message":"The requested content has expired and is no longer available","details":"Generated content is available for 24 hours after creation"}}}}},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/v1/files":{"post":{"summary":"Upload a file","description":"Upload a file (image or video) to be used as input for predictions. The uploaded file will be stored temporarily and can be referenced in prediction requests by its URL.\n\nUploaded files are available for a limited time and are automatically deleted after expiration. Use the returned URL in your prediction input fields that accept file URLs.\n\n**Rate limit:** 10000 requests per minute\n\n**Example with curl:**\n```bash\ncurl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: YOUR_API_KEY\" \\\n  -F \"content=@/path/to/your/file.jpg\"\n```\n\nNote: Use `-F` (form) with `@` prefix to upload a file from your local filesystem. The file path should be absolute or relative to your current directory.\n","operationId":"uploadFile","tags":["File Management"],"security":[{"ApiKeyAuth":[]}],"x-codeSamples":[{"lang":"Shell","label":"cURL","source":"curl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: YOUR_API_KEY\" \\\n  -F \"content=@/path/to/your/file.jpg\"\n"}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["content"],"properties":{"content":{"type":"string","format":"binary","description":"The file to upload (image or video)"}}}}}},"responses":{"201":{"description":"File uploaded successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FileUploadResponse"},"example":{"id":"fqadqq42xq","name":"test.jpg","content_type":"image/jpeg","size":185093,"etag":"\"14e9a51deaac6bee2dd8b5c52d7d0b5f\"","checksums":{"sha256":"aa10d5d09bcee5cb5d854bd81899308b0cf0c0c50e29d4f00c2c06e51f0e2fe6"},"metadata":{"content_length":185093,"width":1344,"height":768},"created_at":"2025-01-08T18:51:26.729Z","expires_at":"2025-01-09T18:51:26.729Z","urls":{"get":"https://api.pruna.ai/v1/files/fqadqq42xq"}}}}},"400":{"description":"Invalid file or missing content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":{"code":"INVALID_FILE","message":"The uploaded file is invalid or missing","details":"Please provide a valid image or video file"}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"413":{"description":"File too large","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":{"code":"FILE_TOO_LARGE","message":"The uploaded file exceeds the maximum size limit","details":"Maximum file size is 100MB"}}}}},"429":{"$ref":"#/components/responses/RateLimitExceeded"},"500":{"$ref":"#/components/responses/InternalServerError"}}}}},"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"apikey","description":"API key for authentication. You can obtain your API key from the Pruna AI dashboard.\nInclude it in the `apikey` header for all requests.\n"}},"schemas":{"PredictionRequest":{"type":"object","required":["input"],"oneOf":[{"$ref":"#/components/schemas/flux-dev"},{"$ref":"#/components/schemas/flux-dev-lora"},{"$ref":"#/components/schemas/wan-i2v"},{"$ref":"#/components/schemas/wan-t2v"},{"$ref":"#/components/schemas/wan-image-small"},{"$ref":"#/components/schemas/qwen-image"},{"$ref":"#/components/schemas/qwen-image-edit-plus"},{"$ref":"#/components/schemas/vace"},{"$ref":"#/components/schemas/p-image"},{"$ref":"#/components/schemas/p-image-edit"}]},"flux-dev":{"type":"object","required":["input"],"properties":{"input":{"type":"object","required":["prompt"],"properties":{"prompt":{"type":"string","description":"Text prompt for image generation"},"speed_mode":{"type":"string","description":"Speed optimization level","enum":["Lightly Juiced 🍊 (more consistent)","Juiced 🔥 (default)","Extra Juiced 🔥 (more speed)","Blink of an eye 👁️"],"default":"Juiced 🔥 (default)"},"num_inference_steps":{"type":"integer","description":"Number of inference steps","default":28},"guidance":{"type":"number","description":"Guidance scale","default":3.5},"seed":{"type":"integer","description":"Random seed (-1 for random)","default":-1},"aspect_ratio":{"type":"string","description":"Aspect ratio of output image","enum":["1:1","16:9","21:9","3:2","2:3","4:5","5:4","3:4","4:3","9:16","9:21"],"default":"1:1"},"image_size":{"type":"integer","description":"Base image size (longest side)","default":1024},"output_format":{"type":"string","description":"Output format","enum":["png","jpg","webp"],"default":"jpg"},"output_quality":{"type":"integer","description":"Output quality (for jpg and webp)","minimum":1,"maximum":100}}}}},"flux-dev-lora":{"type":"object","required":["input"],"properties":{"input":{"type":"object","required":["prompt"],"properties":{"prompt":{"type":"string","description":"Text prompt for image generation"},"lora":{"type":"string","description":"HuggingFace LoRA URL (e.g., owner/model-name)"},"lora_scale":{"type":"number","description":"LoRA application strength","minimum":-1,"maximum":3,"default":1},"extra_lora":{"type":"string","description":"Second HuggingFace LoRA URL"},"extra_lora_scale":{"type":"number","description":"Second LoRA application strength","minimum":-1,"maximum":3,"default":1},"image":{"type":"string","format":"uri","description":"Input image for img2img mode"},"prompt_strength":{"type":"number","description":"Prompt strength for img2img","minimum":0,"maximum":1,"default":0.8},"num_outputs":{"type":"integer","description":"Number of outputs to generate","minimum":1,"maximum":4,"default":1},"num_inference_steps":{"type":"integer","description":"Number of denoising steps","default":28},"guidance":{"type":"number","description":"Guidance scale","minimum":0,"maximum":10,"default":3},"seed":{"type":"integer","description":"Random seed"},"aspect_ratio":{"type":"string","description":"Aspect ratio of output image","enum":["1:1","16:9","21:9","3:2","2:3","4:5","5:4","3:4","4:3","9:16","9:21"],"default":"1:1"},"output_format":{"type":"string","description":"Output format","enum":["png","jpg","webp"],"default":"jpg"},"output_quality":{"type":"integer","description":"Output quality (for jpg/webp)","minimum":1,"maximum":100,"default":80},"speed_mode":{"type":"string","description":"Speed optimization level","enum":["Base Model (compiled)","Lightly Juiced 🍊","Juiced 🧃","Extra Juiced 🔥"],"default":"Juiced 🧃"},"megapixels":{"type":"string","description":"Approximate megapixels for output","enum":["1","0.25"],"default":"1"}},"additionalProperties":false}}},"wan-i2v":{"type":"object","required":["input"],"properties":{"input":{"type":"object","required":["prompt","image"],"properties":{"prompt":{"type":"string","description":"Text prompt for video generation"},"image":{"type":"string","format":"uri","description":"Input image to generate video from"},"last_image":{"type":"string","format":"uri","description":"Optional last image to condition the video generation. If provided, creates smoother transitions between frames"},"num_frames":{"type":"integer","description":"Number of video frames. 81 frames give the best results","minimum":81,"maximum":121,"default":81},"resolution":{"type":"string","description":"Resolution of video. 16:9 corresponds to 832x480px, and 9:16 is 480x832px","enum":["480p","720p"],"default":"480p"},"frames_per_second":{"type":"integer","description":"Frames per second. Note that the pricing of this model is based on the video duration at 16 fps","minimum":5,"maximum":30,"default":16},"interpolate_output":{"type":"boolean","description":"Interpolate the generated video to 30 FPS using ffmpeg","default":false},"go_fast":{"type":"boolean","description":"Go fast","default":true},"sample_shift":{"type":"number","description":"Sample shift factor","minimum":1,"maximum":20,"default":12},"seed":{"type":"integer","description":"Random seed. Leave blank for random"},"disable_safety_checker":{"type":"boolean","description":"Disable safety checker for generated video","default":false},"lora_weights_transformer":{"type":"string","format":"uri","description":"Load LoRA weights for the HIGH transformer. Supports arbitrary .safetensors URLs from the Internet (e.g., 'https://huggingface.co/TheRaf7/instagirl-v2/resolve/main/Instagirlv2.0_hinoise.safetensors')"},"lora_scale_transformer":{"type":"number","description":"Determines how strongly the transformer LoRA should be applied","default":1},"lora_weights_transformer_2":{"type":"string","format":"uri","description":"Load LoRA weights for the LOW transformer_2. Supports arbitrary .safetensors URLs from the Internet. Can be different from transformer LoRA (e.g., 'https://huggingface.co/TheRaf7/instagirl-v2/resolve/main/Instagirlv2.0_lownoise.safetensors')"},"lora_scale_transformer_2":{"type":"number","description":"Determines how strongly the transformer_2 LoRA should be applied","default":1}},"additionalProperties":false}}},"wan-t2v":{"type":"object","required":["input"],"properties":{"input":{"type":"object","required":["prompt"],"properties":{"prompt":{"type":"string","description":"Text prompt for video generation"},"optimize_prompt":{"type":"boolean","description":"Translate prompt to Chinese before generation","default":false},"num_frames":{"type":"integer","description":"Number of video frames. 81 frames give the best results","minimum":81,"maximum":121,"default":81},"aspect_ratio":{"type":"string","description":"Aspect ratio of video. 16:9 corresponds to 832x480px, and 9:16 is 480x832px","enum":["16:9","9:16"],"default":"16:9"},"resolution":{"type":"string","description":"Resolution of video. 16:9 corresponds to 832x480px, and 9:16 is 480x832px","enum":["480p","720p"],"default":"480p"},"frames_per_second":{"type":"integer","description":"Frames per second. Note that the pricing of this model is based on the video duration at 16 fps","minimum":5,"maximum":30,"default":16},"interpolate_output":{"type":"boolean","description":"Interpolate the generated video to 30 FPS using ffmpeg","default":false},"go_fast":{"type":"boolean","description":"Go fast","default":true},"sample_shift":{"type":"number","description":"Sample shift factor","minimum":1,"maximum":20,"default":12},"seed":{"type":"integer","description":"Random seed. Leave blank for random"},"disable_safety_checker":{"type":"boolean","description":"Disable safety checker for generated video","default":false},"lora_weights_transformer":{"type":"string","format":"uri","description":"Load LoRA weights for transformer. Supports arbitrary .safetensors URLs from the Internet (e.g., 'https://huggingface.co/Viktor1717/scandinavian-interior-style1/resolve/main/my_first_flux_lora_v1.safetensors')"},"lora_scale_transformer":{"type":"number","description":"Determines how strongly the transformer LoRA should be applied","default":1},"lora_weights_transformer_2":{"type":"string","format":"uri","description":"Load LoRA weights for transformer_2. Supports arbitrary .safetensors URLs from the Internet. Can be different from transformer LoRA"},"lora_scale_transformer_2":{"type":"number","description":"Determines how strongly the transformer_2 LoRA should be applied","default":1}},"additionalProperties":false}}},"wan-image-small":{"type":"object","required":["input"],"properties":{"input":{"type":"object","required":["prompt"],"properties":{"prompt":{"type":"string","description":"Text prompt for image generation"},"juiced":{"type":"boolean","description":"Enable faster generation","default":false},"aspect_ratio":{"type":"string","description":"Aspect ratio for the generated image. Use 'custom' to specify width and height manually.","enum":["1:1","16:9","9:16","4:3","3:4","21:9","custom"],"default":"16:9"},"width":{"type":"integer","description":"Width of the generated image. Only used when aspect_ratio=custom. Must be a multiple of 16.","minimum":256,"maximum":900},"height":{"type":"integer","description":"Height of the generated image. Only used when aspect_ratio=custom. Must be a multiple of 16.","minimum":256,"maximum":900},"seed":{"type":"integer","description":"Random seed for reproducible generation"},"output_format":{"type":"string","description":"Output format","enum":["png","jpg","webp"],"default":"jpg"},"output_quality":{"type":"integer","description":"Output quality (for jpg/webp)","minimum":1,"maximum":100,"default":80}},"additionalProperties":false}}},"qwen-image":{"type":"object","required":["input"],"properties":{"input":{"type":"object","required":["prompt"],"properties":{"prompt":{"type":"string","description":"Text prompt for image generation"},"enhance_prompt":{"type":"boolean","description":"Enhance the prompt with positive magic","default":false},"lora_weights":{"type":"string","format":"uri","description":"Load LoRA weights. Supports arbitrary .safetensors URLs, tar files, and zip files from the Internet"},"replicate_weights":{"type":"string","format":"uri","description":"Load LoRA weights from Replicate training. Supports arbitrary .safetensors URLs, tar files, and zip files"},"lora_scale":{"type":"number","description":"Determines how strongly the main LoRA should be applied","default":1},"extra_lora_weights":{"type":"array","items":{"type":"string","format":"uri"},"description":"Additional LoRA weights as an array of URLs. Same formats supported as lora_weights"},"extra_lora_scale":{"type":"array","items":{"type":"number"},"description":"Scales for additional LoRAs as an array of numbers. Must match the number of weights in extra_lora_weights"},"image":{"type":"string","format":"uri","description":"Input image for img2img pipeline"},"strength":{"type":"number","description":"Strength for img2img pipeline","minimum":0,"maximum":1,"default":0.9},"negative_prompt":{"type":"string","description":"Negative prompt for generated image","default":" "},"aspect_ratio":{"type":"string","description":"Aspect ratio for the generated image","enum":["1:1","16:9","9:16","4:3","3:4"],"default":"16:9"},"image_size":{"type":"string","description":"Image size for the generated image","enum":["optimize_for_quality","optimize_for_speed"],"default":"optimize_for_quality"},"go_fast":{"type":"boolean","description":"Run faster predictions with additional optimizations","default":true},"num_inference_steps":{"type":"integer","description":"Number of denoising steps. Recommended range is 28-50","minimum":1,"maximum":50,"default":30},"guidance":{"type":"number","description":"Guidance for generated image. Lower values can give more realistic images","minimum":0,"maximum":10,"default":3},"seed":{"type":"integer","description":"Random seed. Set for reproducible generation"},"output_format":{"type":"string","description":"Format of the output images","enum":["webp","jpg","png"],"default":"webp"},"output_quality":{"type":"integer","description":"Quality when saving the output images","minimum":0,"maximum":100,"default":80},"disable_safety_checker":{"type":"boolean","description":"Disable safety checker for generated images","default":false}},"additionalProperties":false}}},"qwen-image-edit-plus":{"type":"object","required":["input"],"properties":{"input":{"type":"object","required":["image","prompt"],"properties":{"prompt":{"type":"string","description":"Text instruction on how to edit the given image"},"image":{"oneOf":[{"type":"string","format":"uri"},{"type":"array","items":{"type":"string","format":"uri"},"minItems":1,"maxItems":2}],"description":"Images to use as reference. Must be jpeg, png, gif, or webp"},"aspect_ratio":{"type":"string","description":"Aspect ratio for the generated image","enum":["match_input_image","16:9","9:16","1:1","4:3","3:4"],"default":"match_input_image"},"go_fast":{"type":"boolean","description":"Run faster predictions with additional optimizations","default":true},"seed":{"type":"integer","description":"Random seed. Set for reproducible generation"},"output_format":{"type":"string","description":"Format of the output images","enum":["webp","jpg","png"],"default":"webp"},"output_quality":{"type":"integer","description":"Quality when saving the output images","minimum":0,"maximum":100,"default":95},"disable_safety_checker":{"type":"boolean","description":"Disable safety checker for generated images","default":false}},"additionalProperties":false}}},"vace":{"type":"object","required":["input"],"properties":{"input":{"type":"object","required":["prompt"],"properties":{"prompt":{"type":"string","description":"Text prompt describing the edit"},"src_video":{"type":"string","description":"Input video to edit (HTTP URL or base64 data URI)"},"src_mask":{"type":"string","description":"Input mask video or image (HTTP URL or base64 data URI)"},"src_ref_images":{"type":"array","items":{"type":"string"},"description":"Array of reference images (HTTP URLs or base64 data URIs)"},"speed_mode":{"type":"string","description":"Speed optimization level","enum":["Lightly Juiced 🍊 (more consistent)","Juiced 🔥 (more speed)","Extra Juiced 🚀 (even more speed)"],"default":"Lightly Juiced 🍊 (more consistent)"},"frame_num":{"type":"integer","description":"Number of frames to generate","default":81},"size":{"type":"string","description":"Output resolution","enum":["720*1280","1280*720","480*832","832*480"],"default":"832*480"},"seed":{"type":"integer","description":"Random seed (-1 for random)","default":-1},"sample_shift":{"type":"integer","description":"Sample shift parameter","default":16},"sample_solver":{"type":"string","description":"Sample solver algorithm","enum":["unipc","dpm++"],"default":"unipc"},"sample_steps":{"type":"integer","description":"Number of sampling steps","default":50},"sample_guide_scale":{"type":"number","description":"Guidance scale for sampling","default":5}},"additionalProperties":false}}},"p-image":{"type":"object","required":["input"],"properties":{"input":{"type":"object","required":["prompt"],"properties":{"prompt":{"type":"string","description":"Text prompt for image generation"},"aspect_ratio":{"type":"string","description":"Aspect ratio for the generated image. Use 'custom' to specify width and height manually.","enum":["1:1","16:9","9:16","4:3","3:4","3:2","2:3","custom"],"default":"16:9"},"width":{"type":"integer","description":"Width of the generated image. Only used when aspect_ratio=custom. Must be a multiple of 16.","minimum":256,"maximum":1440},"height":{"type":"integer","description":"Height of the generated image. Only used when aspect_ratio=custom. Must be a multiple of 16.","minimum":256,"maximum":1440},"seed":{"type":"integer","description":"Random seed for reproducible generation"},"disable_safety_checker":{"type":"boolean","description":"Disable safety checker for generated images","default":false}},"additionalProperties":false}}},"p-image-edit":{"type":"object","required":["input"],"properties":{"input":{"type":"object","required":["prompt","images"],"properties":{"prompt":{"type":"string","description":"Text prompt for image editing"},"images":{"type":"array","items":{"type":"string","format":"uri"},"description":"Images to use as reference (1-5 images)","minItems":1,"maxItems":5},"mode":{"type":"string","description":"Mode to use with P-Edit","enum":["default","multiple_angles","relight","light_restoration","white_to_scene","fusion","add_characters","next_scene","style_consistency","subject_consistency"],"default":"default"},"aspect_ratio":{"type":"string","description":"Aspect ratio for the generated image","enum":["match_input_image","1:1","16:9","9:16","4:3","3:4","3:2","2:3"],"default":"match_input_image"},"seed":{"type":"integer","description":"Random seed for reproducible generation"},"disable_safety_checker":{"type":"boolean","description":"Disable safety checker for generated images","default":false},"turbo":{"type":"boolean","description":"If turned on, the model will run faster with additional optimizations. For complicated tasks, it is recommended to turn this off.","default":true}},"additionalProperties":false}}},"flux-2-fast":{"type":"object","required":["input"],"properties":{"input":{"type":"object","required":["prompt"],"properties":{"prompt":{"type":"string","description":"Text prompt for image generation."},"aspect_ratio":{"type":"string","description":"Aspect ratio for the generated image.","enum":["1:1","16:9","9:16","4:3","3:4","3:2","2:3","custom"],"default":"1:1"},"images":{"type":"array","items":{"type":"string","format":"uri"},"description":"Images to use as a reference. For editing task, provide the main image as the first image.","default":[]},"go_fast":{"type":"boolean","description":"Run faster predictions with additional optimizations.","default":true},"width":{"type":"integer","description":"Width of the generated image. Only used when aspect_ratio=custom. Must be a multiple of 16.","minimum":256,"maximum":2048,"multipleOf":16},"height":{"type":"integer","description":"Height of the generated image. Only used when aspect_ratio=custom. Must be a multiple of 16.","minimum":256,"maximum":2048,"multipleOf":16},"seed":{"type":"integer","description":"Random seed. Set for reproducible generation."},"guidance":{"type":"number","description":"Guidance scale.","default":2.5},"disable_safety_checker":{"type":"boolean","description":"Disable safety checker for generated images.","default":false}},"additionalProperties":false}}},"PredictionResponse":{"type":"object","required":["id","model","input","get_url"],"properties":{"id":{"type":"string","description":"Unique identifier for the prediction","example":"1zww7deyssrme0csqwr90phzzr"},"model":{"type":"string","description":"Model identifier used for this prediction","example":"vace"},"input":{"type":"object","description":"The input parameters provided for this prediction","additionalProperties":true},"get_url":{"type":"string","format":"uri","description":"URL to check prediction status","example":"https://api.pruna.ai/v1/predictions/status/1zww7deyssrme0csqwr90phzzr"}}},"PredictionStatusResponse":{"type":"object","required":["status"],"properties":{"status":{"type":"string","description":"Current status of the prediction","enum":["starting","processing","succeeded","failed","canceled"],"example":"processing"},"generation_url":{"type":"string","description":"URL to download the generated content (available when status is 'succeeded')","example":"https://api.pruna.ai/v1/predictions/delivery/xezq/52UGYRrRfqViaKmvYsEnENTh0qLDAWHptQ8jOnEHu7XC6AtKA/output.mp4"},"message":{"type":"string","description":"Status message","example":"Generation in progress"},"error":{"type":"string","description":"Error details (available when status is 'failed')","example":"Number of samples, -5, must be non-negative."}}},"PredictionStatus":{"type":"string","enum":["starting","processing","succeeded","failed","canceled"],"description":"Current status of the prediction:\n- `starting`: Prediction is being queued\n- `processing`: Model is generating content\n- `succeeded`: Content generated successfully\n- `failed`: Prediction failed with error\n- `canceled`: Prediction was canceled by user\n"},"OutputFile":{"type":"object","required":["url","filename","content_type"],"properties":{"url":{"type":"string","description":"Relative URL path for downloading the generated content file","example":"/v1/predictions/delivery/xezq/52UGYRrRfqViaKmvYsEnENTh0qLDAWHptQ8jOnEHu7XC6AtKA/output.mp4"},"filename":{"type":"string","description":"Filename of the generated content","example":"output.mp4"},"content_type":{"type":"string","description":"MIME type of the generated content (e.g., image/jpeg, video/mp4)","example":"video/mp4"},"size":{"type":"integer","description":"File size in bytes","example":15728640}}},"PredictionError":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Error code for programmatic handling","enum":["INVALID_INPUT","MODEL_ERROR","TIMEOUT","QUOTA_EXCEEDED","INTERNAL_ERROR"],"example":"INVALID_INPUT"},"message":{"type":"string","description":"Human-readable error message","example":"Invalid prompt: prompt too long"},"details":{"type":"string","description":"Additional error details","example":"Prompt must be less than 1000 characters"}}},"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Machine-readable error code"},"message":{"type":"string","description":"Human-readable error message"},"details":{"type":"string","description":"Additional error context"}}},"request_id":{"type":"string","description":"Unique request identifier for debugging","example":"req_1234567890"}}},"FileUploadResponse":{"type":"object","required":["id","name","content_type","size","created_at","expires_at","urls"],"properties":{"id":{"type":"string","description":"Unique identifier for the uploaded file","example":"fqadqq42xq"},"name":{"type":"string","description":"Original filename","example":"test.jpg"},"content_type":{"type":"string","description":"MIME type of the uploaded file","example":"image/jpeg"},"size":{"type":"integer","description":"File size in bytes","example":185093},"etag":{"type":"string","description":"Entity tag for cache validation","example":"\"14e9a51deaac6bee2dd8b5c52d7d0b5f\""},"checksums":{"type":"object","description":"File integrity checksums","properties":{"sha256":{"type":"string","description":"SHA-256 hash of the file content","example":"aa10d5d09bcee5cb5d854bd81899308b0cf0c0c50e29d4f00c2c06e51f0e2fe6"}}},"metadata":{"type":"object","description":"Additional file metadata (varies by file type)","properties":{"content_length":{"type":"integer","description":"Content length in bytes","example":185093},"width":{"type":"integer","description":"Image width in pixels (for images only)","example":1344},"height":{"type":"integer","description":"Image height in pixels (for images only)","example":768}}},"created_at":{"type":"string","format":"date-time","description":"Timestamp when the file was uploaded","example":"2025-01-08T18:51:26.729Z"},"expires_at":{"type":"string","format":"date-time","description":"Timestamp when the file will expire and be deleted","example":"2025-01-09T18:51:26.729Z"},"urls":{"type":"object","description":"URLs to access the uploaded file","required":["get"],"properties":{"get":{"type":"string","format":"uri","description":"URL to retrieve the file. Use this URL in prediction input fields that accept file URLs.","example":"https://api.pruna.ai/v1/files/fqadqq42xq"}}}}}},"responses":{"BadRequest":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Invalid request parameters","details":"Field 'model' is required"},"request_id":"req_1234567890"}}}},"Unauthorized":{"description":"Authentication failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":{"code":"AUTHENTICATION_FAILED","message":"Invalid or missing API key","details":"Include your API key in the 'apikey' header"},"request_id":"req_1234567890"}}}},"NotFound":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":{"code":"NOT_FOUND","message":"The requested resource was not found","details":"Prediction ID does not exist or has expired"},"request_id":"req_1234567890"}}}},"ValidationError":{"description":"Request validation failed - invalid input parameters","content":{"application/json":{"schema":{"type":"object","required":["detail","status","title"],"properties":{"detail":{"type":"string","description":"Human-readable error summary","example":"- input.num_inference_steps: Invalid type. Expected: integer, given: string\n"},"status":{"type":"integer","description":"HTTP status code","example":422},"title":{"type":"string","description":"Error title","example":"Input validation failed"},"invalid_fields":{"type":"array","description":"List of field-specific validation errors","items":{"type":"object","required":["type","field","description"],"properties":{"type":{"type":"string","description":"Type of validation error","example":"invalid_type"},"field":{"type":"string","description":"Field path that failed validation","example":"input.num_inference_steps"},"description":{"type":"string","description":"Error description","example":"Invalid type. Expected: integer, given: string"}}}}}},"examples":{"type_error":{"summary":"Invalid parameter type","value":{"detail":"- input.num_inference_steps: Invalid type. Expected: integer, given: string\n","status":422,"title":"Input validation failed","invalid_fields":[{"type":"invalid_type","field":"input.num_inference_steps","description":"Invalid type. Expected: integer, given: string"}]}},"missing_field":{"summary":"Required field missing","value":{"detail":"- input.prompt: Field required\n","status":422,"title":"Input validation failed","invalid_fields":[{"type":"missing","field":"input.prompt","description":"Field required"}]}}}}}},"InternalServerError":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":{"code":"INTERNAL_ERROR","message":"An unexpected error occurred","details":"Please try again later or contact support if the problem persists"}}}}},"RateLimitExceeded":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":{"code":"RATE_LIMIT_EXCEEDED","message":"Too many requests","details":"You have exceeded the rate limit for this endpoint. Please wait before making additional requests."},"request_id":"req_1234567890"}}},"headers":{"RateLimit-Limit":{"description":"Allowed limit in the timeframe","schema":{"type":"string","example":"10000"}},"RateLimit-Remaining":{"description":"Number of available requests remaining","schema":{"type":"string","example":"0"}},"RateLimit-Reset":{"description":"The time remaining, in seconds, until the rate limit quota is reset","schema":{"type":"string","example":"42"}}}}}},"tags":[{"name":"Predictions","description":"Core prediction workflow operations for submitting requests and tracking their progress.\n\nThe asynchronous prediction workflow consists of three steps:\n1. Submit a prediction request (with Model header)\n2. Poll for status updates\n3. Download the generated content\n\nAlternatively, use the synchronous workflow by setting Try-Sync: true header, which returns the final result directly if generation completes within 60 seconds.\n"},{"name":"File Management","description":"Upload files (images or videos) to be used as input for predictions. Uploaded files are stored temporarily and can be referenced in prediction requests by their URL.\n"},{"name":"Content Delivery","description":"Download generated content files (images or videos). Content is typically available for 24 hours after generation.\n"}],"externalDocs":{"description":"Model Documentation","url":"https://docs.api.pruna.ai"}}
````
