AdsTurbo Video API

Video generation and editing tools

Operations 11

POST /openapi/v1/video/generate Generate a video #
POST /openapi/v1/video/extend Extend a video #
POST /openapi/v1/video/edit Edit a video #
POST /openapi/v1/video/analyze Analyze a video #
POST /openapi/v1/video/lipsync Lip sync a video #
POST /openapi/v1/video/inpaint Remove video watermarks #
POST /openapi/v1/video/translate Translate a video #
POST /openapi/v1/video/upscale Upscale a video #
POST /openapi/v1/video/character-swap Swap a video character #
POST /openapi/v1/video/motion-control Control video motion #
POST /openapi/v1/video/subtitle Generate video subtitles #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/adsturbo-ai:adsturbo-ai-video-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

adsturbo-ai-video-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: AdsTurbo Open Video API
  description: 'AdsTurbo Open API documentation. All endpoints are under `/openapi/v1/`.


    **Base URL**: `https://adsturbo.ai/klian/novartapi`


    **Authentication**: Use **HTTP Bearer** (RFC 6750). Send `Authorization: Bearer `, where `` is the API key created in the AdsTurbo console.


    **Request body**: `Content-Type: application/json`


    **Success response**: HTTP 200 with `{ "ret": 1, "data": { "ent": } }`


    **Business errors**: HTTP 200 may still contain `ret` other than `1`. Read `msg` for the error reason.'
  version: 1.0.0
servers:
- url: https://adsturbo.ai/klian/novartapi
  description: API base URL
security:
- bearerAuth: []
tags:
- name: Video
  description: Video generation and editing tools
paths:
  /openapi/v1/video/generate:
    post:
      tags:
      - Video
      summary: Generate a video
      description: Asynchronous task. Poll `/openapi/v1/work/status` for status and results (webhook delivery is not available yet). Model capabilities differ by `duration`, `ratio`, `resolution`, and reference media limits.
      operationId: openVideoGenerate
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OpenVideoGenerateBody'
      responses:
        '200':
          description: JSON business response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiSuccessOpenWorkEnt'
  /openapi/v1/video/extend:
    post:
      tags:
      - Video
      summary: Extend a video
      description: '**Only the `seedance-2.0` model base is supported.** Provide either `workspace_id` for an internal source video or `video_url` for an external source video. `duration` is the number of seconds appended to the end of the source video.'
      operationId: openVideoExtend
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OpenVideoExtendBody'
      responses:
        '200':
          description: JSON business response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiSuccessOpenWorkEnt'
  /openapi/v1/video/edit:
    post:
      tags:
      - Video
      summary: Edit a video
      description: '**Only the `seedance-2.0` model base is supported.** Provide either `workspace_id` or `video_url`. `mask_url` is optional and enables local editing when supported by the model.'
      operationId: openVideoEdit
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OpenVideoEditBody'
      responses:
        '200':
          description: JSON business response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiSuccessOpenWorkEnt'
  /openapi/v1/video/analyze:
    post:
      tags:
      - Video
      summary: Analyze a video
      operationId: openVideoAnalyze
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OpenVideoAnalyzeBody'
      responses:
        '200':
          description: JSON business response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiSuccessOpenWorkEnt'
      description: Submit a video analysis task.
  /openapi/v1/video/lipsync:
    post:
      tags:
      - Video
      summary: Lip sync a video
      operationId: openVideoLipSync
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OpenVideoLipSyncBody'
      responses:
        '200':
          description: JSON business response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiSuccessOpenWorkEnt'
      description: Submit a video lip sync task.
  /openapi/v1/video/inpaint:
    post:
      tags:
      - Video
      summary: Remove video watermarks
      operationId: openVideoInpaint
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OpenVideoInpaintBody'
      responses:
        '200':
          description: JSON business response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiSuccessOpenWorkEnt'
      description: Submit a video watermark removal task.
  /openapi/v1/video/translate:
    post:
      tags:
      - Video
      summary: Translate a video
      operationId: openVideoTranslate
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OpenVideoTranslateBody'
      responses:
        '200':
          description: JSON business response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiSuccessOpenWorkEnt'
      description: Submit a video translation task.
  /openapi/v1/video/upscale:
    post:
      tags:
      - Video
      summary: Upscale a video
      operationId: openVideoUpscale
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OpenVideoUpscaleBody'
      responses:
        '200':
          description: JSON business response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiSuccessOpenWorkEnt'
      description: Submit a video upscaling task.
  /openapi/v1/video/character-swap:
    post:
      tags:
      - Video
      summary: Swap a video character
      operationId: openVideoCharacterSwap
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OpenVideoCharacterSwapBody'
      responses:
        '200':
          description: JSON business response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiSuccessOpenWorkEnt'
      description: Submit a video character or face swap task.
  /openapi/v1/video/motion-control:
    post:
      tags:
      - Video
      summary: Control video motion
      operationId: openVideoMotionControl
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OpenVideoMotionControlBody'
      responses:
        '200':
          description: JSON business response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiSuccessOpenWorkEnt'
      description: Submit a motion control task for a source video and character reference.
  /openapi/v1/video/subtitle:
    post:
      tags:
      - Video
      summary: Generate video subtitles
      operationId: openVideoSubtitle
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OpenVideoSubtitleBody'
      responses:
        '200':
          description: JSON business response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiSuccessOpenWorkEnt'
      description: Submit a video subtitle generation task.
