> This is a page from the ElevenLabs documentation. For a complete page index, fetch https://elevenlabs.io/docs/llms.txt. For the full documentation in a single file, fetch https://elevenlabs.io/docs/llms-full.txt.

# Skapa Studio-projekt

POST https://api.elevenlabs.io/v1/studio/projects
Content-Type: multipart/form-data

Skapar ett nytt Studio-projekt som kan initieras tomt, från ett dokument eller från en URL.

Reference: https://elevenlabs.io/docs/api-reference/studio/add-project

## Servers

- `https://api.elevenlabs.io` (Production, default)
- `https://api.us.elevenlabs.io` (Production US)
- `https://api.eu.residency.elevenlabs.io` (Production EU)
- `https://api.in.residency.elevenlabs.io` (Production India)
- `https://api.sg.residency.elevenlabs.io` (Production Singapore)

## Request

### Body (multipart/form-data)

This endpoint expects a multipart form containing an optional file.

- `name` (string, required) — Namnet på Studio-projektet, används endast för identifiering.
- `default_title_voice_id` (string, optional) — voice_id som motsvarar standardrösten för nya rubriker.
- `default_paragraph_voice_id` (string, optional) — voice_id som motsvarar standardrösten för nya stycken.
- `default_model_id` (string, optional) — ID:t för modellen som ska användas för detta Studio-projekt. Du kan anropa GET /v1/models för att lista alla tillgängliga modeller.
- `from_url` (string, optional) — En valfri URL från vilken vi hämtar innehåll för att initialisera Studio-projektet. Om detta anges måste 'from_url' och 'from_content' vara null. Om varken 'from_url', 'from_document' eller 'from_content' anges initialiserar vi Studio-projektet som tomt.
- `from_document` (file, optional) — En valfri .epub-, .pdf-, .txt- eller liknande fil kan anges. Om den anges initialiserar vi Studio-projektet med dess innehåll. Om detta anges måste 'from_url' och 'from_content' vara null. Om varken 'from_url', 'from_document' eller 'from_content' anges initialiserar vi Studio-projektet som tomt.
- `from_content_json` (string, optional) — Valfritt innehåll att initiera Studio-projektet med. Om detta anges måste 'from\_url' och 'from\_document' vara null. Om varken 'from\_url', 'from\_document' eller 'from\_content' anges initierar vi Studio-projektet tomt. Exempel: \[\{"name": "Chapter A", "blocks": \[\{"sub\_type": "p", "nodes": \[\{"voice\_id": "6lCwbsX1yVjD49QmpkT0", "text": "A", "type": "tts\_node"}, \{"voice\_id": "6lCwbsX1yVjD49QmpkT1", "text": "B", "type": "tts\_node"}]}, \{"sub\_type": "h1", "nodes": \[\{"voice\_id": "6lCwbsX1yVjD49QmpkT0", "text": "C", "type": "tts\_node"}, \{"voice\_id": "6lCwbsX1yVjD49QmpkT1", "text": "D", "type": "tts\_node"}]}]}, \{"name": "Chapter B", "blocks": \[\{"sub\_type": "p", "nodes": \[\{"voice\_id": "6lCwbsX1yVjD49QmpkT0", "text": "E", "type": "tts\_node"}, \{"voice\_id": "6lCwbsX1yVjD49QmpkT1", "text": "F", "type": "tts\_node"}]}, \{"sub\_type": "h2", "nodes": \[\{"voice\_id": "6lCwbsX1yVjD49QmpkT0", "text": "G", "type": "tts\_node"}, \{"voice\_id": "6lCwbsX1yVjD49QmpkT1", "text": "H", "type": "tts\_node"}]}]}]
- `quality_preset` (enum, optional) — Output quality of the generated audio. Must be one of: 'standard' - standard output format, 128kbps with 44.1kHz sample rate. 'high' - high quality output format, 192kbps with 44.1kHz sample rate and major improvements on our side. 'ultra' - ultra quality output format, 192kbps with 44.1kHz sample rate and highest improvements on our side. 'ultra_lossless' - ultra quality output format, 705.6kbps with 44.1kHz sample rate and highest improvements on our side in a fully lossless format. If not provided, defaults to the highest quality preset available on your subscription tier.
- `title` (string, optional) — Ett valfritt namn på författaren till Studio-projektet. Det läggs till som metadata i mp3-filen när Studio-projektet eller kapitlet laddas ned.
- `author` (string, optional) — Ett valfritt namn på författaren till Studio-projektet. Det läggs till som metadata i mp3-filen när Studio-projektet eller kapitlet laddas ned.
- `description` (string, optional) — En valfri beskrivning av Studio-projektet.
- `genres` (list of string, optional) — En valfri lista över genrer som är kopplade till Studio-projektet.
- `target_audience` (enum, optional) — En valfri målgrupp för Studio-projektet.
- `language` (string, optional) — Ett valfritt språk för Studio-projektet. Språkkod med två bokstäver (ISO 639-1).
- `content_type` (string, optional) — En valfri innehållstyp för Studio-projektet.
- `original_publication_date` (string, optional) — Ett valfritt ursprungligt publiceringsdatum för Studio-projektet i formatet YYYY-MM-DD eller YYYY.
- `mature_content` (boolean, optional) — En valfri uppgift om huruvida Studio-projektet innehåller innehåll för vuxna.
- `isbn_number` (string, optional) — Ett valfritt ISBN-nummer för Studio-projektet du vill skapa. Det läggs till som metadata i mp3-filen när Studio-projektet eller kapitlet laddas ned.
- `acx_volume_normalization` (boolean, optional) — [Föråldrat] Om det returnerade ljudet ska efterbehandlas när Studio-projektet laddas ned, så att det uppfyller kraven på normaliserad volym för ljudböcker
- `volume_normalization` (boolean, optional) — Om det returnerade ljudet ska efterbehandlas när Studio-projektet laddas ned, så att det uppfyller kraven för normaliserad ljudvolym för ljudböcker
- `pronunciation_dictionary_locators` (list of string, optional) — En lista med pekare till uttalslexikon (pronunciation\_dictionary\_id, version\_id), kodade som en lista med JSON-strängar, för uttalslexikon som ska tillämpas på texten. En lista med JSON-kodade strängar krävs eftersom projekt kan läggas till via formData i stället för jsonBody. Om du vill ange flera lexikon använder du flera --form-rader i curl, till exempel --form 'pronunciation\_dictionary\_locators="\{"pronunciation\_dictionary\_id":"Vmd4Zor6fplcA7WrINey","version\_id":"hRPaxjlTdR7wFMhV4w0b"}"' --form 'pronunciation\_dictionary\_locators="\{"pronunciation\_dictionary\_id":"JzWtcGQMJ6bnlWwyMo7e","version\_id":"lbmwxiLu4q6txYxgdZqn"}"'.
- `callback_url` (string, optional) — En URL som vår tjänst anropar när Studio-projektet har konverterats. Begäran innehåller ett JSON-objekt med konverteringens status. Meddelanden: 1. När projektet har konverterats: \{ type: "project\_conversion\_status", event\_timestamp: 1234567890, data: \{ request\_id: "1234567890", project\_id: "21m00Tcm4TlvDq8ikWAM", conversion\_status: "success", project\_snapshot\_id: "22m00Tcm4TlvDq8ikMAT", error\_details: None, } } 2. När projektkonverteringen misslyckades: \{ type: "project\_conversion\_status", event\_timestamp: 1234567890, data: \{ request\_id: "1234567890", project\_id: "21m00Tcm4TlvDq8ikWAM", conversion\_status: "error", project\_snapshot\_id: None, error\_details: "Error details if conversion failed" } } 3. När kapitlet har konverterats: \{ type: "chapter\_conversion\_status", event\_timestamp: 1234567890, data: \{ request\_id: "1234567890", project\_id: "21m00Tcm4TlvDq8ikWAM", chapter\_id: "22m00Tcm4TlvDq8ikMAT", conversion\_status: "success", chapter\_snapshot\_id: "23m00Tcm4TlvDq8ikMAV", error\_details: None, } } 4. När kapitelkonverteringen misslyckades: \{ type: "chapter\_conversion\_status", event\_timestamp: 1234567890, data: \{ request\_id: "1234567890", project\_id: "21m00Tcm4TlvDq8ikWAM", chapter\_id: "22m00Tcm4TlvDq8ikMAT", conversion\_status: "error", chapter\_snapshot\_id: None, error\_details: "Error details if conversion failed" } }
- `fiction` (enum, optional) — En valfri uppgift om huruvida innehållet i Studio-projektet är skönlitteratur.
- `apply_text_normalization` (enum, optional) — Den här parametern styr textnormalisering med fyra lägen: 'auto', 'on', 'apply_english' och 'off'. När den är inställd på 'auto' avgör systemet automatiskt om textnormalisering ska tillämpas (t.ex. att skriva ut tal). Med 'on' tillämpas textnormalisering alltid, medan den hoppas över med 'off'. 'apply_english' är samma som 'on', men förutsätter att texten är på engelska.
- `auto_convert` (boolean, optional) — Om Studio-projektet ska konverteras till ljud automatiskt.
- `auto_assign_voices` (boolean, optional) — [Alfafunktion] Om röster automatiskt ska tilldelas fraser när ett projekt skapas.
- `source_type` (enum, optional) — Typen av Studio-projekt som ska skapas.
- `voice_settings` (list of string, optional) — Valfria åsidosättningar av röstinställningar för projektet, kodade som en lista med JSON-strängar. Exempel: \["\{"voice\_id": "21m00Tcm4TlvDq8ikWAM", "stability": 0.7, "similarity\_boost": 0.8, "style": 0.5, "speed": 1.0, "use\_speaker\_boost": true}"]
- `create_publishing_read` (boolean, optional) — Om värdet är true skapas en motsvarande läsning för direktpublicering i utkastläge

