Skip to main content

Create Studio

Create Studio exposes media generation and transformation workflows.

Authentication & scope

  • Header: X-API-Key: YOUR_API_KEY
  • Read operations: create_studio:read
  • Write operations: create_studio:write
  • Use API Reference for interactive Try-it support on each endpoint.

GET /v1/create-studio/available-voices

Returns available voices.

Bash

curl -X GET "https://api.indigenius.ai/v1/create-studio/available-voices" \
  -H "X-API-Key: YOUR_API_KEY"

Node

const response = await fetch(
  'https://api.indigenius.ai/v1/create-studio/available-voices',
  {
    headers: { 'X-API-Key': process.env.INDIGENIUS_API_KEY },
  },
);
console.log(await response.json());

Python

import requests
response = requests.get(
    "https://api.indigenius.ai/v1/create-studio/available-voices",
    headers={"X-API-Key": "YOUR_API_KEY"},
    timeout=30,
)
print(response.status_code)
print(response.json())
Common status codes: 200, 403, 500.

POST /v1/create-studio/text-to-speech

Creates a text-to-speech job. Body is DTO-accurate to CreateTextToSpeechDto.

Bash

curl -X POST "https://api.indigenius.ai/v1/create-studio/text-to-speech" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "Welcome to Indigenius",
    "speed": 1,
    "voiceId": "voice_001",
    "voiceName": "Sade",
    "voiceGender": "female",
    "provider": "elevenlabs",
    "languageCode": "en",
    "language": "English"
  }'

Node

const response = await fetch(
  'https://api.indigenius.ai/v1/create-studio/text-to-speech',
  {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'X-API-Key': process.env.INDIGENIUS_API_KEY,
    },
    body: JSON.stringify({
      content: 'Welcome to Indigenius',
      speed: 1,
      voiceId: 'voice_001',
      voiceName: 'Sade',
      voiceGender: 'female',
      provider: 'elevenlabs',
      languageCode: 'en',
      language: 'English',
    }),
  },
);
console.log(await response.json());

Python

import requests
payload = {
    "content": "Welcome to Indigenius",
    "speed": 1,
    "voiceId": "voice_001",
    "voiceName": "Sade",
    "voiceGender": "female",
    "provider": "elevenlabs",
    "languageCode": "en",
    "language": "English",
}
response = requests.post(
    "https://api.indigenius.ai/v1/create-studio/text-to-speech",
    headers={"X-API-Key": "YOUR_API_KEY", "Content-Type": "application/json"},
    json=payload,
    timeout=30,
)
print(response.status_code)
print(response.json())
Common status codes: 201, 400, 403, 500.

POST /v1/create-studio/speech-to-text

Uploads audio and creates a speech-to-text job. Payload is multipart DTO-accurate to CreateSpeechToTextDto.

Bash

curl -X POST "https://api.indigenius.ai/v1/create-studio/speech-to-text" \
  -H "X-API-Key: YOUR_API_KEY" \
  -F "language=English" \
  -F "file=@/absolute/path/to/audio.wav"

Node

const form = new FormData();
form.append('language', 'English');
form.append('file', fileInput.files[0]);

const response = await fetch(
  'https://api.indigenius.ai/v1/create-studio/speech-to-text',
  {
    method: 'POST',
    headers: { 'X-API-Key': process.env.INDIGENIUS_API_KEY },
    body: form,
  },
);
console.log(await response.json());

Python

import requests

with open("/absolute/path/to/audio.wav", "rb") as f:
    response = requests.post(
        "https://api.indigenius.ai/v1/create-studio/speech-to-text",
        headers={"X-API-Key": "YOUR_API_KEY"},
        data={"language": "English"},
        files={"file": f},
        timeout=60,
    )

print(response.status_code)
print(response.json())
Common status codes: 201, 400, 403, 500.

POST /v1/create-studio/dubbing/create

Creates a dubbing project. Form-data body is DTO-accurate to CreateDubbingDto.

Bash

curl -X POST "https://api.indigenius.ai/v1/create-studio/dubbing/create" \
  -H "X-API-Key: YOUR_API_KEY" \
  -F "projectName=Product explainer dub" \
  -F "videoUrl=https://example.com/source-video.mp4" \
  -F "sourceLanguage=English" \
  -F "targetLanguage=French" \
  -F "voiceId=voice_001" \
  -F "voiceName=Sade" \
  -F "voiceGender=female" \
  -F "provider=elevenlabs" \
  -F "lipSync=no"