components:
  schemas:
    OpenWorkData:
      type: object
      description: Async task status and result summary.
      properties:
        workspace_id:
          type: string
        status:
          type: string
          description: pending / processing / completed / failed
        callback_id:
          type: string
          description: Custom tracking ID, echoed back in `/openapi/v1/work/status` results so you can match tasks to your own records (webhook delivery is not available yet).
        result_type:
          type: string
          enum:
          - video
          - image
          - audio
          - text
          - structured
        result_url:
          type: string
        thumbnail_url:
          type: string
        duration:
          type: number
          format: float
        message:
          type: string
        created_at:
          type: integer
          format: int64
    OpenVideoSubtitleBody:
      type: object
      description: Video subtitle generation task.
      properties:
        video_url:
          type: string
          description: Source video URL.
        source_language:
          type: string
        translate_language:
          type: string
        subtitle_format:
          type: string
        style_type:
          type: string
        workspace_id:
          type: integer
          format: int64
        callback_id:
          type: string
          description: Custom tracking ID, echoed back in `/openapi/v1/work/status` results so you can match tasks to your own records (webhook delivery is not available yet).
    OpenVideoLipSyncBody:
      type: object
      description: Video lip sync task.
      properties:
        avatar_url:
          type: string
        audio_url:
          type: string
        prompt:
          type: string
        callback_id:
          type: string
          description: Custom tracking ID, echoed back in `/openapi/v1/work/status` results so you can match tasks to your own records (webhook delivery is not available yet).
    OpenVideoExtendBody:
      type: object
      description: 'Extend a video. Provide either `workspace_id` for an internal source video or `video_url` for an external source video; sending both or neither returns an error.

        `duration` is the number of seconds appended to the source video.


        Only the `seedance-2.0` model base is supported. `duration` ranges from 4 to 15 seconds, defaulting to 15. `resolution` supports `720p` and `1080p`.'
      properties:
        workspace_id:
          type: string
        video_url:
          type: string
          description: Source video URL.
        prompt:
          type: string
        duration:
          type: integer
          format: int32
          minimum: 4
          maximum: 15
          description: 'Seconds to append to the source video. Range: 4 to 15. Default: 15.'
        model:
          type: string
          enum:
          - seedance-2.0
          default: seedance-2.0
          description: Only `seedance-2.0` is supported.
        ratio:
          type: string
        resolution:
          type: string
          enum:
          - 720p
          - 1080p
        callback_id:
          type: string
          description: Custom tracking ID, echoed back in `/openapi/v1/work/status` results so you can match tasks to your own records (webhook delivery is not available yet).
        idempotency_key:
          type: string
    OpenVideoInpaintBody:
      type: object
      description: Video watermark removal task.
      properties:
        video_url:
          type: string
          description: Source video URL.
        workspace_id:
          type: integer
          format: int64
        callback_id:
          type: string
          description: Custom tracking ID, echoed back in `/openapi/v1/work/status` results so you can match tasks to your own records (webhook delivery is not available yet).
    OpenVideoGenerateBody:
      type: object
      description: 'Generate a video. For text-to-video, leave `start_frame`, `end_frame`, and `reference_*` empty.

        For image-to-video, use `start_frame` and optionally `end_frame` to control first and last frames.

        Multiple reference media are supplied through `reference_images`, `reference_videos`, and `reference_audios`.


        Model capability limits vary by model and are validated by the server.'
      properties:
        prompt:
          type: string
        model:
          type: string
          example: veo-3.1
          enum:
          - veo-3.1
          - kling-3.0
          - grok
          - seedance-2.0
          - happyhorse-1.0
          description: Short model name. If omitted, the server default is used.
        ratio:
          type: string
          example: '16:9'
          description: Supported values vary by model.
          enum:
          - '16:9'
          - '9:16'
          - '1:1'
          - '4:3'
          - '3:4'
        duration:
          type: integer
          format: int32
          description: Video duration in seconds. Supported values or ranges vary by model.
        resolution:
          type: string
          example: 1080p
          description: Supported only by selected models; values vary by model.
          enum:
          - 720p
          - 1080p
          - 4k
        start_frame:
          type: string
          description: First-frame image URL.
        end_frame:
          type: string
          description: Last-frame image URL.
        reference_images:
          type: array
          items:
            type: string
        reference_videos:
          type: array
          items:
            type: string
        reference_audios:
          type: array
          items:
            type: string
        callback_id:
          type: string
          description: Custom tracking ID, echoed back in `/openapi/v1/work/status` results so you can match tasks to your own records (webhook delivery is not available yet).
        idempotency_key:
          type: string
          description: Idempotency key. Repeated requests with the same key reuse the same task.
    OpenVideoEditBody:
      type: object
      description: 'Edit a video. Provide either `workspace_id` or `video_url`; sending both or neither returns an error.

        `mask_url` is optional and enables local editing when supported by the model.


        Only the `seedance-2.0` model base is supported. `resolution` supports `720p` and `1080p`.'
      properties:
        workspace_id:
          type: string
        video_url:
          type: string
          description: Source video URL.
        prompt:
          type: string
        mask_url:
          type: string
        reference_images:
          type: array
          items:
            type: string
        model:
          type: string
          enum:
          - seedance-2.0
          default: seedance-2.0
          description: Only `seedance-2.0` is supported.
        ratio:
          type: string
        resolution:
          type: string
          enum:
          - 720p
          - 1080p
        callback_id:
          type: string
          description: Custom tracking ID, echoed back in `/openapi/v1/work/status` results so you can match tasks to your own records (webhook delivery is not available yet).
        idempotency_key:
          type: string
    OpenVideoMotionControlBody:
      type: object
      description: Video motion control task.
      properties:
        video_url:
          type: string
          description: Source video URL.
        image_url:
          type: string
        character_orientation:
          type: string
          description: Character orientation. Use `video` when it should match the source video.
        keep_original_sound:
          type: boolean
        negative_prompt:
          type: string
        prompt:
          type: string
        mode:
          type: string
        workspace_id:
          type: integer
          format: int64
        callback_id:
          type: string
          description: Custom tracking ID, echoed back in `/openapi/v1/work/status` results so you can match tasks to your own records (webhook delivery is not available yet).
    OpenVideoTranslateBody:
      type: object
      description: Video translation task.
      properties:
        video_url:
          type: string
          description: Source video URL.
        target_lang:
          type: string
          description: Target language.
        workspace_id:
          type: integer
          format: int64
        callback_id:
          type: string
          description: Custom tracking ID, echoed back in `/openapi/v1/work/status` results so you can match tasks to your own records (webhook delivery is not available yet).
    OpenVideoCharacterSwapBody:
      type: object
      description: Video character or face swap task.
      properties:
        video_url:
          type: string
          description: Source video URL.
        image_url:
          type: string
          description: Target face reference image URL.
        workspace_id:
          type: integer
          format: int64
        callback_id:
          type: string
          description: Custom tracking ID, echoed back in `/openapi/v1/work/status` results so you can match tasks to your own records (webhook delivery is not available yet).
    OpenVideoUpscaleBody:
      type: object
      description: Video upscaling task.
      properties:
        video_url:
          type: string
          description: Source video URL.
        workspace_id:
          type: integer
          format: int64
        callback_id:
          type: string
          description: Custom tracking ID, echoed back in `/openapi/v1/work/status` results so you can match tasks to your own records (webhook delivery is not available yet).
    ApiSuccessOpenWorkEnt:
      type: object
      required:
      - ret
      properties:
        ret:
          type: integer
          example: 1
        msg:
          type: string
        data:
          type: object
          properties:
            ent:
              $ref: '#/components/schemas/OpenWorkData'
    OpenVideoAnalyzeBody:
      type: object
      description: Video analysis task.
      properties:
        video_url:
          type: string
          description: Source video URL.
        workspace_id:
          type: integer
          format: int64
          description: Related workspace ID. Send 0 if not available.
        callback_id:
          type: string
          description: Custom tracking ID, echoed back in `/openapi/v1/work/status` results so you can match tasks to your own records (webhook delivery is not available yet).
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API Key
      description: '在 [adsturbo.ai](https://adsturbo.ai) 控制台创建的密钥。调用时在请求头设置:`Authorization: Bearer <your_api_key>`。

        '