## Response

### 200

Lyckat svar

- `project` (ProjectResponseModel, required)

## Errors

### 422 Unprocessable Entity Error

Valideringsfel

- `detail` (list of ValidationError, optional)

## Types

### ProjectResponseModel

- `project_id` (string, required) — ID:t för projektet.
- `name` (string, required) — Projektets namn.
- `create_date_unix` (integer, required) — Projektets skapandedatum.
- `created_by_user_id` (string, required, nullable) — Användar-ID:t för personen som skapade projektet.
- `default_title_voice_ref_id` (string, required) — Standardreferens-ID:t för projektrösten i titlar.
- `default_paragraph_voice_ref_id` (string, required) — Standardreferens-ID:t för projektrösten i stycken.
- `default_model_id` (string, required) — Standardmodellens ID.
- `can_be_downloaded` (boolean, required) — Om projektet kan laddas ned.
- `volume_normalization` (boolean, required) — Om projektet använder volymnormalisering.
- `state` (enum, required) — Projektets tillstånd.
  - Allowed values: `creating`, `default`, `converting`, `in_queue`
- `access_level` (enum, required) — Projektets åtkomstnivå.
  - Allowed values: `admin`, `editor`, `commenter`, `viewer`
- `quality_check_on` (boolean, required, deprecated) — Om kvalitetskontroll är aktiverad för det här projektet.
- `quality_check_on_when_bulk_convert` (boolean, required, deprecated) — Om kvalitetskontroll är aktiverad för projektet vid masskonvertering.
- `default_title_voice_id` (string, required, deprecated) — Standardröst-ID:t för titlar.
- `default_paragraph_voice_id` (string, required, deprecated) — Standardröst-ID:t för stycken.
- `last_conversion_date_unix` (integer, optional, nullable) — Datumet för den senaste konverteringen av projektet.
- `title` (string, optional, nullable) — Projektets titel.
- `author` (string, optional, nullable) — Projektets författare.
- `description` (string, optional, nullable) — Beskrivningen av projektet.
- `genres` (list of string, optional, nullable) — Lista över projektets genrer.
- `cover_image_url` (string, optional, nullable) — URL:en till projektets omslagsbild.
- `target_audience` (enum, optional, nullable) — Projektets målgrupp.
  - Allowed values: `children`, `young adult`, `adult`, `all ages`
