Deepdub Issues API
The Issues API from Deepdub — 2 operation(s) for issues.
The Issues API from Deepdub — 2 operation(s) for issues.
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