Rask AI Projects & Dubbing Jobs API

Create and manage localization projects (dubbing jobs) from an uploaded video, specifying source and destination languages, speaker count, transcription, and glossary. Projects are processed asynchronously and return translated video, translated audio, and voiceover artifacts.

OpenAPI Specification

rask-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Rask AI API
  description: >-
    Rask AI is an AI video and audio localization platform. The REST API lets
    developers upload media, transcribe and translate it, create localization
    (dubbing) projects across 130+ languages, manage voices and speakers, and
    poll project status to retrieve translated video, translated audio, and
    voiceover artifacts. Projects are processed asynchronously. Authentication
    uses an OAuth2-issued Bearer token (an API Client ID and API Code are
    generated in the Rask app and exchanged for a token). Endpoints and schemas
    below reflect Rask's public API v2 documentation; consult
    https://docs.api.rask.ai for the authoritative reference.
  termsOfService: https://www.rask.ai/terms-of-service
  contact:
    name: Rask AI API Support
    email: api@rask.ai
    url: https://docs.api.rask.ai
  version: '2'
servers:
  - url: https://api.rask.ai
    description: Rask AI production API
security:
  - bearerAuth: []
tags:
  - name: Media
    description: Upload and retrieve source media (video and audio).
  - name: Transcription
    description: Create and retrieve transcriptions from uploaded media or SRT files.
  - name: Projects
    description: Create, retrieve, update, and delete localization (dubbing) projects.
  - name: Voices
    description: Retrieve project voices and speakers.
paths:
  /api/library/v1/media:
    post:
      operationId: uploadMediaFile
      tags:
        - Media
      summary: Upload a media file
      description: >-
        Upload a video or audio file (mp4, mov, webm, mkv, mp3, wav) to the
        media library. Returns a media identifier used when creating a
        transcription or project.
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: binary
                  description: The media file to upload.
      responses:
        '200':
          description: Media uploaded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Media'
  /v2/transcriptions:
    post:
      operationId: createTranscription
      tags:
        - Transcription
      summary: Create a transcription
      description: >-
        Transcribe uploaded media into editable text segments, or provide an SRT
        file for higher dubbing accuracy. Returns a transcription identifier used
        when creating a project.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateTranscriptionRequest'
      responses:
        '200':
          description: Transcription created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Transcription'
  /v2/projects:
    post:
      operationId: createProject
      tags:
        - Projects
      summary: Create a project (dubbing job)
      description: >-
        Create a localization project from an uploaded video, specifying the
        destination language and optional source language, speaker count,
        transcription, and glossary. Processing is asynchronous; poll the project
        to retrieve output artifacts.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateProjectRequest'
      responses:
        '200':
          description: Project created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Project'
  /v2/projects/{project_id}:
    get:
      operationId: getProject
      tags:
        - Projects
      summary: Get a project (status and artifacts)
      description: >-
        Retrieve a single project to monitor its asynchronous processing status
        and obtain output artifact links once localization completes.
      parameters:
        - name: project_id
          in: path
          required: true
          description: The UUID of the project to retrieve.
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Project details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Project'
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        OAuth2-issued Bearer token. Generate an API Client ID and API Code in the
        Rask app, exchange them for an OAuth2 token, and send it as
        `Authorization: Bearer {token}`.
  schemas:
    Media:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Uploaded media identifier.
        kind:
          type: string
          description: Media kind (e.g., video or audio).
    CreateTranscriptionRequest:
      type: object
      required:
        - media_id
      properties:
        media_id:
          type: string
          format: uuid
          description: ID of the uploaded media to transcribe.
        src_lang:
          type: string
          description: Source language code without dialect (e.g., en).
    Transcription:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Transcription identifier.
        status:
          type: string
          description: Transcription processing status.
    CreateProjectRequest:
      type: object
      required:
        - video_id
        - dst_lang
      properties:
        video_id:
          type: string
          format: uuid
          description: Uploaded media ID with video kind.
        dst_lang:
          type: string
          description: Destination language code.
        name:
          type: string
          description: Project name; autogenerated if empty.
        src_lang:
          type: string
          description: Source language code without dialect (e.g., en).
        num_speakers:
          type: integer
          description: Number of speakers; defined automatically if empty.
        transcript_id:
          type: string
          format: uuid
          description: ID of an uploaded transcription.
        glossary_id:
          type: string
          format: uuid
          description: ID of a created glossary.
    Project:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Project identifier.
        name:
          type: string
          description: Project name.
        source_type:
          type: string
          enum:
            - youtube
            - gdrive
            - vimeo
            - s3
            - local
            - any
          description: Origin of the source media.
        status:
          type: string
          description: Current processing state of the project.
        dst_lang:
          type: string
          description: Destination language code.
        created_at:
          type: string
          format: date-time
          description: Creation timestamp.
        translated_video:
          type: string
          description: Link to the translated (dubbed) video artifact.
        translated_audio:
          type: string
          description: Link to the translated audio artifact.
        voiceover:
          type: string
          description: Link to the voiceover artifact.