- `language` (string, optional, nullable) — Tvåställig språkkod (ISO 639-1) för projektets språk.
- `content_type` (string, optional, nullable) — Projektets innehållstyp, till exempel 'Novel' eller 'Short Story'
- `original_publication_date` (string, optional, nullable) — Projektets ursprungliga publiceringsdatum.
- `mature_content` (boolean, optional, nullable) — Om projektet innehåller vuxeninnehåll.
- `isbn_number` (string, optional, nullable) — Projektets ISBN-nummer.
- `fiction` (enum, optional, nullable) — Om projektet är fiktion.
  - Allowed values: `fiction`, `non-fiction`
- `creation_meta` (ProjectCreationMetaResponseModel, optional, nullable) — Projektets metadata för skapande.
- `source_type` (enum, optional, nullable) — Projektets källtyp.
  - Allowed values: `blank`, `book`, `article`, `genfm`, `video`, `screenplay`
- `chapters_enabled` (boolean, optional, nullable, default: true) — Om kapitel är aktiverade för projektet.
- `captions_enabled` (boolean, optional, nullable, default: true) — Om bildtexter är aktiverade för projektet.
- `caption_style` (CaptionStyleModel, optional, nullable) — Global formatering som ska tillämpas på alla undertexter
- `caption_style_template_overrides` (map from string to CaptionStyleModel, optional, nullable) — Stiländringar som har gjorts i de angivna mallarna
- `public_share_id` (string, optional, nullable) — Projektets offentliga delnings-ID.
- `aspect_ratio` (enum, optional, nullable) — Projektets bildförhållande.
  - Allowed values: `16:9`, `9:16`, `4:5`, `1:1`
