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

# List Denoise History

> Return the authenticated user's denoising records ordered by most recently created first. Use this to retrieve the final URL of completed jobs or paginate through history.

Returns the authenticated user's denoising records ordered by most recently created first. Use this to retrieve the final audio URL of completed jobs, monitor pending jobs, or paginate through historical results.

## Authentication

Requires API key authentication via `x-api-key` header.

## Request

### Query Parameters

| Parameter | Type          | Required | Description                                                      |
| --------- | ------------- | -------- | ---------------------------------------------------------------- |
| `offset`  | integer (≥ 0) | No       | Number of records to skip from the start of the result set.      |
| `limit`   | integer (≥ 1) | No       | Maximum number of records to return. Omit to return all records. |

## Response

**Status Code:** `200 OK`

**Content-Type:** `application/json`

Returns an array of denoising records.

### Record Schema

| Field                | Type                                     | Description                                                                  |
| -------------------- | ---------------------------------------- | ---------------------------------------------------------------------------- |
| `id`                 | string (UUID)                            | Denoising record id (same value as `denoiseId` returned by `POST /denoise`). |
| `user_id`            | string                                   | Owner of the record.                                                         |
| `transaction_id`     | string \| null                           | Wallet transaction id associated with billing for this job, if any.          |
| `audio_url`          | string \| null                           | URL of the denoised audio. `null` until the job reaches `success`.           |
| `original_audio_url` | string                                   | URL of the originally uploaded file.                                         |
| `file_name`          | string                                   | Original file name as submitted by the client.                               |
| `audio_duration`     | number                                   | Duration of the source audio in seconds.                                     |
| `audio_size`         | number                                   | Size of the source file in bytes.                                            |
| `audio_format`       | string                                   | Lower-cased file extension of the source file (e.g. `wav`, `mp4`).           |
| `source_type`        | `"audio"` \| `"video"`                   | Whether the upload was an audio file or a video container.                   |
| `status`             | `"pending"` \| `"success"` \| `"failed"` | Current job status.                                                          |
| `error`              | string \| null                           | Error message if `status` is `failed`.                                       |
| `created_at`         | string (ISO 8601)                        | Creation timestamp.                                                          |
| `updated_at`         | string (ISO 8601)                        | Last update timestamp.                                                       |

### Example Response

```json theme={null}
[
  {
    "id": "5b1d2f7e-3f81-4c2a-9c5d-7a2e91b4c7a1",
    "user_id": "user_123",
    "transaction_id": "txn_abc",
    "audio_url": "https://cdn.munsit.com/denoising/user_123/5b1d2f7e_denoised.wav",
    "original_audio_url": "https://cdn.munsit.com/denoising/user_123/5b1d2f7e_original.wav",
    "file_name": "meeting.wav",
    "audio_duration": 312.4,
    "audio_size": 10485760,
    "audio_format": "wav",
    "source_type": "audio",
    "status": "success",
    "error": null,
    "created_at": "2026-05-12T10:14:02.000Z",
    "updated_at": "2026-05-12T10:14:55.000Z"
  }
]
```

### Error Responses

**400 Bad Request**

```json theme={null}
{
  "errorCode": "400xx",
  "errorMessage": "offset must be a non-negative number"
}
```

```json theme={null}
{
  "errorCode": "400xx",
  "errorMessage": "limit must be a positive number"
}
```

**401 Unauthorized**

```json theme={null}
{
  "errorCode": "40101",
  "errorMessage": "Invalid or missing API key"
}
```

## Example Usage

### JavaScript

```javascript theme={null}
const response = await fetch('https://api.munsit.com/api/v1/denoise?offset=0&limit=20', {
  headers: {
    'x-api-key': 'YOUR_API_KEY',
  },
});

const records = await response.json();
records.forEach((r) => {
  console.log(r.id, r.status, r.audio_url);
});
```

### Python

```python theme={null}
import requests

url = "https://api.munsit.com/api/v1/denoise"
headers = {"x-api-key": "YOUR_API_KEY"}
params = {"offset": 0, "limit": 20}

response = requests.get(url, headers=headers, params=params)
for record in response.json():
    print(record["id"], record["status"], record["audio_url"])
```

### cURL

```bash theme={null}
curl -X GET "https://api.munsit.com/api/v1/denoise?offset=0&limit=20" \
  -H "x-api-key: YOUR_API_KEY"
```


## OpenAPI

````yaml GET /denoise
openapi: 3.1.0
info:
  title: Munsit API
  description: >-
    Munsit - First True Arabic Voice AI that speaks Dialects From Abu Dhabi to
    Rabat with Voice Cloning & On-prem support
  version: 1.0.0
servers:
  - url: https://api.munsit.com/api/v1
    description: Global production server
  - url: https://ae.api.faseeh.ai/api/v1
    description: UAE regional server
security:
  - apiKeyAuth: []
paths:
  /denoise:
    get:
      tags:
        - Voice Isolation
      summary: List Denoise History
      description: >-
        Return the authenticated user's denoising records ordered by most
        recently created first. Use this to retrieve the final URL of completed
        jobs or paginate through history.
      operationId: listDenoiseJobs
      parameters:
        - in: query
          name: offset
          required: false
          schema:
            type: integer
            minimum: 0
          description: Number of records to skip from the start of the result set.
        - in: query
          name: limit
          required: false
          schema:
            type: integer
            minimum: 1
          description: Maximum number of records to return. Omit to return all records.
      responses:
        '200':
          description: List of denoising records
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DenoiseRecord'
        '400':
          description: Bad Request - invalid offset or limit
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized - Invalid or missing API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    DenoiseRecord:
      type: object
      required:
        - id
        - user_id
        - original_audio_url
        - file_name
        - audio_duration
        - audio_size
        - audio_format
        - source_type
        - status
        - created_at
        - updated_at
      properties:
        id:
          type: string
          format: uuid
          description: >-
            Denoising record id (same value as denoiseId returned by POST
            /denoise).
        user_id:
          type: string
          description: Owner of the record.
        transaction_id:
          type:
            - string
            - 'null'
          description: Wallet transaction id associated with billing for this job, if any.
        audio_url:
          type:
            - string
            - 'null'
          description: URL of the denoised audio. Null until the job reaches success.
        original_audio_url:
          type: string
          description: URL of the originally uploaded file.
        file_name:
          type: string
          description: Original file name as submitted by the client.
        audio_duration:
          type: number
          description: Duration of the source audio in seconds.
        audio_size:
          type: number
          description: Size of the source file in bytes.
        audio_format:
          type: string
          description: Lower-cased file extension of the source file.
        source_type:
          type: string
          enum:
            - audio
            - video
          description: Whether the upload was an audio file or a video container.
        status:
          type: string
          enum:
            - pending
            - success
            - failed
          description: Current job status.
        error:
          type:
            - string
            - 'null'
          description: Error message if status is failed.
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    Error:
      type: object
      required:
        - errorCode
        - errorMessage
      properties:
        errorCode:
          type: string
          description: Error code identifier
        errorMessage:
          type: string
          description: Human-readable error message
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: API key for authentication

````