> ## Documentation Index
> Fetch the complete documentation index at: https://docs.goenhance.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Video Upscaler Pro

> Enhance an existing video with one of four modes. `general`, `anime` and `portrait` double the width and height (for example 1080p becomes 4K) while keeping the frame rate; `frame_interpolation` keeps the resolution and doubles the frame rate for smoother motion, with the same duration. The original audio track is kept and the result is an H.264 MP4 with all source metadata removed.

| `enhance_type` | Best for | Output |
|---|---|---|
| `general` (default) | Everyday footage with compression, noise or blur | 2× width and height |
| `anime` | Anime, cartoons and CG animation — preserves line work and flat colour | 2× width and height |
| `portrait` | People, interviews and close-ups — focuses on facial detail | 2× width and height |
| `frame_interpolation` | Choppy or low-frame-rate motion | Same resolution, 2× frame rate |

**Pricing** — per second of the **source video** (USD at $0.02/token). Upscaling modes are priced by the shorter side of the source:

| Mode | Source shorter side | tokens/s | USD/s |
|---|---|---|---|
| `general` / `anime` / `portrait` | up to 540 px | 3 | $0.06 |
| `general` / `anime` / `portrait` | 541–720 px | 4 | $0.08 |
| `general` / `anime` / `portrait` | 721–1080 px | 6 | $0.12 |
| `frame_interpolation` | any | 2 | $0.04 |

⚠️ There is no `duration` parameter. The source video is measured server-side and the whole clip is processed; the measured length, rounded up to whole seconds, is what you are charged for. For example, a 10.2-second 1080p clip with `general` is billed as 11 seconds:
- 66 tokens
- = $1.32

**Limits** — requests outside these are rejected before any tokens are deducted:

| | limit |
|---|---|
| `video_url` | `https://` only, up to 300MB, av1 is not supported |
| Resolution | landscape or portrait; shorter side 128–1080 px, longer side at most 2048 px (up to 2048×1080) |
| Length | 1-60s; at most 30s when the frame rate is above 30fps |
| Frame rate | up to 60fps; `frame_interpolation` needs a constant frame rate |

**Processing time:** much slower than real time — roughly 30 seconds per second of 1080p video when upscaling to 4K, less for smaller sources. Use `custom_callback_url` rather than tight polling.

Returns an `img_uuid`; poll GET /api/v1/jobs/detail (or use `custom_callback_url`) to get the result.



## OpenAPI

````yaml api-reference/video-generations/openapi-video-upscaler-pro.json POST /api/v1/videos/generations
openapi: 3.1.0
info:
  title: GoEnhance API - Video Upscaler Pro
  description: Video Upscaler Pro
  version: 1.0.0
servers:
  - url: https://api.goenhance.ai
