Obtener Token
La API de Sheriff usa autenticación basada en tokens JWT. Este endpoint intercambia tus credenciales de API (accessKey y accessSecret) por un token de acceso que deberás incluir en el resto de las solicitudes.
Las credenciales se obtienen desde el dashboard de Sheriff. Consulta la guía de autenticación para conocer el flujo completo y las buenas prácticas de cacheo del token.
El token tiene una vigencia de 1 hora. Para renovarlo sin volver a enviar tus credenciales, usa el endpoint de Refrescar Token.
Endpoint
POST /v1/autenticacion/obtener-token
Los endpoints de autenticación están limitados a un máximo de 10 intentos cada 15 minutos por IP. Al superar el límite, la API responde con 429 Too Many Requests. Cachea el token y reutilízalo durante su vigencia en lugar de solicitarlo en cada llamada.
Headers
| Header | Requerido | Descripción |
|---|---|---|
Authorization | Sí | Esquema Basic con tus credenciales codificadas en Base64: Basic <base64(accessKey:accessSecret)> |
Este endpoint no recibe cuerpo (body). Las credenciales viajan únicamente en el header Authorization.
Ejemplo de Solicitud
# Reemplaza TUS_CREDENCIALES_BASE64 por base64(accessKey:accessSecret)
curl -X POST https://api-public.thesheriff.pe/v1/autenticacion/obtener-token \
-H "Authorization: Basic TUS_CREDENCIALES_BASE64"
const accessKey = process.env.SHERIFF_ACCESS_KEY;
const accessSecret = process.env.SHERIFF_ACCESS_SECRET;
const credentials = Buffer.from(`${accessKey}:${accessSecret}`).toString(
"base64",
);
const response = await fetch(
"https://api-public.thesheriff.pe/v1/autenticacion/obtener-token",
{
method: "POST",
headers: {
Authorization: `Basic ${credentials}`,
},
},
);
const { data } = await response.json();
console.log("Token:", data.token);
Ejemplo de Respuesta
Una respuesta exitosa (200 OK) devuelve el token de acceso dentro del objeto data.
{
"statusCode": 200,
"data": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"expiresIn": "1h",
"tokenType": "Bearer"
}
}
Descripción de Campos
| Campo | Tipo | Descripción |
|---|---|---|
data.token | string | Token JWT de acceso. Inclúyelo como Authorization: Bearer <token> en cada llamada. |
data.expiresIn | string | number | Tiempo de vigencia del token (por defecto 1h). |
data.tokenType | string | Tipo de token. Siempre Bearer. |
Errores
Los errores se devuelven con el código de estado HTTP correspondiente y la siguiente estructura:
{
"statusCode": 401,
"error": "Unauthorized",
"message": "Invalid credentials."
}
| Código | message | Causa |
|---|---|---|
401 | Missing Authorization header | No se envió el header Authorization. |
401 | Invalid authorization format. | El header no usa el esquema Basic o está mal formado. |
401 | Invalid credentials format. | El contenido Base64 no respeta el formato accessKey:accessSecret. |
401 | Invalid credentials. | El accessKey no existe. |
401 | Credentials are disabled. | Las credenciales fueron deshabilitadas. Contacta a soporte. |
401 | Invalid secret for access key. | El accessSecret no corresponde al accessKey. |
429 | Authentication rate limit exceeded. Try again in N seconds. | Se superó el límite de 10 intentos cada 15 minutos por IP. |