Crear una Persona
Endpoint
https://api.verifik.co/v2/face-recognition/persons
La API de Crear Persona te permite crear una nueva persona dentro del sistema de reconocimiento facial. Puedes asociar una persona con su nombre, imágenes, género, fecha de nacimiento, nacionalidad, colecciones y notas adicionales.
Encabezados
Content-Type
Tipo: String
Requerido: Requerido
Valor: application/json
Authorization
Tipo: String
Requerido: Requerido
Valor: Bearer <token>
Parámetros
name
Tipo: String
Requerido: Sí
Nombre completo de la persona.
images
Tipo: Array de String
Requerido: Sí
1–3 imágenes en Base64 (sin prefijo data:). Enviar más de una pose (frente + un poco de perfil + otra luz) hace el enrolamiento más robusto.
gender
Tipo: String
Requerido: No
Género de la persona (M o F).
date_of_birth
Tipo: String (ISO8601)
Requerido: No
Fecha de nacimiento de la persona.
nationality
Tipo: String
Requerido: No
Nacionalidad de la persona.
collections
Tipo: Array de String
Requerido: No
Array de IDs de colección relacionados con esta persona.
notes
Tipo: String
Requerido: No
Notas adicionales sobre la persona.
Solicitud
- Node.js
- Python
- PHP
- Go
import axios from 'axios';
const options = {
method: 'POST',
url: 'https://api.verifik.co/v2/face-recognition/persons',
data: {
name: "John Doe",
images: [
"base64_encoded_image_1",
"base64_encoded_image_2"
],
gender: "M",
date_of_birth: "1990-01-15",
"nationality": "US",
"collections": ["collection_123456789"],
"notes": "Cliente VIP"
},
headers: {
Accept: 'application/json',
Authorization: 'jwt <tu_token>'
}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
import http.client
import json
conn = http.client.HTTPSConnection("api.verifik.co")
payload = json.dumps({
"name": "John Doe",
"images": [
"base64_encoded_image_1",
"base64_encoded_image_2"
],
"gender": "M",
"date_of_birth": "1990-01-15",
"nationality": "US",
"collections": ["collection_123456789"],
"notes": "Cliente VIP"
})
headers = {
'Accept': "application/json",
'Authorization': "JWT token",
'Content-Type': 'application/json'
}
conn.request("POST", "/v2/face-recognition/persons", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.verifik.co/v2/face-recognition/persons', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'JWT token',
'Content-Type' => 'application/json',
],
'json' => [
'name' => 'John Doe',
'images' => [
'base64_encoded_image_1',
'base64_encoded_image_2'
],
'gender' => 'M',
'date_of_birth' => '1990-01-15',
'nationality' => 'US',
'collections' => ['collection_123456789'],
'notes' => 'Cliente VIP'
]
]);
echo $response->getBody();
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
)
func main() {
url := "https://api.verifik.co/v2/face-recognition/persons"
payload := map[string]interface{}{
"name": "John Doe",
"images": []string{"base64_encoded_image_1", "base64_encoded_image_2"},
"gender": "M",
"date_of_birth": "1990-01-15",
"nationality": "US",
"collections": []string{"collection_123456789"},
"notes": "Cliente VIP",
}
jsonData, _ := json.Marshal(payload)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
req.Header.Add("Accept", "application/json")
req.Header.Add("Authorization", "JWT token")
req.Header.Add("Content-Type", "application/json")
client := &http.Client{}
res, _ := client.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}
Ejemplo de Respuesta
- 200 OK
import Foundation
let headers = [
"Accept": "application/json",
"Authorization": "JWT token",
"Content-Type": "application/json"
]
let parameters = [
"name": "John Doe",
"images": [
"base64_encoded_image_1",
"base64_encoded_image_2"
],
"gender": "M",
"date_of_birth": "1990-01-15",
"nationality": "US",
"collections": ["collection_123456789"],
"notes": "Cliente VIP"
] as [String : Any]
let postData = try? JSONSerialization.data(withJSONObject: parameters, options: [])
let request = NSMutableURLRequest(url: NSURL(string: "https://api.verifik.co/v2/face-recognition/persons")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData
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()
Respuesta
- 200
- 412
- 400
- 400 (Falta Nombre)
{
"success": true,
"data": {
"_id": "person_123456789",
"name": "John Doe",
"gender": "M",
"date_of_birth": {
"year": 1990,
"month": 1,
"day": 15
},
"nationality": "US",
"images": [
"base64_encoded_image_1",
"base64_encoded_image_2"
],
"collections": ["collection_123456789"],
"notes": "Cliente VIP",
"client": "client_123456789",
"status": "active",
"faceEncodings": [
"face_encoding_1",
"face_encoding_2"
],
"createdAt": "2024-01-15T10:30:00Z",
"updatedAt": "2024-01-15T10:30:00Z"
}
}
El nombre y la fecha de nacimiento ya están enrolados en la colección solicitada. data es la persona existente para que puedas actualizar o verificar 1:1 en lugar de adivinar con una búsqueda 1:N.
{
"message": "person_already_set",
"code": "PreconditionFailed",
"data": {
"_id": "693c646dfd68b59e4e8d1d58",
"name": "Maria Perez",
"date_of_birth": "1994-02-07",
"gender": "F",
"collections": [
{
"_id": "6612a020a55c329bfb3f62e6",
"code": "ed27d231-b437-42c5-94c5-a2130c447d1e",
"name": "CholloApp"
}
],
"thumbnails": [
{
"id": "thumb-1",
"thumbnail": "<base64>"
}
]
}
}
thumbnails son los recortes de la cara ya enrolada, para que puedas mostrar esa persona junto a la foto que acabas de intentar enrolar. También puedes encontrar el mismo registro con Buscar una Persona por Nombre. Payloads de imagen muy cortos aún pueden devolver 412 con "message": "only_images_in_base64".
{
"error": "Formato de imagen inválido",
"message": "INVALID_IMAGE_FORMAT"
}
{
"error": "El nombre de la persona es requerido",
"message": "NAME_REQUIRED"
}
Características
- Creación de Persona: Crea nuevos individuos en el sistema de reconocimiento facial
- Carga de Imágenes: Soporte para múltiples imágenes codificadas en Base64
- Asignación de Colección: Asigna personas a colecciones específicas
- Procesamiento Automático: Las codificaciones faciales se generan automáticamente
- Respuesta Estructurada: Formato de datos organizado para fácil integración
- Múltiples Lenguajes de Programación: Soporte para JavaScript, Python, PHP y Swift
- Manejo de Errores: Respuestas de error completas para varios escenarios