- `agent_settings` (StudioAgentSettingsModel, optional, nullable) — Agentrelaterade inställningar för projektet

### ValidationError

- `loc` (list of ValidationErrorLocItems, required)
- `msg` (string, required)
- `type` (string, required)

### ProjectCreationMetaResponseModel

- `creation_progress` (double, required) — Förloppet för att skapa projektet.
- `status` (enum, required) — Statusen för åtgärden att skapa projektet.
  - Allowed values: `draft`, `pending`, `creating`, `finished`, `failed`
- `type` (enum, required) — Typen av åtgärd för att skapa projekt.
  - Allowed values: `blank`, `generate_podcast`, `auto_assign_voices`, `dub_video`, `import_speech`

### CaptionStyleModel

- `template` (CaptionStyleTemplateModel, optional, nullable)
- `text_font` (string, optional, nullable)
- `text_scale` (double, optional, nullable)
- `text_color` (string, optional, nullable)
- `text_align` (enum, optional, nullable)
  - Allowed values: `start`, `center`, `end`
- `text_style` (enum, optional, nullable)
  - Allowed values: `normal`, `italic`
- `text_weight` (enum, optional, nullable)
  - Allowed values: `normal`, `bold`, `900`
- `text_transform` (enum, optional, nullable)
  - Allowed values: `none`, `uppercase`
- `text_blend_mode` (enum, optional, nullable)
  - Allowed values: `normal`, `difference`, `multiply`
- `text_shadow` (StudioTextStyleShadowModel, optional, nullable)
- `text_outline` (StudioTextStyleOutlineModel, optional, nullable)
- `background_enabled` (boolean, optional, nullable)
- `background_color` (string, optional, nullable)
- `background_opacity` (double, optional, nullable)
- `background_blur` (double, optional, nullable)
- `background_border_radius` (double, optional, nullable)
- `word_highlights_enabled` (boolean, optional, nullable)
- `word_highlights_color` (string, optional, nullable)
- `word_highlights_background_color` (string, optional, nullable)
- `word_highlights_opacity` (double, optional, nullable)
- `word_highlights_border_radius` (double, optional, nullable)
- `word_highlights_blur` (double, optional, nullable)
- `section_animation` (CaptionStyleSectionAnimationModel, optional, nullable)
- `word_animation` (CaptionStyleWordAnimationModel, optional, nullable)
- `character_animation` (CaptionStyleCharacterAnimationModel, optional, nullable)
- `cursor_enabled` (boolean, optional, nullable)
- `width_pct` (double, optional, nullable)
- `horizontal_placement` (CaptionStyleHorizontalPlacementModel, optional, nullable)
- `vertical_placement` (CaptionStyleVerticalPlacementModel, optional, nullable)
- `auto_break_enabled` (boolean, optional, nullable)
- `max_lines_per_section` (integer, optional, nullable)
- `max_words_per_line` (integer, optional, nullable)

