Media tools

AI video upscaler API: scale ratio, enhancement tiers, and cost

POST /v1/video-upscale-1.0/upscale takes a public HTTPS video URL, a scale_ratio from 1.1 to 4, and a fast, standard, or pro enhancement tier.

5 min readSume
All posts

To upscale a video with the Sume API, send a public HTTPS video_url to POST /v1/video-upscale-1.0/upscale with a scale_ratio from 1.1 to 4 (default 2) and an enhancement_tier of fast (the default), standard, or pro. Sume Video Upscale 1.0 (sume/video-upscale-1.0) runs it as a job, reserves usage from your duration_seconds hint, and returns a Sume-hosted video.

Video Upscale 1.0 is specified in the OpenAPI document behind the Sume API reference. Jobs, results, and billing follow the API reference and Core concepts docs pages. All were read on 2026-09-26.

How do I upscale a video with the API?

video_url is the only required field. The schema has no model field and accepts no fields beyond those in the table. The same body also works at POST /v1/models/sume/video-upscale-1.0/runs. The example below sends a webhook URL without a mode, which selects webhook.

Video Upscale 1.0 request fields, from the Sume API reference, read 2026-09-26.
FieldAcceptsDefault
video_urlPublic HTTPS video URL (required)None
scale_ratioA number from 1.1 to 42
upscale_factorAlias of scale_ratio, 1.1 to 4. scale_ratio overrides it.2
enhancement_tierfast, standard, or profast
duration_secondsInput seconds for the reservation, a number from 1 to 305 seconds reserved
modeasync, sync, subscribe, or webhookasync
wait_timeout_seconds0–30 seconds of blocking wait for sync or subscribeNot stated
webhook_urlPublic HTTPS callback URL, up to 2,048 charactersNone
metadataYour own object, stored with the job requestNone
curl -X POST https://api.sume.com/v1/video-upscale-1.0/upscale \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: upscale-clip-001" \
  -d '{
    "video_url": "https://example.com/videos/clip.mp4",
    "scale_ratio": 2,
    "enhancement_tier": "standard",
    "duration_seconds": 12,
    "webhook_url": "https://example.com/webhooks/sume"
  }'

How do I set the scale ratio and enhancement tier?

Send scale_ratio or its alias upscale_factor. Both take a number from 1.1 to 4 and default to 2, and if you send both, scale_ratio wins. The floor is not the same as on Image Upscale 1.0, whose upscale_factor starts at 1.

enhancement_tier is a separate choice: fast, standard, or pro, with fast as the default. The API reference lists only the three values and the default, and API pricing shows one Video upscale rate, not one per tier.

How does duration_seconds affect what I pay?

API pricing lists Video upscale at $0.009 per video second, measured on the input clip, plus a 5.5% agent fee by default.

duration_seconds is the input duration Sume reserves for when you submit, from 1 to 30. Omit it and Sume reserves 5 seconds. At the list rate, that default reservation is $0.045, and 30 seconds, the most the field accepts, is $0.27, both before the agent fee.

Sume captures the cost when the job succeeds and refunds a job that fails or is canceled before capture. The submit response shows the estimate as usage.billable_amount_usd. A 402 means the balance cannot cover it, and no job starts.

How do I get the upscaled video?

Every mode returns the job id in the first response. sync and subscribe hold the request for at most 30 seconds, which bounds the HTTP wait, not the job, and the schema recommends async or webhook for new integrations.

  • async: poll GET /v1/jobs/:id/status, waiting at least next_poll_after_seconds between polls, then read the Sume-hosted video from GET /v1/jobs/:id/result.
  • webhook: Sume stores your callback URL and delivers only job.completed, job.failed, or job.canceled. There are no progress callbacks, so keep polling available as a backup.
  • POST /v1/jobs/:id/cancel stops a job only before generation starts. After that it returns 409 job_generation_already_started.

What does Video Upscale 1.0 not do?

It enlarges one clip you already have. Cutting, cropping, or filtering a clip is a different set of tools, covered in Trim, filter, or detach audio from a video. Other limits:

  • No model choice. Model ids are not accepted in the request.
  • scale_ratio and upscale_factor stop at 4, and duration_seconds at 30.
  • One video per job: video_url is a single URL.
  • No progress callbacks. A webhook fires only when the job ends.

Sources

Related posts

Written by Sume