Autenticación
La API se autentica con una clave de API del equipo enviada como token de portador (bearer token). Cada clave está limitada a un solo equipo y un solo entorno.
Claves de API
Genera claves en Equipos → Claves de API. Una clave se muestra completa una sola vez — solo se guarda un hash SHA-256 de nuestro lado. Envíala como token de portador en el encabezado que se muestra a continuación:
curl https://api.seeitlive.io/v1/sessions \
-H "Authorization: Bearer sil_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"Entornos
Cada clave pertenece a uno de dos entornos, identificado por su prefijo:
| Prefijo | Entorno | Uso |
|---|---|---|
sil_live_ | Producción | Sesiones reales de clientes. |
sil_test_ | Sandbox | Desarrollo y pruebas. |
Las sesiones creadas con una clave heredan el entorno y el equipo de esa clave.
Proteger una clave
Cada clave se puede restringir para que una clave filtrada resulte inútil desde el lugar equivocado:
- Fuentes permitidas — Restringe una clave por IP, rango CIDR o nombre de host — uno por línea. Los nombres de host se resuelven por DNS y se comparan con la IP de quien llama. Añade una etiqueta en línea después de
#o;, por ejemplo1.2.3.4/24 # servidor 1. - Expiración — Asigna a una clave una fecha de expiración. Una vez pasada, las solicitudes que usen esa clave se rechazan.
- Revocar — Desactiva una clave al instante — las solicitudes en curso empiezan a fallar de inmediato.
Firma de solicitudes
La firma es opcional y se suma a la autenticación por clave — el encabezado Authorization: Bearer sigue siendo obligatorio en cada solicitud. Actívala, rótala o desactívala para una clave desde Equipo → Claves de API → la clave → Seguridad; activarla o rotarla revela el secreto de firma una sola vez, así que guárdalo de inmediato.
Una vez activada, firma cada solicitud calculando HMAC_SHA256(signingSecret, "TIMESTAMP.METHOD.PATH.sha256hex(body)"), codificado en hexadecimal, donde:
| Variable | Descripción |
|---|---|
TIMESTAMP | La marca de tiempo unix en segundos — el mismo valor enviado en el encabezado X-SeeItLive-Timestamp. |
METHOD | El método HTTP, en mayúsculas (por ejemplo, POST). |
PATH | La ruta de la solicitud relativa a la raíz de versión de la API — lo que añades a la URL base, por ejemplo /sessions o /keys?teamId=x. No la URL completa, y sin el prefijo /api/v1. Incluye la cadena de consulta. |
sha256hex(body) | SHA-256 en hexadecimal minúsculas de los bytes exactos del cuerpo de la solicitud; el hash de una cadena vacía cuando no hay cuerpo. |
Envía la firma y la marca de tiempo como encabezados en cada solicitud firmada:
| Encabezado | Valor |
|---|---|
X-SeeItLive-Signature | sha256= seguido de la firma codificada en hexadecimal. |
X-SeeItLive-Timestamp | La misma marca de tiempo unix (en segundos) usada en la firma. |
SIGNING_SECRET=your-signing-secret # shown once when you enable signing
TS=$(date +%s)
BODY='{"channel":"demo"}'
BODY_HASH=$(printf '%s' "$BODY" | openssl dgst -sha256 | sed 's/^.* //')
SIG=$(printf '%s' "$TS.POST./sessions.$BODY_HASH" | openssl dgst -sha256 -hmac "$SIGNING_SECRET" | sed 's/^.* //')
curl https://api.seeitlive.io/v1/sessions \
-H "Authorization: Bearer sil_live_xxxxxxxx" \
-H "X-SeeItLive-Timestamp: $TS" \
-H "X-SeeItLive-Signature: sha256=$SIG" \
-H "Content-Type: application/json" \
-d "$BODY"Límites de solicitudes
La API permite 100 solicitudes por minuto por clave. Los endpoints de creación de sesión y de entrega de invitaciones tienen límites más estrictos. Superar un límite devuelve 429 — consulta la referencia de errores completa para conocer todos los códigos de estado que puede devolver la API.
| Estado | Significado |
|---|---|
401 | Clave ausente o inválida. |
403 | Clave no permitida desde esta IP u origen, o falta el permiso necesario. |
402 | Límite del plan alcanzado (sesiones, asientos) — se requiere una mejora de plan. |
400 | Error de validación. |
429 | Límite de solicitudes superado. |