> ## Documentation Index
> Fetch the complete documentation index at: https://docs.deepdub.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# List issues

> List the issues reported by your account, newest first. Pagination is cursor-based: pass the `nextCursor` from a response as the next request's `cursor`, and stop once a response omits it.

Returns the issues reported by your account, newest first. Only your own reports are visible — an API key never sees another customer's issues.

## Pagination

Paging is cursor-based. Make the first request without a `cursor`, then pass the `nextCursor` from each response as the `cursor` of the next request:

```bash theme={null}
curl "https://restapi.deepdub.ai/api/v1/issues?limit=50" \
  -H "x-api-key: $DEEPDUB_API_KEY"
```

```json theme={null}
{
  "issues": [{ "id": "iss_12345abcde", "state": "open" }],
  "nextCursor": "eyJvZmZzZXQiOjUwfQ=="
}
```

`nextCursor` is only returned when another page actually exists, so you can loop until it's absent without ever fetching an empty page:

```python theme={null}
cursor, all_issues = None, []
while True:
    params = {"limit": 100, **({"cursor": cursor} if cursor else {})}
    page = requests.get(f"{BASE_URL}/issues", params=params, headers=headers).json()
    all_issues.extend(page["issues"])
    cursor = page.get("nextCursor")
    if not cursor:
        break
```

`limit` defaults to 50 and is capped at 100 — asking for more returns 100 rather than an error.

## Filtering by date

`from` and `to` bound the report date inclusively, and each accepts either `YYYY-MM-DD` or a full RFC3339 timestamp. A bare `to` date covers that entire UTC day, so `to=2026-08-31` includes issues reported at 23:59 that evening.

```bash theme={null}
curl "https://restapi.deepdub.ai/api/v1/issues?from=2026-08-01&to=2026-08-31" \
  -H "x-api-key: $DEEPDUB_API_KEY"
```

A date that parses as neither format returns `400`, as does a `from` later than the `to`.


## OpenAPI

````yaml get /issues
openapi: 3.0.0
info:
  title: Deepdub 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: []
externalDocs:
  description: OpenAPI
  url: https://restapi.deepdub.ai/api/v1/swagger/index.html
paths:
  /issues:
    get:
      tags:
        - Issues
      summary: List issues
      description: >-
        List the issues reported by your account, newest first. Pagination is
        cursor-based: pass the `nextCursor` from a response as the next
        request's `cursor`, and stop once a response omits it.
      operationId: listIssues
      parameters:
        - description: API Key
          name: x-api-key
          in: header
          required: true
          schema:
            type: string
            default: dd-00000000000000000000000065c9cbfe
          example: dd-00000000000000000000000065c9cbfe
        - description: >-
            Maximum issues to return per page. Values above 100 are capped at
            100.
          name: limit
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 50
        - description: >-
            The `nextCursor` value from a previous response. Omit to start from
            the newest issue.
          name: cursor
          in: query
          required: false
          schema:
            type: string
        - description: >-
            Only return issues reported on or after this date. Accepts
            `YYYY-MM-DD` or an RFC3339 timestamp.
          name: from
          in: query
          required: false
          schema:
            type: string
          example: '2026-08-01'
        - description: >-
            Only return issues reported on or before this date. Accepts
            `YYYY-MM-DD` or an RFC3339 timestamp; a bare date covers that entire
            UTC day.
          name: to
          in: query
          required: false
          schema:
            type: string
          example: '2026-08-31'
      responses:
        '200':
          description: A page of issues
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/model.ListIssuesResponse'
        '400':
          description: Malformed `from`/`to` date, or `from` later than `to`
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/model.IssueErrorResponse'
              example:
                message: >-
                  invalid argument: "08-2026" must be YYYY-MM-DD or an RFC3339
                  timestamp
        '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 list issues
components:
  schemas:
    model.ListIssuesResponse:
      description: A page of issues reported by your account
      type: object
      properties:
        issues:
          description: Issues on this page, newest first.
          type: array
          items:
            $ref: '#/components/schemas/model.IssueResponse'
        nextCursor:
          description: Pass as `cursor` to fetch the next page. Absent on the last page.
          type: string
    model.IssueErrorResponse:
      description: Error response from the issues endpoints
      type: object
      properties:
        message:
          type: string
          example: Issue not found
    model.IssueResponse:
      description: Issue details
      type: object
      properties:
        id:
          type: string
          example: iss_12345abcde
        state:
          description: Current state of the issue.
          type: string
          enum:
            - open
            - uploaded_for_correction
            - in_progress
            - resolved
            - rejected
          example: open
        rejectionReason:
          description: Why the issue was rejected. Present only when `state` is `rejected`.
          type: string
          example: duplicate report
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
        generationId:
          type: string
        generatedText:
          type: string
        problemWord:
          type: string
        voicePromptId:
          type: string
        type:
          description: Category of problem being reported.
          type: string
          enum:
            - hallucinations
            - glossary
        locale:
          description: Locale of the reported generation, when known.
          type: string
          example: en-US
        additionalComments:
          type: string
        problemSeconds:
          type: number
        phoneticHeard:
          description: Phonetic transcription of how the word actually sounded
          type: string
        phoneticExpected:
          description: Phonetic transcription of how the word should sound
          type: string
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: API key for authentication. Must start with `dd-` prefix.

````