Inicio / Desarrolladores

Desarrolla en una tarde

Autentícate, consulta la asistencia, registra una huella y abre una puerta, con ejemplos para copiar y pegar en el lenguaje que ya usas.

Inicio rápido

Tres pasos hasta tu primera llamada

Obtén una clave de API

Crea una cuenta en el portal para desarrolladores y vincula tu dispositivo con su número de serie. Recibirás AuthToken.

Autentica cada solicitud

Envía AuthToken en cada llamada. Limita el acceso a tu cuenta y al dispositivo concreto.

Llama a un endpoint

Empieza con GetAttendanceByDate para confirmar que los datos fluyen y después pasa al registro y al control de acceso.

URL base

https://api.camsbiometrics.com/v3/

# Fetch attendance for a date range
curl https://api.camsbiometrics.com/v3/attendance/getbyscandate \
  -d "AuthToken=$API_KEY" \
  -d "StartDate=2026-06-01" \
  -d "EndDate=2026-06-21"
$ch = curl_init("https://api.camsbiometrics.com/v3/attendance/getbyscandate");
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_POSTFIELDS => [
    "AuthToken"  => $apiKey,
    "StartDate"  => "2026-06-01",
    "EndDate"    => "2026-06-21",
  ],
]);
$data = json_decode(curl_exec($ch), true);
import requests

r = requests.post(
    "https://api.camsbiometrics.com/v3/attendance/getbyscandate",
    data={
        "AuthToken": api_key,
        "StartDate": "2026-06-01",
        "EndDate": "2026-06-21",
    },
)
logs = r.json()["Attendance"]
const res = await fetch(
  "https://api.camsbiometrics.com/v3/attendance/getbyscandate",
  {
    method: "POST",
    headers: { "Content-Type": "application/x-www-form-urlencoded" },
    body: new URLSearchParams({
      AuthToken: apiKey,
      StartDate: "2026-06-01",
      EndDate: "2026-06-21",
    }),
  }
);
const { Attendance } = await res.json();

El mismo patrón sirve para todas las operaciones: solo cambian la ruta y los parámetros.

Recetas habituales

Copia, pega y publica

POST

Registrar un usuario

curl .../v3/user/add \
 -d "AuthToken=$K" \
 -d "DeviceSN=ZK6A2300583" \
 -d "EmployeeCode=1042" \
 -d "Name=Priya"
POST

Abrir una puerta

curl .../v3/access/opendoor \
 -d "AuthToken=$K" \
 -d "DeviceSN=ZK6A2300583" \
 -d "DoorNo=1"
CALLBACK

Registrar un webhook

curl .../v3/callback/register \
 -d "AuthToken=$K" \
 -d "Url=https://app/hook" \
 -d "Events=attendance.new"
🔒

Mantén las claves en el servidor

Nunca incrustes AuthToken en código del lado del cliente. Canaliza las llamadas a través de tu backend.

🔄

Haz tus webhooks idempotentes

El gateway reintenta hasta que devuelves 200. Elimina duplicados según el id del evento para que los reintentos no causen problemas.

⏳

Gestiona los comandos en cola

Si un dispositivo está sin conexión recibirás 409; el comando queda en cola. Consulta GetCommandStatus.

Pruebas locales

Prueba las URL de callback desde tu equipo

Tu equipo de desarrollo está detrás de un firewall, por lo que el gateway no puede acceder directamente a localhost. Exponlo con un túnel, apunta tu URL de callback a la dirección pública y genera un fichaje de prueba.

  • Usa siempre una URL de callback HTTPS
  • Mantén el túnel activo durante toda la sesión de pruebas
  • Las URL gratuitas de ngrok cambian al reiniciar: actualiza el callback cuando eso ocurra
  • Haz tu manejador idempotente: el gateway reintenta hasta recibir 200
# 1. install & authenticate ngrok
ngrok config add-authtoken $TOKEN
# 2. expose your local app (e.g. port 3000)
ngrok http 3000
# Forwarding https://abc123.ngrok-free.app -> localhost:3000
# 3. set that HTTPS URL as your Callback URL
# Cams ngrok helper kit (Windows)
# download:
developer.camsbiometrics.com/setup/ngrok-helper-kit.rar
# then:
edit app.properties   # add your ngrok authtoken
run  check_ngrok.bat

Conectar un dispositivo

Apunta un terminal al gateway

La mayoría de los terminales de asistencia (ZKTeco, eSSL y compatibles) usan el protocolo ICLOCK / push. Configura los campos del servidor en la nube en el dispositivo y enviará la asistencia a tu cuenta, sin necesidad de PC ni de software local.

⚙
En el dispositivo: Menu → COMM → Cloud Server / ADMS, introduce el servidor indicado abajo y comprueba que el icono de conexión con el servidor aparece en la pantalla de inicio.

Ajustes del servidor del dispositivo

IP del servidor
152.53.172.248
Puerto
8123 (desarrollo / pruebas) · 80 (producción)
Habilitar nombre de dominio
OFF
Servidor proxy
OFF
Protocolo
ICLOCK / Push

Ajusta la IP, la subred, el gateway y el DNS del dispositivo a tu LAN (o usa DHCP) antes de configurar el servidor en la nube.

¿Tienes a mano el número de serie de tu dispositivo?

Vincúlalo en el portal para desarrolladores y haz una llamada en vivo en minutos.