> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.resemble.ai/api-reference/identity/create-identity/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.resemble.ai/_mcp/server. # Create identity POST https://app.resemble.ai/api/v2/identity Content-Type: application/json Create a new identity profile. Two request forms are supported: the simple audio-only form (flat `name` + one audio source; creates a team-visible person identity and enrolls the voice immediately) and the multimodal form (a nested `identity` object with full control over type and visibility). Reference: https://docs.resemble.ai/api-reference/identity/create-identity ## Authentication - `Authorization` header (bearer token, required) — API key from https://app.resemble.ai/hub/api ## Request ### Body (application/json) This endpoint expects an Identity_createIdentity_Request. - `Identity_createIdentity_Request` ## Response ### 200 Identity created (simple form) - `success` (boolean, optional) — Whether the voice was enrolled for matching immediately - `item` (IdentitySummary, optional) — Identity summary returned by the list and simple-create endpoints ### 201 Identity created (multimodal form) - `uuid` (string, optional) - `name` (string, optional) - `identity_type` (enum, optional) - Allowed values: `person`, `brand` - `visibility` (enum, optional) - Allowed values: `team`, `global` - `notes` (string, optional, nullable) - `voice_profile_id` (string, optional, nullable) - `created_at` (datetime, optional) - `updated_at` (datetime, optional) - `project_count` (integer, optional) - `voice_samples` (list of IdentityAttachment, optional) - `face_photos` (list of IdentityAttachment, optional) - `reference_videos` (list of IdentityAttachment, optional) - `embeddings` (list of IdentityEmbeddingsItems, optional) — Per-modality embedding processing status - `projects` (list of IdentityProjectsItems, optional) ## Errors ### 422 Unprocessable Entity Error Validation failed or no audio source supplied - `success` (boolean, optional) - `error` (string, optional) - `errors` (map from string to list of string, optional) - `message` (string, optional) ## Types ### Simple (audio-only) - `name` (string, required) — Speaker name/identifier - `url` (string, optional) — URL to an audio sample (one of url, audio, signed_id is required) - `signed_id` (string, optional) — Signed ID from a secure upload ### Multimodal - `identity` (IdentityPostRequestBodyContentApplicationJsonSchemaOneOf1Identity, required) ### IdentitySummary Identity summary returned by the list and simple-create endpoints - `uuid` (string, optional) - `name` (string, optional) - `created_at` (datetime, optional) - `audio_url` (string, optional, nullable) — URL of the first voice sample, if any - `visibility` (enum, optional) - Allowed values: `team`, `global` - `identity_type` (enum, optional) - Allowed values: `person`, `brand` - `notes` (string, optional, nullable) - `voice_profile_id` (string, optional, nullable) - `updated_at` (datetime, optional) - `project_count` (integer, optional) ### IdentityAttachment A reference media file attached to an identity - `id` (integer, optional) - `filename` (string, optional) - `byte_size` (integer, optional) - `content_type` (string, optional) ### IdentityEmbeddingsItems - `modality` (enum, optional) - Allowed values: `voice`, `face`, `video` - `status` (string, optional) - `attachment_count` (integer, optional) - `computed_at` (datetime, optional, nullable) ### IdentityProjectsItems - `uuid` (string, optional) - `name` (string, optional) ### IdentityPostRequestBodyContentApplicationJsonSchemaOneOf1Identity - `name` (string, required) - `identity_type` (enum, optional, default: person) - Allowed values: `person`, `brand` - `visibility` (enum, optional, default: team) - Allowed values: `team`, `global` - `notes` (string, optional) - `voice_profile_id` (string, optional) ## Examples ### Example 1 **Request** ```json { "name": "string" } ``` **Response** ```json { "success": true, "item": { "uuid": "string", "name": "string", "created_at": "2024-01-15T09:30:00Z", "audio_url": "string", "visibility": "team", "identity_type": "person", "notes": "string", "voice_profile_id": "string", "updated_at": "2024-01-15T09:30:00Z", "project_count": 1 } } ``` **SDK Code** ```python import requests url = "https://app.resemble.ai/api/v2/identity" payload = { "name": "string" } headers = { "Authorization": "Bearer ", "Content-Type": "application/json" } response = requests.post(url, json=payload, headers=headers) print(response.json()) ``` ```javascript const url = 'https://app.resemble.ai/api/v2/identity'; const options = { method: 'POST', headers: {Authorization: 'Bearer ', 'Content-Type': 'application/json'}, body: '{"name":"string"}' }; 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://app.resemble.ai/api/v2/identity" payload := strings.NewReader("{\n \"name\": \"string\"\n}") req, _ := http.NewRequest("POST", url, payload) req.Header.Add("Authorization", "Bearer ") req.Header.Add("Content-Type", "application/json") 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://app.resemble.ai/api/v2/identity") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Post.new(url) request["Authorization"] = 'Bearer ' request["Content-Type"] = 'application/json' request.body = "{\n \"name\": \"string\"\n}" response = http.request(request) puts response.read_body ``` ```java import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.post("https://app.resemble.ai/api/v2/identity") .header("Authorization", "Bearer ") .header("Content-Type", "application/json") .body("{\n \"name\": \"string\"\n}") .asString(); ``` ```php request('POST', 'https://app.resemble.ai/api/v2/identity', [ 'body' => '{ "name": "string" }', 'headers' => [ 'Authorization' => 'Bearer ', 'Content-Type' => 'application/json', ], ]); echo $response->getBody(); ``` ```csharp using RestSharp; var client = new RestClient("https://app.resemble.ai/api/v2/identity"); var request = new RestRequest(Method.POST); request.AddHeader("Authorization", "Bearer "); request.AddHeader("Content-Type", "application/json"); request.AddParameter("application/json", "{\n \"name\": \"string\"\n}", ParameterType.RequestBody); IRestResponse response = client.Execute(request); ``` ```swift import Foundation let headers = [ "Authorization": "Bearer ", "Content-Type": "application/json" ] let parameters = ["name": "string"] as [String : Any] let postData = JSONSerialization.data(withJSONObject: parameters, options: []) let request = NSMutableURLRequest(url: NSURL(string: "https://app.resemble.ai/api/v2/identity")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "POST" request.allHTTPHeaderFields = headers 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() ``` ### Example 2 **Request** ```json { "name": "string" } ``` **Response** ```json { "uuid": "string", "name": "string", "identity_type": "person", "visibility": "team", "notes": "string", "voice_profile_id": "string", "created_at": "2024-01-15T09:30:00Z", "updated_at": "2024-01-15T09:30:00Z", "project_count": 1, "voice_samples": [ { "id": 1, "filename": "string", "byte_size": 1, "content_type": "string" } ], "face_photos": [ { "id": 1, "filename": "string", "byte_size": 1, "content_type": "string" } ], "reference_videos": [ { "id": 1, "filename": "string", "byte_size": 1, "content_type": "string" } ], "embeddings": [ { "modality": "voice", "status": "string", "attachment_count": 1, "computed_at": "2024-01-15T09:30:00Z" } ], "projects": [ { "uuid": "string", "name": "string" } ] } ``` **SDK Code** ```python import requests url = "https://app.resemble.ai/api/v2/identity" payload = { "name": "string" } headers = { "Authorization": "Bearer ", "Content-Type": "application/json" } response = requests.post(url, json=payload, headers=headers) print(response.json()) ``` ```javascript const url = 'https://app.resemble.ai/api/v2/identity'; const options = { method: 'POST', headers: {Authorization: 'Bearer ', 'Content-Type': 'application/json'}, body: '{"name":"string"}' }; 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://app.resemble.ai/api/v2/identity" payload := strings.NewReader("{\n \"name\": \"string\"\n}") req, _ := http.NewRequest("POST", url, payload) req.Header.Add("Authorization", "Bearer ") req.Header.Add("Content-Type", "application/json") 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://app.resemble.ai/api/v2/identity") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Post.new(url) request["Authorization"] = 'Bearer ' request["Content-Type"] = 'application/json' request.body = "{\n \"name\": \"string\"\n}" response = http.request(request) puts response.read_body ``` ```java import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.post("https://app.resemble.ai/api/v2/identity") .header("Authorization", "Bearer ") .header("Content-Type", "application/json") .body("{\n \"name\": \"string\"\n}") .asString(); ``` ```php request('POST', 'https://app.resemble.ai/api/v2/identity', [ 'body' => '{ "name": "string" }', 'headers' => [ 'Authorization' => 'Bearer ', 'Content-Type' => 'application/json', ], ]); echo $response->getBody(); ``` ```csharp using RestSharp; var client = new RestClient("https://app.resemble.ai/api/v2/identity"); var request = new RestRequest(Method.POST); request.AddHeader("Authorization", "Bearer "); request.AddHeader("Content-Type", "application/json"); request.AddParameter("application/json", "{\n \"name\": \"string\"\n}", ParameterType.RequestBody); IRestResponse response = client.Execute(request); ``` ```swift import Foundation let headers = [ "Authorization": "Bearer ", "Content-Type": "application/json" ] let parameters = ["name": "string"] as [String : Any] let postData = JSONSerialization.data(withJSONObject: parameters, options: []) let request = NSMutableURLRequest(url: NSURL(string: "https://app.resemble.ai/api/v2/identity")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "POST" request.allHTTPHeaderFields = headers 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() ```