Deepdub Issues API

The Issues API from Deepdub — 2 operation(s) for issues.

OpenAPI Specification

deepdub-issues-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Deepdub Dubbing Issues API
  description: Deepdub's Text-to-Speech API enables high-quality, expressive speech generation with voice cloning, accent control, and real-time streaming capabilities.
  contact:
    email: support@deepdub.ai
  version: '1.0'
servers:
- url: https://restapi.deepdub.ai/api/v1
  description: Production
security:
- ApiKeyAuth: []
tags:
- name: Issues
paths:
  /issues:
    post:
      operationId: createIssue
      description: Report a problem with a TTS generation by creating a new issue. Issues are tracked internally by the Deepdub team and used to improve voice quality. The `problemAudioFile` field can optionally include base64-encoded audio attached to the issue, and `problemSeconds` indicates the timestamp in the audio where the problem appears.
      tags:
      - Issues
      summary: Create a new issue
      parameters:
      - description: API Key
        name: x-api-key
        in: header
        required: true
        schema:
          type: string
          default: dd-00000000000000000000000065c9cbfe
        example: dd-00000000000000000000000065c9cbfe
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/model.CreateIssueRequest'
            example:
              generationId: abc123-def456
              generatedText: Hello world, welcome to Deepdub.
              problemWord: Deepdub
              voicePromptId: bd1b00bb-be1c-4679-8eaa-0fcbfd4ff773
              additionalComments: Mispronunciation of brand name
              problemSeconds: 2.5
      responses:
        '201':
          description: Issue created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/model.IssueResponse'
        '400':
          description: Bad request — missing required fields
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/model.IssueErrorResponse'
              example:
                message: generationId is required
        '401':
          description: Unauthorized — invalid or missing API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/model.IssueErrorResponse'
              example:
                message: Unauthorized
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/model.IssueErrorResponse'
              example:
                message: Failed to create issue
  /issues/{id}:
    get:
      operationId: getIssue
      description: Retrieve an issue by its ID, including its current state (e.g., open, in progress, resolved).
      tags:
      - Issues
      summary: Get an issue by ID
      parameters:
      - description: API Key
        name: x-api-key
        in: header
        required: true
        schema:
          type: string
          default: dd-00000000000000000000000065c9cbfe
        example: dd-00000000000000000000000065c9cbfe
      - description: Issue ID returned by `POST /issues`
        name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Issue details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/model.IssueResponse'
        '401':
          description: Unauthorized — invalid or missing API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/model.IssueErrorResponse'
              example:
                message: Unauthorized
        '404':
          description: Issue not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/model.IssueErrorResponse'
              example:
                message: Issue not found
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/model.IssueErrorResponse'
              example:
                message: Failed to fetch issue
    put:
      operationId: updateIssue
      description: Update an existing issue. All fields are optional — only fields included in the body are updated.
      tags:
      - Issues
      summary: Update an issue
      parameters:
      - description: API Key
        name: x-api-key
        in: header
        required: true
        schema:
          type: string
          default: dd-00000000000000000000000065c9cbfe
        example: dd-00000000000000000000000065c9cbfe
      - description: Issue ID
        name: id
        in: path
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/model.UpdateIssueRequest'
            example:
              additionalComments: Confirmed the mispronunciation reproduces with seed=42
      responses:
        '200':
          description: Updated issue
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/model.IssueResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/model.IssueErrorResponse'
              example:
                message: Invalid request body
        '401':
          description: Unauthorized — invalid or missing API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/model.IssueErrorResponse'
              example:
                message: Unauthorized
        '404':
          description: Issue not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/model.IssueErrorResponse'
              example:
                message: Issue not found
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/model.IssueErrorResponse'
              example:
                message: Failed to update issue
    delete:
      operationId: deleteIssue
      description: Archive an issue. Archived issues are no longer visible via `GET /issues/{id}`.
      tags:
      - Issues
      summary: Delete an issue
      parameters:
      - description: API Key
        name: x-api-key
        in: header
        required: true
        schema:
          type: string
          default: dd-00000000000000000000000065c9cbfe
        example: dd-00000000000000000000000065c9cbfe
      - description: Issue ID
        name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Issue deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/model.IssueMessageResponse'
              example:
                message: Issue deleted
        '401':
          description: Unauthorized — invalid or missing API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/model.IssueErrorResponse'
              example:
                message: Unauthorized
        '404':
          description: Issue not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/model.IssueErrorResponse'
              example:
                message: Issue not found
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/model.IssueErrorResponse'
              example:
                message: Failed to delete issue
components:
  schemas:
    model.UpdateIssueRequest:
      description: Payload for updating an existing issue. All fields are optional.
      type: object
      properties:
        generationId:
          type: string
        generatedText:
          type: string
        problemWord:
          type: string
        voicePromptId:
          type: string
        additionalComments:
          type: string
        problemAudioFile:
          description: Optional base64-encoded audio clip to attach to the issue
          type: string
        problemSeconds:
          type: number
    model.CreateIssueRequest:
      description: Payload for creating a new issue against a TTS generation
      type: object
      required:
      - generationId
      - generatedText
      - problemWord
      - voicePromptId
      properties:
        generationId:
          description: ID of the generation that has the problem
          type: string
          example: abc123-def456
        generatedText:
          description: Text that was passed to the TTS endpoint
          type: string
          example: Hello world, welcome to Deepdub.
        problemWord:
          description: Word (or phrase) that was generated incorrectly
          type: string
          example: Deepdub
        voicePromptId:
          description: ID of the voice prompt used in the generation
          type: string
          example: bd1b00bb-be1c-4679-8eaa-0fcbfd4ff773
        additionalComments:
          description: Free-form comments describing the problem
          type: string
          example: Mispronunciation of brand name
        problemAudioFile:
          description: Optional base64-encoded audio clip to attach to the issue
          type: string
        problemSeconds:
          description: Seconds in the audio where the problem appears
          type: number
          example: 2.5
    model.IssueResponse:
      description: Issue details
      type: object
      properties:
        id:
          type: string
          example: iss_12345abcde
        state:
          description: Current state of the issue (e.g., open, in progress, resolved)
          type: string
          example: open
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
        generationId:
          type: string
        generatedText:
          type: string
        problemWord:
          type: string
        voicePromptId:
          type: string
        additionalComments:
          type: string
        problemSeconds:
          type: number
    model.IssueErrorResponse:
      description: Error response from the issues endpoints
      type: object
      properties:
        message:
          type: string
          example: Issue not found
    model.IssueMessageResponse:
      description: Simple message response
      type: object
      properties:
        message:
          type: string
          example: Issue deleted
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: API key for authentication. Must start with `dd-` prefix.
externalDocs:
  description: OpenAPI
  url: https://restapi.deepdub.ai/api/v1/swagger/index.html