Docs/Autenticación

Autenticación

La API de Apertur utiliza claves API para la autenticación. Las claves están asociadas a un proyecto.

Formato de clave API

Las claves API siguen el formato:

aptr_{env}_{random}
ParteValorDescripción
aptrPrefijo fijoIdentifica una clave de Apertur
random32 caracteres hexadecimalesSecreto criptográficamente aleatorio

Ejemplo:

aptr_live_z9y8x7w6v5u4t3s2r1q0p9o8n7m6l5k4

Envío de la clave API

Incluya su clave API en el encabezado Authorization de cada solicitud utilizando el esquema Bearer:

Authorization: Bearer aptr_live_xxxx

Las claves API deben mantenerse en secreto. Nunca las exponga en JavaScript del lado del cliente ni las incluya en el control de versiones. Utilice variables de entorno en su servidor.

curl https://api.apertur.ca/v1/upload-sessions \
  -H "Authorization: Bearer aptr_live_xxxx"

Firma de solicitudes

Para una protección adicional contra manipulación y repetición, habilite la firma HMAC de solicitudes en una API key desde su configuración en el panel. Una vez habilitada, cada solicitud debe incluir también una firma válida — la firma es un factor adicional, por lo que la Bearer key sigue siendo obligatoria en cada solicitud.

Envíe la firma y la marca de tiempo en los encabezados X-Aptr-Signature y X-Aptr-Timestamp, calculados con HMAC-SHA256 sobre la marca de tiempo, el método, la ruta y el hash del cuerpo:

X-Aptr-Signature: sha256=<hex>
X-Aptr-Timestamp: <unix seconds>

Firme la ruta completa de la solicitud tal como se envía, incluyendo el prefijo /api/v1 y cualquier cadena de consulta — por ejemplo /api/v1/upload-sessions. El método va en mayúsculas, la marca de tiempo es en segundos Unix, y el hash del cuerpo es el digest SHA-256 en hexadecimal minúscula de los bytes exactos del cuerpo (el digest de una cadena vacía cuando no hay cuerpo).

HMAC_SHA256(signingSecret, `${timestamp}.${method}.${path}.${sha256hex(body)}`)

Las solicitudes con más de 5 minutos de antigüedad son rechazadas.

Secreto de firma

Habilite, rote o deshabilite la firma de una clave desde su configuración en el panel. Habilitar o rotar devuelve el signing secret una única vez — cópielo de inmediato, ya que no se puede recuperar después.

SIGNING_SECRET=your-signing-secret   # shown once when you enable signing
TS=$(date +%s)
BODY='{"destination_ids":["dst_xxxx"]}'
BODY_HASH=$(printf '%s' "$BODY" | openssl dgst -sha256 | sed 's/^.* //')
SIG=$(printf '%s' "$TS.POST./api/v1/upload-sessions.$BODY_HASH" | openssl dgst -sha256 -hmac "$SIGNING_SECRET" | sed 's/^.* //')

curl https://api.aptr.ca/api/v1/upload-sessions \
  -H "Authorization: Bearer aptr_live_xxxxxxxx" \
  -H "X-Aptr-Timestamp: $TS" \
  -H "X-Aptr-Signature: sha256=$SIG" \
  -H "Content-Type: application/json" \
  -d "$BODY"

Límites de tasa

La API aplica límites de tasa por clave API. Los límites se devuelven en los encabezados de respuesta:

X-RateLimit-Limit: 100
X-RateLimit-Remaining: 97
X-RateLimit-Reset: 1711627200
EndpointLímiteVentana
POST /api/v1/sessions100 solicitudespor minuto
GET /api/v1/sessions300 solicitudespor minuto
Todos los demás endpoints200 solicitudespor minuto

Cuando se excede un límite de tasa, la API devuelve 429 Too Many Requests. Consulte la página de Errores para más detalles.

Autenticación | Documentación de la API | Apertur