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

# Voice Harbor API

> Integrate Voice Harbor into your application using a developer usage token.

## Voice Harbor API

Use the Voice Harbor API to integrate biometric voice redaction into your own product or workflow.

This page is for **API usage only**.\
If you are using the Voice Harbor dashboard or playground, refer to the platform documentation instead.

***

## Authentication

API requests require a valid developer usage token.

Include it in the `Authorization` header:

```bash theme={null}
-H "Authorization: Bearer YOUR_USAGE_TOKEN"
```

***

## Processing Modes

Voice Harbor supports both **synchronous** and **asynchronous** API processing.

### Synchronous jobs

Short audio files are typically processed synchronously and may return immediately in the response.

### Asynchronous jobs

Longer audio files are processed asynchronously.

When a job is handled asynchronously:

* the job is accepted first
* processing continues after submission
* the result becomes available in the **Jobs** area when processing is complete

Async API jobs are associated with the account behind the developer token.

***

## Example API Usage

### Minimal biometric redaction request

```bash theme={null}
curl -X POST https://voiceharbor.ai/api/speech-to-speech-biometric-redaction \
  -H "Authorization: Bearer YOUR_USAGE_TOKEN" \
  -F "source_audio=@./martin.wav;type=audio/wav" \
  --output result.wav
```

### Custom biometric redaction request

```bash theme={null}
curl -X POST https://voiceharbor.ai/api/speech-to-speech-biometric-redaction \
  -H "Authorization: Bearer YOUR_USAGE_TOKEN" \
  -F "source_audio=@./martin.wav;type=audio/wav" \
  -F "model_id=advanced" \
  -F "age=same" \
  -F "gender=opposite" \
  -F "emotion=sad" \
  -F "language=fr" \
  --output redacted_fr.wav
```

***

## API Parameters

<ResponseField name="age" type="string" default="young-adult">
  Biometric age group to apply to the anonymized voice identity. Only used when `avatar` is not provided.

  Allowed values:

  * young-adult (18–39)
  * middle-aged-adult (40–59)
  * senior-adult (60+)
  * same
  * random
</ResponseField>

<ResponseField name="gender" type="string" default="random">
  Target gender of the anonymized voice identity.

  Allowed values:

  * same
  * opposite
  * random
  * f
  * m
</ResponseField>

<ResponseField name="language" type="string" default="en">
  Target language of the audio file.

  Allowed values:

  * en
  * fr
  * it
  * es
  * de
</ResponseField>

<ResponseField name="model_id" type="string" default="mini">
  Model variant for biometric voice print redaction.

  Allowed values:

  * mini 0.25 RTF
  * advanced 0.75 RTF
</ResponseField>

<ResponseField name="emotion" type="string" optional>
  Optional emotion to apply to the anonymised identity.

  Allowed values:

  * happy
  * default
  * sad
</ResponseField>

***

## Audio Input Requirements

To ensure reliable processing and accurate biometric redaction, uploaded audio files must meet the following requirements.

### Supported File Formats

* **Guaranteed input support:** WAV & MP3 (`.wav`, `.mp3`),
* **Output:** WAV (`.wav`)

***

### File Size Limits

* **Maximum file size:** **10 MB per request**
* Files exceeding this limit will be rejected with a `413 Payload Too Large` error

> If you need higher limits for enterprise use cases, please contact support.

***

### Audio Duration Limits

* **Minimum duration:** more than 0 seconds
* **Maximum duration:** **60 minutes (3600 seconds)**

Files longer than 60 minutes are not accepted, even if they meet the file size limit.

***

## Result Delivery

How you receive results depends on the size and duration of the file:

* **Short files** may return immediately in the API response
* **Longer files** are processed asynchronously
* **Async results** are available from the **Jobs** area after processing completes

***
