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.