# Scale Video Utilities for scaling videos, enabling resolution adjustment while maintaining visual quality and aspect ratio. ## API Information - **Model Slug:** scale-video - **Branded URL:** https://www.eachlabs.ai/eachlabs/eachlabs/scale-video - **Provider:** each::labs - **Category:** Voice to Video - **Output Type:** video - **Status:** active - **Version:** 0.0.1 - **Base Cost:** Execution-time pricing: $0.00108/sec based on run_time - **Estimated Processing Time:** 5 seconds - **Last Updated:** 2026-07-13 - **Interactive Demo:** https://www.eachlabs.ai/ai-models/scale-video ## Pricing - **Charge Type:** dynamic - **Pricing Details:** Execution-time pricing: $0.00108/sec based on run_time ### Pricing Rules | Condition | Pricing | | --- | --- | | Rule 1 | Execution-time pricing: $0.00108/sec based on run_time | ## Input Schema | Parameter | Type | Required | Default | Constraints | Description | |-----------|------|----------|---------|-------------|-------------| | video_url | string | Yes | - | - | URL of the video file to scale/resize. Height and Width of the video must be even numbers for compatibility with video codecs. | | width | integer | Yes | - | 2–7680 | Target width in pixels | | height | integer | Yes | - | 2–4320 | Target height in pixels | | mode | string | No | stretch | stretch,pad,crop | Scaling mode. 'stretch' scales the video to the exact target dimensions (may distort aspect ratio). 'pad' scales to fit within the target dimensions while preserving aspect ratio, then pads with the chosen color to fill the remaining space (letterbox/pillarbox). 'crop' scales to cover the target dimensions while preserving aspect ratio, then center-crops to the exact target size. | | pad_color | string | No | black | black,white,red,green,blue,gray | Padding color when mode is 'pad'. Ignored for other modes. | | codec | string | No | libx264 | libx264,libx265 | Video codec to use for encoding. libx264 (H.264) is widely compatible, libx265 (H.265/HEVC) offers better compression. | | preset | string | No | fast | ultrafast,fast,medium,slow | Encoding speed preset. Slower presets give better compression but take longer. | | crf | integer | No | 18 | 0–51 | Constant Rate Factor for quality (0-51). Lower values mean better quality and larger files. 18 is visually lossless for most content. | ## Example Request ```bash curl -X POST https://api.eachlabs.ai/v1/prediction/ \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "scale-video", "input": { "width": 1080, "video_url": "https://storage.googleapis.com/magicpoint/inputs/scale-video-input.mp4", "height": 1080 } }' ``` ## Output Schema Response returned by `GET /v1/prediction/{id}` when the job completes: ```json { "status": "success", "predictionID": "string", "output": "string (URL of generated video)", "metrics": { "predict_time": "number (seconds)" } } ``` ## Polling ```bash curl https://api.eachlabs.ai/v1/prediction/{PREDICTION_ID} \ -H "Authorization: Bearer YOUR_API_KEY" ``` | Status | Meaning | |--------|---------| | `processing` | Still running — poll again | | `success` | Done — read `output` | | `error` | Failed — read `message` / `details` | ## Webhook (alternative to polling) Pass `"webhook_url": "https://your.host/path"` in the create request. Eachlabs POSTs this payload when the job ends: ```json { "exec_id": "prediction-uuid", "status": "succeeded", "output": "https://...", "error": "" } ``` `status` is `"succeeded"` or `"failed"`. `exec_id` equals the `predictionID` from create. Return 2xx within 30 seconds. ## Errors Error body: `{ "status": "error", "message": "...", "details": "..." }` | Code | Meaning | |------|---------| | `400` | Invalid input | | `401` | Missing / invalid `Authorization` bearer token | | `404` | Unknown model or prediction id | | `429` | Rate limit — 100 creates / min, 10 concurrent per key | | `5xx` | Retry with backoff | ## Overview Scale Video from each::labs is a specialized utility model designed for scaling videos, enabling seamless resolution adjustments while preserving visual quality, aspect ratio, and motion fidelity. Part of the eachlabs family, it addresses the common challenge of upscaling low-resolution footage for professional use without introducing artifacts or distortions. What sets **Scale Video** apart is its intelligent preservation of original aspect ratios like 16:9, 9:16, and 1:1, making it ideal for adapting content across platforms from social media to cinematic outputs. Available through the eachlabs platform at eachlabs.ai, this model supports workflows in voice-to-video and related categories, ensuring outputs remain crisp up to 1080p or higher. Creators and developers rely on **Scale Video** to enhance existing clips efficiently, maintaining temporal coherence and detail in multi-shot sequences. ## Usage Notes - API Base URL: `https://api.eachlabs.ai/v1` - Authentication: send `Authorization: Bearer YOUR_API_KEY`. Generate a key from the Eachlabs dashboard at https://www.eachlabs.ai/dashboard/api-keys. - File-typed parameters (`*_url`, `image_url`, `video_url`, `audio_url`, etc.) accept publicly-reachable HTTPS URLs only. Upload your asset first (GCS / S3 / your CDN) and pass the resulting URL. Data-URIs and localhost URLs are rejected. - For structured parameters (arrays / objects) send real JSON values, not stringified payloads. - Monetary values are reported in USD; per-token / per-megapixel rates may be billed in micro-cents internally. - Prefer `webhook_url` over polling for long-running predictions — see the Webhook Callback section.