### StudioAgentSettingsModel

- `tool_settings` (map from string to StudioAgentToolSettingsModel, optional)

### ValidationErrorLocItems

### CaptionStyleTemplateModel

- `key` (string, required)
- `label` (string, required)
- `requires_high_fps` (boolean, optional, default: false)

### StudioTextStyleShadowModel

- `enabled` (boolean, required)
- `color` (string, required)
- `opacity` (double, required)
- `blur` (double, required)
- `offset_x` (double, required)
- `offset_y` (double, required)

### StudioTextStyleOutlineModel

- `enabled` (boolean, required)
- `color` (string, required)
- `opacity` (double, required)
- `width` (double, required)

### CaptionStyleSectionAnimationModel

- `enter_type` (enum, required)
  - Allowed values: `none`, `fade`, `scale`, `pop`, `slide_up`, `slide_down`, `slam`, `scale_down`, `slide_in`
- `exit_type` (enum, required)
  - Allowed values: `none`, `fade`, `scale`, `pop`, `slide_up`, `slide_down`, `slam`, `scale_down`, `slide_in`

### CaptionStyleWordAnimationModel

- `enter_type` (enum, required)
  - Allowed values: `none`, `fade`, `scale`, `pop`, `slide_up`, `slide_down`, `slam`, `scale_down`, `slide_in`
- `exit_type` (enum, required)
  - Allowed values: `none`, `fade`, `scale`, `pop`, `slide_up`, `slide_down`, `slam`, `scale_down`, `slide_in`

### CaptionStyleCharacterAnimationModel

- `enter_type` (enum, required)
  - Allowed values: `none`, `fade`, `typewriter`
- `exit_type` (enum, required)
  - Allowed values: `none`, `fade`

### CaptionStyleHorizontalPlacementModel

- `align` (enum, required)
  - Allowed values: `left`, `center`, `right`
- `translate_pct` (double, required)

### CaptionStyleVerticalPlacementModel

- `align` (enum, required)
  - Allowed values: `top`, `center`, `bottom`
- `translate_pct` (double, required)

### StudioAgentToolSettingsModel

- `skip_confirmation` (boolean, optional, default: false)

## Examples

**Request**

```json
{
  "from_document": "<file: <file1>>",
  "name": "Project 1"
}
```

**Response**

```json
{
  "project": {
    "project_id": "aw1NgEzBg83R7vgmiJt6",
    "name": "My Project",
    "create_date_unix": 1714204800,
    "created_by_user_id": "Vbtgl3bRdj6lk79rYAgx",
    "default_title_voice_ref_id": "JBFqnCBsd6RMkjVDRZzb",
    "default_paragraph_voice_ref_id": "JBFqnCBsd6RMkjVDRZzb",
    "default_model_id": "eleven_multilingual_v2",
    "can_be_downloaded": true,
    "volume_normalization": true,
    "state": "default",
    "access_level": "viewer",
    "quality_check_on": false,
    "quality_check_on_when_bulk_convert": false,
    "default_title_voice_id": "JBFqnCBsd6RMkjVDRZzb",
    "default_paragraph_voice_id": "JBFqnCBsd6RMkjVDRZzb",
    "last_conversion_date_unix": 1714204800,
    "title": "My Project",
    "author": "John Doe",
    "description": "This is a description of my project.",
    "genres": [
      "Novel",
      "Short Story"
    ],
    "cover_image_url": "https://example.com/cover.jpg",
    "target_audience": "young adult",
    "language": "en",
    "content_type": "Novel",
    "original_publication_date": "2025-01-01",
    "mature_content": false,
    "isbn_number": "978-90-274-3964-2",
    "fiction": "fiction",
    "creation_meta": {
      "creation_progress": 0.5,
      "status": "pending",
      "type": "blank"
    },
    "public_share_id": "abc123def456789"
  }
}
```

**SDK Code**

