> For the complete documentation index, see [llms.txt](https://docs.facephi.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.facephi.com/docs.facephi-pt-br/sdks/backend-sdk/voice/technical_documentation/api_reference/enrollment/api-v1-enrollment.md).

# /api/v1/enrollment

Este endpoint se utiliza para registrar (enroll) una nueva voz. Recibe uno o varios archivos de audio y devuelve una plantilla de voz (voice template). La plantilla de voz es una cadena que contiene la información biométrica de la voz. Esta plantilla puede utilizarse para autenticar las voces en el futuro.

```json
{"openapi":"3.0.1","info":{"title":"API REST de Voice-Service","version":"3.2.0"},"servers":[{"url":"http://127.0.0.1:6982/"}],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"},"ApiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key","description":"Nombre por defecto de la cabecera de la API key. Puede sobrescribirse en el arranque con `auth_api_key_header_name`."}},"schemas":{"EnrollmentBody":{"type":"object","description":"Cuerpo (body) de la petición de enrollment","properties":{"audios":{"description":"La longitud del array puede ser 1, o de 3 a 5. No es válido enviar 2 audios, ni más de 5. 1 audio para enrolamiento text-independent. de 3 a 5 audios para enrolamiento text-dependent.","type":"array","maxItems":5,"items":{"$ref":"#/components/schemas/AudioBuffer"}},"check_liveness":{"$ref":"#/components/schemas/CheckLiveness"},"check_quality":{"$ref":"#/components/schemas/CheckQuality"},"liveness_threshold":{"$ref":"#/components/schemas/LivenessThreshold"},"minimum_snr_db":{"$ref":"#/components/schemas/MinimumSnrDb"},"minimum_speech_duration_ms":{"$ref":"#/components/schemas/MinimumAudioLengthMs"},"minimum_speech_relative_length":{"$ref":"#/components/schemas/MinimumSpeechRelativeLength"},"maximum_multiple_speakers_detector_score":{"$ref":"#/components/schemas/MaximumMultipleSpeakersDetectorScore"},"extra_data":{"$ref":"#/components/schemas/ExtraData"}},"required":["audios"]},"AudioBuffer":{"type":"string","description":"Buffer de audio en bruto en formato WAV, OPUS/OGG, MP3 o AAC, codificado en base64 RFC4648. El audio puede estar cifrado o no."},"CheckLiveness":{"type":"boolean","default":false,"description":"Si es true, se realizará una prueba de vida (liveness)"},"CheckQuality":{"type":"boolean","default":true,"description":"Si es true, se realizará una comprobación de calidad"},"LivenessThreshold":{"type":"number","default":0.5,"description":"Umbral para la detección de vida (liveness). Si la probabilidad de vida es inferior a este valor, el audio se considera inválido."},"MinimumSnrDb":{"type":"number","description":"SNR mínimo en dB para que el audio se considere válido.","default":8},"MinimumAudioLengthMs":{"type":"number","description":"Duración mínima del audio en milisegundos para que se considere válido.","default":1000},"MinimumSpeechRelativeLength":{"type":"number","description":"Longitud relativa mínima del habla (longitud del habla en relación con la duración total del audio).","default":0},"MaximumMultipleSpeakersDetectorScore":{"type":"number","description":"Puntuación máxima permitida del detector de múltiples hablantes.","default":1},"ExtraData":{"type":"string","description":"Datos tokenizados para invocar al servicio Api Tracking tras la operación, codificados en base64."},"EnrollmentResponse":{"type":"object","description":"Respuesta de enrollment","properties":{"operation_result":{"$ref":"#/components/schemas/OperationResult"},"template_type":{"$ref":"#/components/schemas/TemplateType"},"template":{"$ref":"#/components/schemas/AudioTemplate"},"validate_audios_result":{"type":"array","items":{"$ref":"#/components/schemas/AudioResult"}}}},"OperationResult":{"type":"number","description":"Resultado de la operación.","enum":["NOISY                          = 0","LONG_REVERBERATION             = 1","SMALL_SPEECH                   = 2","OK                             = 3","NOT_EVALUATED                  = 4","SPOOF                          = 5","DUPLICATED_AUDIO               = 6","DIFFERENT_VOICES               = 7","EMPTY_AUDIO                    = 8","TOO_MANY_AUDIOS                = 9","NOT_ENOUGH_GOOD_AUDIOS         = 10","CONFIG_MANAGER_ERROR           = 11","INVALID_LICENSE                = 12","EXPIRED                        = 13","SUSPENDED                      = 14","E_SYSTEM_PERMISSION            = 15","E_WMIC                         = 16","E_INET                         = 17","E_NET_PROXY                    = 18","E_REVOKED                      = 19","E_LICENSE_KEY                  = 20","E_ACTIVATION_LIMIT             = 21","E_VM                           = 22","E_COUNTRY                      = 23","E_IP                           = 24","E_CONTAINER                    = 25","DATA_NOT_FOUND                 = 26","ENVIRONMENT_VARIABLE_NOT_FOUND = 27","SMALL_RELATIVE_SPEECH          = 28","MULTIPLE_SPEAKERS              = 29"]},"TemplateType":{"type":"string","description":"Tipo de plantilla (template) devuelto como resultado de la operación."},"AudioTemplate":{"type":"string","description":"Buffer de la plantilla biométrica (template), obtenido de Enrollment(), cifrado y codificado en base64 RFC4648."},"AudioResult":{"type":"object","description":"Resultado del procesamiento de un audio","properties":{"audio_position":{"$ref":"#/components/schemas/AudioPosition"},"result_code":{"$ref":"#/components/schemas/OperationResult"},"liveness_score":{"$ref":"#/components/schemas/LivenessScore"},"matching_score":{"$ref":"#/components/schemas/MatchingScore"},"snr_db_detected":{"$ref":"#/components/schemas/SnrDbDetected"},"speech_length_ms_detected":{"$ref":"#/components/schemas/SpeechLengthMsDetected"},"speech_relative_length_detected":{"$ref":"#/components/schemas/SpeechRelativeLengthDetected"},"multiple_speakers_score_detected":{"$ref":"#/components/schemas/MultipleSpeakersScoreDetected"}}},"AudioPosition":{"type":"integer","description":"Posición del audio en el vector de audios. Comienza en 0."},"LivenessScore":{"type":"number","description":"Probabilidad de vida (liveness)"},"MatchingScore":{"type":"number","description":"Probabilidad de coincidencia (matching)"},"SnrDbDetected":{"type":"number","description":"SNR en dB detectado en el audio."},"SpeechLengthMsDetected":{"type":"number","description":"Duración del habla en milisegundos detectada en el audio."},"SpeechRelativeLengthDetected":{"type":"number","description":"Longitud relativa del habla detectada en el audio."},"MultipleSpeakersScoreDetected":{"type":"number","description":"Puntuación de múltiples hablantes detectada en el audio."},"BadRequestResult":{"type":"object","description":"Resultado cuando llegan parámetros incorrectos en la petición.","properties":{"status":{"type":"number"},"error":{"type":"string"},"timeStamp":{"$ref":"#/components/schemas/TimeStamp"}}},"TimeStamp":{"type":"string","description":"Un valor de fecha/hora en formato \"%Y-%m-%dT%H:%M:%SZ\"."},"ExceptionResult":{"type":"object","description":"Se ha producido un error en la llamada al backend de Voice-SDK.","properties":{"status":{"type":"number"},"error":{"type":"string"},"exception":{"type":"string"},"timeStamp":{"$ref":"#/components/schemas/TimeStamp"}}}}},"paths":{"/api/v1/enrollment":{"post":{"description":"Este endpoint se utiliza para registrar (enroll) una nueva voz. Recibe uno o varios archivos de audio y devuelve una plantilla de voz (voice template). La plantilla de voz es una cadena que contiene la información biométrica de la voz. Esta plantilla puede utilizarse para autenticar las voces en el futuro.","tags":["Enrollment"],"requestBody":{"description":"Json con la voz de entrada cifrada y codificada en formato base64 RFC4648","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnrollmentBody"}}}},"responses":{"200":{"description":"El resultado del enrolamiento de voz. Los campos *_detected solo están presentes cuando falla la comprobación de calidad del audio.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnrollmentResponse"}}}},"400":{"description":"Han llegado parámetros incorrectos en la petición.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestResult"}}}},"500":{"description":"Se ha producido un error en la llamada al backend de Voice-SDK.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExceptionResult"}}}}}}}}}
```