Node

const form = new FormData();
form.append('projectName', 'Product explainer dub');
form.append('videoUrl', 'https://example.com/source-video.mp4');
form.append('sourceLanguage', 'English');
form.append('targetLanguage', 'French');
form.append('voiceId', 'voice_001');
form.append('voiceName', 'Sade');
form.append('voiceGender', 'female');
form.append('provider', 'elevenlabs');
form.append('lipSync', 'no');

const response = await fetch(
  'https://api.indigenius.ai/v1/create-studio/dubbing/create',
  {
    method: 'POST',
    headers: { 'X-API-Key': process.env.INDIGENIUS_API_KEY },
    body: form,
  },
);
console.log(await response.json());

Python

import requests

data = {
    "projectName": "Product explainer dub",
    "videoUrl": "https://example.com/source-video.mp4",
    "sourceLanguage": "English",
    "targetLanguage": "French",
    "voiceId": "voice_001",
    "voiceName": "Sade",
    "voiceGender": "female",
    "provider": "elevenlabs",
    "lipSync": "no",
}
response = requests.post(
    "https://api.indigenius.ai/v1/create-studio/dubbing/create",
    headers={"X-API-Key": "YOUR_API_KEY"},
    data=data,
    timeout=60,
)
print(response.status_code)
print(response.json())
Common status codes: 201, 400, 403, 500.

POST /v1/create-studio/dubbing/generate

Generates dubbing output. Body is DTO-accurate to GenerateDubbingDto.

Bash

curl -X POST "https://api.indigenius.ai/v1/create-studio/dubbing/generate" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "dubbingId": "665e4a34c65bb95f2f2d72e7",
    "targetLanguage": "French",
    "voiceId": "voice_001",
    "voiceName": "Sade",
    "voiceGender": "female",
    "provider": "elevenlabs"
  }'

Node

const response = await fetch(
  'https://api.indigenius.ai/v1/create-studio/dubbing/generate',
  {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'X-API-Key': process.env.INDIGENIUS_API_KEY,
    },
    body: JSON.stringify({
      dubbingId: '665e4a34c65bb95f2f2d72e7',
      targetLanguage: 'French',
      voiceId: 'voice_001',
      voiceName: 'Sade',
      voiceGender: 'female',
      provider: 'elevenlabs',
    }),
  },
);
console.log(await response.json());

Python

import requests
payload = {
    "dubbingId": "665e4a34c65bb95f2f2d72e7",
    "targetLanguage": "French",
    "voiceId": "voice_001",
    "voiceName": "Sade",
    "voiceGender": "female",
    "provider": "elevenlabs",
}
response = requests.post(
    "https://api.indigenius.ai/v1/create-studio/dubbing/generate",
    headers={"X-API-Key": "YOUR_API_KEY", "Content-Type": "application/json"},
    json=payload,
    timeout=60,
)
print(response.status_code)
print(response.json())

201 Created

{
  "status": true,
  "message": "Text-to-speech created",
  "id": "665e4a34c65bb95f2f2d72e1"
}

Common status codes

  • 201 generation queued/started
  • 400 validation error
  • 403 missing create_studio:write
  • 404 project not found
  • 500 server error

Other Create Studio endpoints

  • GET /v1/create-studio/text-to-speech
  • GET /v1/create-studio/text-to-speech/{id}
  • DELETE /v1/create-studio/text-to-speech/{id}
  • GET /v1/create-studio/speech-to-text
  • GET /v1/create-studio/speech-to-text/{id}
  • DELETE /v1/create-studio/speech-to-text/{id}
  • GET /v1/create-studio/dubbing/list
  • GET /v1/create-studio/dubbing/details/{id}
  • GET /v1/create-studio/dubbing/status/{id}
  • GET /v1/create-studio/dubbing/download/{id}/{mode}
  • DELETE /v1/create-studio/dubbing/delete/{id}
  • GET /v1/create-studio/download-file/{id}/{mode}
Use API Reference Try-it for these endpoints with the same key flow.