```python
import requests

url = "https://api.elevenlabs.io/v1/studio/projects"

files = { "from_document": "open('<file1>', 'rb')" }
payload = {
    "acx_volume_normalization": ,
    "apply_text_normalization": ,
    "author": ,
    "auto_assign_voices": ,
    "auto_convert": ,
    "callback_url": ,
    "content_type": ,
    "create_publishing_read": ,
    "default_model_id": ,
    "default_paragraph_voice_id": ,
    "default_title_voice_id": ,
    "description": ,
    "fiction": ,
    "from_content_json": ,
    "from_url": ,
    "genres": ,
    "isbn_number": ,
    "language": ,
    "mature_content": ,
    "name": "Project 1",
    "original_publication_date": ,
    "pronunciation_dictionary_locators": ,
    "quality_preset": ,
    "source_type": ,
    "target_audience": ,
    "title": ,
    "voice_settings": ,
    "volume_normalization": 
}

response = requests.post(url, data=payload, files=files)

print(response.json())
```

```javascript
const url = 'https://api.elevenlabs.io/v1/studio/projects';
const form = new FormData();
form.append('acx_volume_normalization', '');
form.append('apply_text_normalization', '');
form.append('author', '');
form.append('auto_assign_voices', '');
form.append('auto_convert', '');
form.append('callback_url', '');
form.append('content_type', '');
form.append('create_publishing_read', '');
form.append('default_model_id', '');
form.append('default_paragraph_voice_id', '');
form.append('default_title_voice_id', '');
form.append('description', '');
form.append('fiction', '');
form.append('from_content_json', '');
form.append('from_document', '<file1>');
form.append('from_url', '');
form.append('genres', '');
form.append('isbn_number', '');
form.append('language', '');
form.append('mature_content', '');
form.append('name', 'Project 1');
form.append('original_publication_date', '');
form.append('pronunciation_dictionary_locators', '');
form.append('quality_preset', '');
form.append('source_type', '');
form.append('target_audience', '');
form.append('title', '');
form.append('voice_settings', '');
form.append('volume_normalization', '');

const options = {method: 'POST'};

options.body = form;

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api.elevenlabs.io/v1/studio/projects"

	payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"acx_volume_normalization\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"apply_text_normalization\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"author\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"auto_assign_voices\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"auto_convert\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"callback_url\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"content_type\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"create_publishing_read\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"default_model_id\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"default_paragraph_voice_id\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"default_title_voice_id\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"description\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"fiction\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"from_content_json\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"from_document\"; filename=\"<file1>\"\r\nContent-Type: application/octet-stream\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"from_url\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"genres\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"isbn_number\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"language\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"mature_content\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\nProject 1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"original_publication_date\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"pronunciation_dictionary_locators\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"quality_preset\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"source_type\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"target_audience\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"title\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"voice_settings\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"volume_normalization\"\r\n\r\n\r\n-----011000010111000001101001--\r\n")

	req, _ := http.NewRequest("POST", url, payload)

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.elevenlabs.io/v1/studio/projects")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"acx_volume_normalization\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"apply_text_normalization\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"author\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"auto_assign_voices\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"auto_convert\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"callback_url\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"content_type\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"create_publishing_read\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"default_model_id\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"default_paragraph_voice_id\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"default_title_voice_id\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"description\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"fiction\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"from_content_json\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"from_document\"; filename=\"<file1>\"\r\nContent-Type: application/octet-stream\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"from_url\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"genres\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"isbn_number\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"language\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"mature_content\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\nProject 1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"original_publication_date\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"pronunciation_dictionary_locators\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"quality_preset\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"source_type\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"target_audience\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"title\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"voice_settings\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"volume_normalization\"\r\n\r\n\r\n-----011000010111000001101001--\r\n"

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.elevenlabs.io/v1/studio/projects")
  .body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"acx_volume_normalization\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"apply_text_normalization\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"author\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"auto_assign_voices\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"auto_convert\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"callback_url\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"content_type\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"create_publishing_read\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"default_model_id\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"default_paragraph_voice_id\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"default_title_voice_id\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"description\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"fiction\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"from_content_json\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"from_document\"; filename=\"<file1>\"\r\nContent-Type: application/octet-stream\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"from_url\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"genres\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"isbn_number\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"language\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"mature_content\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\nProject 1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"original_publication_date\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"pronunciation_dictionary_locators\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"quality_preset\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"source_type\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"target_audience\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"title\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"voice_settings\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"volume_normalization\"\r\n\r\n\r\n-----011000010111000001101001--\r\n")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.elevenlabs.io/v1/studio/projects', [
  'multipart' => [
    [
        'name' => 'from_document',
        'filename' => '<file1>',
        'contents' => null
    ],
    [
        'name' => 'name',
        'contents' => 'Project 1'
    ]
  ]
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.elevenlabs.io/v1/studio/projects");
var request = new RestRequest(Method.POST);
request.AddParameter("undefined", "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"acx_volume_normalization\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"apply_text_normalization\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"author\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"auto_assign_voices\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"auto_convert\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"callback_url\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"content_type\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"create_publishing_read\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"default_model_id\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"default_paragraph_voice_id\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"default_title_voice_id\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"description\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"fiction\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"from_content_json\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"from_document\"; filename=\"<file1>\"\r\nContent-Type: application/octet-stream\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"from_url\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"genres\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"isbn_number\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"language\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"mature_content\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\nProject 1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"original_publication_date\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"pronunciation_dictionary_locators\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"quality_preset\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"source_type\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"target_audience\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"title\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"voice_settings\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"volume_normalization\"\r\n\r\n\r\n-----011000010111000001101001--\r\n", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation
let parameters = [
  [
    "name": "acx_volume_normalization",
    "value": 
  ],
  [
    "name": "apply_text_normalization",
    "value": 
  ],
  [
    "name": "author",
    "value": 
  ],
  [
    "name": "auto_assign_voices",
    "value": 
  ],
  [
    "name": "auto_convert",
    "value": 
  ],
  [
    "name": "callback_url",
    "value": 
  ],
  [
    "name": "content_type",
    "value": 
  ],
  [
    "name": "create_publishing_read",
    "value": 
  ],
  [
    "name": "default_model_id",
    "value": 
  ],
  [
    "name": "default_paragraph_voice_id",
    "value": 
  ],
  [
    "name": "default_title_voice_id",
    "value": 
  ],
  [
    "name": "description",
    "value": 
  ],
  [
    "name": "fiction",
    "value": 
  ],
  [
    "name": "from_content_json",
    "value": 
  ],
  [
    "name": "from_document",
    "fileName": "<file1>"
  ],
  [
    "name": "from_url",
    "value": 
  ],
  [
    "name": "genres",
    "value": 
  ],
  [
    "name": "isbn_number",
    "value": 
  ],
  [
    "name": "language",
    "value": 
  ],
  [
    "name": "mature_content",
    "value": 
  ],
  [
    "name": "name",
    "value": "Project 1"
  ],
  [
    "name": "original_publication_date",
    "value": 
  ],
  [
    "name": "pronunciation_dictionary_locators",
    "value": 
  ],
  [
    "name": "quality_preset",
    "value": 
  ],
  [
    "name": "source_type",
    "value": 
  ],
  [
    "name": "target_audience",
    "value": 
  ],
  [
    "name": "title",
    "value": 
  ],
  [
    "name": "voice_settings",
    "value": 
  ],
  [
    "name": "volume_normalization",
    "value": 
  ]
]

let boundary = "---011000010111000001101001"

var body = ""
var error: NSError? = nil
for param in parameters {
  let paramName = param["name"]!
  body += "--\(boundary)\r\n"
  body += "Content-Disposition:form-data; name=\"\(paramName)\""
  if let filename = param["fileName"] {
    let contentType = param["content-type"]!
    let fileContent = String(contentsOfFile: filename, encoding: String.Encoding.utf8)
    if (error != nil) {
      print(error as Any)
    }
    body += "; filename=\"\(filename)\"\r\n"
    body += "Content-Type: \(contentType)\r\n\r\n"
    body += fileContent
  } else if let paramValue = param["value"] {
    body += "\r\n\r\n\(paramValue)"
  }
}

let request = NSMutableURLRequest(url: NSURL(string: "https://api.elevenlabs.io/v1/studio/projects")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```