security: []
paths:
  /api/v1/videos/generations:
    post:
      tags:
        - VideoGenerations
      summary: Video Upscaler Pro
      description: >-
        Enhance an existing video with one of four modes. `general`, `anime` and
        `portrait` double the width and height (for example 1080p becomes 4K)
        while keeping the frame rate; `frame_interpolation` keeps the resolution
        and doubles the frame rate for smoother motion, with the same duration.
        The original audio track is kept and the result is an H.264 MP4 with all
        source metadata removed.


        | `enhance_type` | Best for | Output |

        |---|---|---|

        | `general` (default) | Everyday footage with compression, noise or blur
        | 2× width and height |

        | `anime` | Anime, cartoons and CG animation — preserves line work and
        flat colour | 2× width and height |

        | `portrait` | People, interviews and close-ups — focuses on facial
        detail | 2× width and height |

        | `frame_interpolation` | Choppy or low-frame-rate motion | Same
        resolution, 2× frame rate |


        **Pricing** — per second of the **source video** (USD at $0.02/token).
        Upscaling modes are priced by the shorter side of the source:


        | Mode | Source shorter side | tokens/s | USD/s |

        |---|---|---|---|

        | `general` / `anime` / `portrait` | up to 540 px | 3 | $0.06 |

        | `general` / `anime` / `portrait` | 541–720 px | 4 | $0.08 |

        | `general` / `anime` / `portrait` | 721–1080 px | 6 | $0.12 |

        | `frame_interpolation` | any | 2 | $0.04 |


        ⚠️ There is no `duration` parameter. The source video is measured
        server-side and the whole clip is processed; the measured length,
        rounded up to whole seconds, is what you are charged for. For example, a
        10.2-second 1080p clip with `general` is billed as 11 seconds:

        - 66 tokens

        - = $1.32


        **Limits** — requests outside these are rejected before any tokens are
        deducted:


        | | limit |

        |---|---|

        | `video_url` | `https://` only, up to 300MB, av1 is not supported |

        | Resolution | landscape or portrait; shorter side 128–1080 px, longer
        side at most 2048 px (up to 2048×1080) |

        | Length | 1-60s; at most 30s when the frame rate is above 30fps |

        | Frame rate | up to 60fps; `frame_interpolation` needs a constant frame
        rate |


        **Processing time:** much slower than real time — roughly 30 seconds per
        second of 1080p video when upscaling to 4K, less for smaller sources.
        Use `custom_callback_url` rather than tight polling.


        Returns an `img_uuid`; poll GET /api/v1/jobs/detail (or use
        `custom_callback_url`) to get the result.
      parameters:
        - name: Authorization
          in: header
          description: ''
          required: false
          example: '{{Authorization}}'
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                model:
                  type: string
                  enum:
                    - video-upscaler-pro
                  description: Model name. Must be `video-upscaler-pro`.
                video_url:
                  type: string
                  format: uri
                  description: >-
                    Source video URL. Must be an `https://` link that is
                    publicly reachable. Up to 300MB; shorter side 128–1080 px
                    and longer side at most 2048 px; 1-60s long (at most 30s
                    above 30fps); up to 60fps; av1 is not supported. The whole
                    clip is processed and its measured duration is the billing
                    basis.
                enhance_type:
                  type: string
                  enum:
                    - general
                    - anime
                    - portrait
                    - frame_interpolation
                  default: general
                  description: >-
                    Enhancement mode. `general`, `anime` and `portrait` double
                    the width and height; `frame_interpolation` doubles the
                    frame rate at the same resolution. Defaults to `general`.
                custom_callback_url:
                  type: string
                  format: uri
                  description: >-
                    Optional. A publicly accessible HTTPS URL. When the task
                    status changes (processing / success / failed), GoEnhance
                    sends a POST request to this URL. The request body is
                    identical to the response of GET /api/v1/jobs/detail. If
                    your server does not respond with HTTP 200, the notification
                    is retried up to 3 times, with a 3-second timeout per
                    attempt.
                  example: https://your-server.com/goenhance/callback
              required:
                - model
                - video_url
            example:
              model: video-upscaler-pro
              video_url: https://your-cdn.com/clip.mp4
              enhance_type: anime
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                  msg:
                    type: string
                  data:
                    type: object
                    properties:
                      img_uuid:
                        type: string
                      cost:
                        type: number
                        description: >-
                          Tokens deducted for this request. This is the amount
                          actually charged, so it already reflects any discount
                          active on your account and can be lower than the
                          listed price. Tokens are deducted when the task is
                          accepted, and refunded automatically if the generation
                          ends in failure.
                        example: 66
                    required:
                      - img_uuid
                      - cost
                required:
                  - code
                  - msg
                  - data
              examples:
                '1':
                  summary: Success
                  value:
                    code: 0
                    msg: Success
                    data:
                      img_uuid: c12b656c-747a-44fd-9c80-add79b0c52d5
                      cost: 66
                '2':
                  summary: Video too long
                  value:
                    code: -1
                    msg: Max video duration is 60 seconds, got 75s.
                '3':
                  summary: Resolution not supported
                  value:
                    code: -1
                    msg: >-
                      Video resolution 3840x2160 is not supported. Width and
                      height must be at least 128 pixels, with the shorter side
                      at most 1080 and the longer side at most 2048 pixels.
                '4':
                  summary: Insufficient tokens
                  value:
                    code: 100
                    msg: tokens is not enough
                '5':
                  summary: Unknown enhance_type
                  value:
                    code: -1
                    msg: >-
                      Invalid enhance_type. Supported: general, anime, portrait,
                      frame_interpolation
                quota:
                  summary: API key quota exceeded
                  value:
                    code: 101
                    msg: 'API key quota exceeded: 4990 of 5000 tokens used (monthly)'
          headers: {}
        '401':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                  msg:
                    type: string
                required:
                  - code
                  - msg
          headers: {}
      deprecated: false
      security: []

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.