# Resemble AI Integration via LowCodeAPI

## Overview

Resemble AI is a powerful voice cloning and text-to-speech platform for creating custom AI voices. The Resemble AI API provides comprehensive functionality for:

- **Voices** - Create, clone, and manage custom AI voices
- **Recordings** - Upload and manage voice recordings for cloning
- **Audio Generation** - Generate speech from text using custom voices
- **Projects** - Organize voice assets into projects
- **Account Management** - Manage credits and account settings

## Base Endpoint

```
https://api.lowcodeapi.com/resembleai/
```

## Authentication

LowCodeAPI handles authentication automatically using Bearer token authentication. You only need to:

1. **Sign up** at [Resemble AI](https://www.resemble.ai/) to get your API Key
2. **Connect your account** in the LowCodeAPI dashboard
3. **Use your `api_token`** in all requests

The `api_token` is your LowCodeAPI authentication token. LowCodeAPI will automatically:
- Fetch your Resemble AI API key
- Apply it to each request as a Bearer token

**Auth Type**: Bearer Token

## API Categories

- **Text to Speech AI** - Voice cloning and speech synthesis

## Common Endpoints

### Category: Voices

#### Get All Voices

**Method**: `GET` | **LowCodeAPI Path**: `/v2/voices`

**Full URL**:
```
https://api.lowcodeapi.com/resembleai/v2/voices?api_token={api_token}
```

**Description**: Retrieve all voices in your account.

**Query Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | Yes | Page number to fetch |
| `page_size` | integer | Yes | Number of items per page |

**Example Request**:
```bash
curl -X GET "https://api.lowcodeapi.com/resembleai/v2/voices?page=1&page_size=50&api_token=YOUR_API_TOKEN"
```

**Official Documentation**: [Get Voices](https://docs.app.resemble.ai/docs/create_voices)

---

#### Create Voice

**Method**: `POST` | **LowCodeAPI Path**: `/v2/voices`

**Full URL**:
```
https://api.lowcodeapi.com/resembleai/v2/voices?api_token={api_token}
```

**Description**: Create a new voice in your account.

**Request Body**:
```json
{
  "name": "Custom Voice",
  "is_public": false,
  "is_archived": false
}
```

**Request Body Fields**:

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `name` | string | Yes | Name for the voice |
| `is_public` | boolean | No | Whether the voice is public (default: false) |
| `is_archived` | boolean | No | Whether the voice is archived (default: false) |

**Example Request**:
```bash
curl -X POST "https://api.lowcodeapi.com/resembleai/v2/voices?api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Custom Voice",
    "is_public": false
  }'
```

**Official Documentation**: [Create Voice](https://docs.app.resemble.ai/docs/create_voices)

---

### Category: Recordings

#### Get All Recordings

**Method**: `GET` | **LowCodeAPI Path**: `/v2/voices/voice_uuid/recordings`

**Full URL**:
```
https://api.lowcodeapi.com/resembleai/v2/voices/voice_uuid/recordings?voice_uuid={voice_uuid}&page={page}&page_size={page_size}&api_token={api_token}
```

**Description**: Retrieve all recordings for a specific voice.

**Query Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `voice_uuid` | string | Yes | UUID of the voice |
| `page` | integer | Yes | Page number to fetch |
| `page_size` | integer | Yes | Number of items per page |

**Example Request**:
```bash
# Replace VOICE_UUID with actual voice UUID
curl -X GET "https://api.lowcodeapi.com/resembleai/v2/voices/voice_uuid/recordings?voice_uuid=VOICE_UUID&page=1&page_size=20&api_token=YOUR_API_TOKEN"
```

**Official Documentation**: [Get Recordings](https://docs.app.resemble.ai/docs/create_voices/resource_recording/all)

---

#### Create Recording

**Method**: `POST` | **LowCodeAPI Path**: `/v2/voices/voice_uuid/recordings`

**Full URL**:
```
https://api.lowcodeapi.com/resembleai/v2/voices/voice_uuid/recordings?voice_uuid={voice_uuid}&api_token={api_token}
```

**Description**: Upload a recording to a voice for cloning.

**Query Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `voice_uuid` | string | Yes | UUID of the voice |

**Request Body**:
```json
{
  "audio_url": "https://example.com/audio.wav",
  "text": "This is the transcript of the audio"
}
```

**Request Body Fields**:

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `audio_url` | string | Yes | URL to the audio file |
| `text` | string | Yes | Transcript of the audio content |

**Example Request**:
```bash
# Replace VOICE_UUID with actual voice UUID
curl -X POST "https://api.lowcodeapi.com/resembleai/v2/voices/voice_uuid/recordings?voice_uuid=VOICE_UUID&api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "audio_url": "https://example.com/audio.wav",
    "text": "This is the transcript of the audio"
  }'
```

**Official Documentation**: [Create Recording](https://docs.app.resemble.ai/docs/create_voices/resource_recording/all)

---

### Category: Audio Generation

#### Generate Speech

**Method**: `POST` | **LowCodeAPI Path**: `/v2/projects/project_uuid/generate`

**Full URL**:
```
https://api.lowcodeapi.com/resembleai/v2/projects/project_uuid/generate?project_uuid={project_uuid}&api_token={api_token}
```

**Description**: Generate speech from text using a voice.

**Query Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `project_uuid` | string | Yes | UUID of the project |

**Request Body**:
```json
{
  "voice_uuid": "voice-uuid",
  "text": "Hello, this is a generated speech.",
  "title": "Generated Audio"
}
```

**Request Body Fields**:

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `voice_uuid` | string | Yes | UUID of the voice to use |
| `text` | string | Yes | Text to convert to speech |
| `title` | string | No | Title for the generated clip |

**Example Request**:
```bash
# Replace PROJECT_UUID and VOICE_UUID with actual UUIDs
curl -X POST "https://api.lowcodeapi.com/resembleai/v2/projects/project_uuid/generate?project_uuid=PROJECT_UUID&api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "voice_uuid": "VOICE_UUID",
    "text": "Hello, this is a generated speech.",
    "title": "Generated Audio"
  }'
```

**Official Documentation**: [Generate Speech](https://docs.app.resemble.ai/docs/generate_speech)

---

### Category: Projects

#### Get All Projects

**Method**: `GET` | **LowCodeAPI Path**: `/v2/projects`

**Full URL**:
```
https://api.lowcodeapi.com/resembleai/v2/projects?api_token={api_token}
```

**Description**: Retrieve all projects in your account.

**Query Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | Yes | Page number to fetch |
| `page_size` | integer | Yes | Number of items per page |

**Example Request**:
```bash
curl -X GET "https://api.lowcodeapi.com/resembleai/v2/projects?page=1&page_size=50&api_token=YOUR_API_TOKEN"
```

**Official Documentation**: [Get Projects](https://docs.app.resemble.ai/docs/projects)

---

#### Create Project

**Method**: `POST` | **LowCodeAPI Path**: `/v2/projects`

**Full URL**:
```
https://api.lowcodeapi.com/resembleai/v2/projects?api_token={api_token}
```

**Description**: Create a new project to organize your voice assets.

**Request Body**:
```json
{
  "name": "My Voice Project",
  "description": "Project for custom voiceovers"
}
```

**Request Body Fields**:

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `name` | string | Yes | Project name |
| `description` | string | No | Project description |

**Example Request**:
```bash
curl -X POST "https://api.lowcodeapi.com/resembleai/v2/projects?api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "My Voice Project",
    "description": "Project for custom voiceovers"
  }'
```

**Official Documentation**: [Create Project](https://docs.app.resemble.ai/docs/projects)

---

### Category: Account

#### Get Account Details

**Method**: `GET` | **LowCodeAPI Path**: `/v2/account`

**Full URL**:
```
https://api.lowcodeapi.com/resembleai/v2/account?api_token={api_token}
```

**Description**: Get your account details including credit balance.

**Example Request**:
```bash
curl -X GET "https://api.lowcodeapi.com/resembleai/v2/account?api_token=YOUR_API_TOKEN"
```

**Official Documentation**: [Account Details](https://docs.app.resemble.ai/docs/getting_started/quick_start)

---

## Usage Examples

### Example 1: Create Custom Voice

Create a new voice and upload recordings:

```bash
# Step 1: Create a new voice
# No ID needed - creates new voice
curl -X POST "https://api.lowcodeapi.com/resembleai/v2/voices?api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Custom Voice",
    "is_public": false
  }'

# Step 2: Upload recordings for cloning
# Replace VOICE_UUID with actual voice UUID from step 1
curl -X POST "https://api.lowcodeapi.com/resembleai/v2/voices/voice_uuid/recordings?voice_uuid=VOICE_UUID&api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "audio_url": "https://example.com/sample.wav",
    "text": "This is a sample transcript for voice cloning."
  }'
```

### Example 2: Generate Speech

Create a project and generate speech:

```bash
# Step 1: Create a project
# No ID needed - creates new project
curl -X POST "https://api.lowcodeapi.com/resembleai/v2/projects?api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "My Voice Project"
  }'

# Step 2: Generate speech from text
# Replace PROJECT_UUID and VOICE_UUID with actual UUIDs
curl -X POST "https://api.lowcodeapi.com/resembleai/v2/projects/project_uuid/generate?project_uuid=PROJECT_UUID&api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "voice_uuid": "VOICE_UUID",
    "text": "Welcome to our service. We are excited to have you here.",
    "title": "Welcome Message"
  }'
```

### Example 3: List Voices and Recordings

Browse your voice library:

```bash
# Step 1: Get all voices
# No ID needed - lists all voices
curl -X GET "https://api.lowcodeapi.com/resembleai/v2/voices?page=1&page_size=50&api_token=YOUR_API_TOKEN"

# Step 2: Get recordings for a specific voice
# Replace VOICE_UUID with actual voice UUID
curl -X GET "https://api.lowcodeapi.com/resembleai/v2/voices/voice_uuid/recordings?voice_uuid=VOICE_UUID&page=1&page_size=20&api_token=YOUR_API_TOKEN"
```

## Complete Endpoint Reference

For a complete list of all 39 endpoints and their parameters, refer to:

- **OpenAPI Definition**: https://backend.lowcodeapi.com/resembleai/definition
- **Official Resemble AI Documentation**: https://docs.app.resemble.ai/docs/getting_started/quick_start

## Rate Limits & Best Practices

- **Rate Limit**: Refer to your Resemble AI plan for rate limits
- **Best Practices**:
  - Store voice and project UUIDs for efficient updates
  - Upload high-quality audio recordings for better voice cloning
  - Keep recordings between 10-60 seconds for optimal results
  - Use descriptive names and titles for easy organization
  - Monitor your credit balance to avoid service interruptions
  - Group related assets in projects for better organization
  - Test generated speech before using in production

## Error Handling

All responses are wrapped in a `data` key:
```json
{
  "data": {
    // Actual response from Resemble AI
  }
}
```

Common errors:
- **400**: Invalid request parameters
- **401**: Invalid API key
- **404**: Voice or project not found
- **429**: Rate limit exceeded or insufficient credits