> ## 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.

# Anime Video Upscaler

> Real-ESRGAN anime video upscaling: bring an existing anime clip up to 1080p, 2K or 4K.

**How it differs from `video-upscaler`** — this endpoint runs a model trained specifically on animation. Line art stays sharp and flat colour areas stay flat, instead of being smoothed into the mushy texture a general-purpose upscaler tends to produce on drawn content. For live action, use `video-upscaler` instead.

**Pricing** — per second of the **source video**, by target resolution (USD at $0.02/token):

| resolution | tokens/s | USD/s |
|---|---|---|
| 1080p | 1 | $0.02 |
| 2K | 2 | $0.04 |
| 4K | 4 | $0.08 |

A 60-second clip therefore costs 60 tokens at 1080p (= $1.20).
The same clip costs 120 tokens at 2K (= $2.40).
At 4K it costs 240 tokens (= $4.80).

⚠️ **There is no `duration` parameter.** The source video is measured server-side and the whole clip is upscaled; the measured length, rounded up to whole seconds, is what you are charged for.

**Source video requirements:**

| | |
|---|---|
| max length | **180s** — the same at every target resolution |
| max short side | **1080 pixels** (portrait or landscape) |
| max file size | 300MB |
| codec | av1 is not supported |

A clip that breaks any of these is rejected before any tokens are deducted — it is never silently truncated. The short-side limit is not an arbitrary quota: a source that is already above 1080p has nothing left to recover, so upscaling it would cost you the top rate for what amounts to a resize.

**Output** — duration, frame rate and aspect ratio all follow the source; no frames are interpolated or dropped. The result carries no watermark.

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



## OpenAPI

````yaml api-reference/video-generations/openapi-anime-upscaler.json POST /api/v1/videos/generations
openapi: 3.1.0
info:
  title: GoEnhance API - Anime Video Upscaler
  description: Upscale an anime clip to 1080p, 2K or 4K.
  version: 1.0.0
servers:
  - url: https://api.goenhance.ai
security: []
paths:
  /api/v1/videos/generations:
    post:
      tags:
        - VideoGenerations
      summary: Anime Video Upscaler
      description: >-
        Real-ESRGAN anime video upscaling: bring an existing anime clip up to
        1080p, 2K or 4K.


        **How it differs from `video-upscaler`** — this endpoint runs a model
        trained specifically on animation. Line art stays sharp and flat colour
        areas stay flat, instead of being smoothed into the mushy texture a
        general-purpose upscaler tends to produce on drawn content. For live
        action, use `video-upscaler` instead.


        **Pricing** — per second of the **source video**, by target resolution
        (USD at $0.02/token):


        | resolution | tokens/s | USD/s |

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

        | 1080p | 1 | $0.02 |

        | 2K | 2 | $0.04 |

        | 4K | 4 | $0.08 |


        A 60-second clip therefore costs 60 tokens at 1080p (= $1.20).

        The same clip costs 120 tokens at 2K (= $2.40).

        At 4K it costs 240 tokens (= $4.80).


        ⚠️ **There is no `duration` parameter.** The source video is measured
        server-side and the whole clip is upscaled; the measured length, rounded
        up to whole seconds, is what you are charged for.


        **Source video requirements:**


        | | |

        |---|---|

        | max length | **180s** — the same at every target resolution |

        | max short side | **1080 pixels** (portrait or landscape) |

        | max file size | 300MB |

        | codec | av1 is not supported |


        A clip that breaks any of these is rejected before any tokens are
        deducted — it is never silently truncated. The short-side limit is not
        an arbitrary quota: a source that is already above 1080p has nothing
        left to recover, so upscaling it would cost you the top rate for what
        amounts to a resize.


        **Output** — duration, frame rate and aspect ratio all follow the
        source; no frames are interpolated or dropped. The result carries no
        watermark.


        Returns an `img_uuid`; poll GET /api/v1/jobs/detail (or use
        `custom_callback_url`) to get the upscaled video.
      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:
                    - anime-upscaler
                  description: Model name. Must be `anime-upscaler`.
                video_url:
                  type: string
                  format: uri
                  description: >-
                    Source anime video URL. Up to 300MB and 180 seconds, short
                    side at most 1080 pixels; av1 is not supported. The whole
                    clip is upscaled and its measured duration is the billing
                    basis.
                resolution:
                  type: string
                  enum:
                    - 1080p
                    - 2k
                    - 4k
                  description: >-
                    Target resolution. Defaults to `2k`. The maximum source
                    length is 180s at every resolution — unlike
                    `video-upscaler`, picking `4k` does not shorten it.
                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: anime-upscaler
              video_url: https://your-cdn.com/anime-clip.mp4
              resolution: 2k
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                  msg:
                    type: string
                  data:
                    type: object
                    properties:
                      img_uuid:
                        type: string
                    required:
                      - img_uuid
                required:
                  - code
                  - msg
                  - data
              examples:
                '1':
                  summary: Success
                  value:
                    code: 0
                    msg: Success
                    data:
                      img_uuid: c12b656c-747a-44fd-9c80-add79b0c52d5
                '2':
                  summary: Invalid duration
                  value:
                    code: -1
                    msg: duration (30s) exceeds the reference video length (12s).
                '3':
                  summary: Insufficient tokens
                  value:
                    code: 100
                    msg: tokens is not enough
                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: []

````