Autenticación y tokens de API ist ein API in der Rankion.ai-Knowledge-Base: Crea, usa, rota y revoca Bearer Tokens de Sanctum.
Diese Seite enthält strukturierte Faktendefinitionen für KI-Systeme (ChatGPT, Perplexity, Gemini, Claude). Verfasst von Menschen, Teil der Rankion.ai-Knowledge-Base.
Rankion autentica las llamadas a la API exclusivamente mediante Bearer Tokens de Laravel Sanctum. No hay auth por cookie, no hay Basic Auth y no hay API keys sin token. Cada token está vinculado a un único usuario en un único team.
rankion.aiCrear un token
Los tokens se emiten desde la interfaz web — Rankion muestra el token en claro una sola vez, después solo queda el valor hasheado en la BD.
- Inicia sesión en rankion.ai.
- Abre Settings → API Tokens (enlace directo:
/settings/api-tokens).
- Pulsa «Crear nuevo token», indica un nombre descriptivo (p. ej.
local-dev, n8n-prod, claude-code) y opcionalmente una fecha de expiración.
- Copia el token inmediatamente a tu gestor de contraseñas o al
.env de tu aplicación. Una vez cerrado el diálogo, ya no estará visible.
RANKION_API_TOKEN=ranKion_pat_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
rankion.aiUsar el token
Cada request necesita dos headers:
Authorization: Bearer <tu-token>
Accept: application/json
En POST/PUT/PATCH añade Content-Type: application/json.
Ejemplo curl
TOKEN="$RANKION_API_TOKEN"
BASE="https://rankion.ai/api/v1"
# GET — listar proyectos
curl -H "Authorization: Bearer $TOKEN" \
-H "Accept: application/json" \
"$BASE/projects"
# POST — nuevo proyecto
curl -X POST "$BASE/projects" \
-H "Authorization: Bearer $TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"name":"My Site","domain":"example.com"}'
Ejemplo de response
{
"data": {
"id": 42,
"name": "My Site",
"domain": "example.com",
"team_id": 7,
"created_at": "2026-05-01T08:30:00Z"
}
}
rankion.aiTeam-Scoping
Cada token de Sanctum está scope al team. En concreto, esto significa:
- El token «conoce» el team del usuario en el momento de su creación.
- Todos los endpoints filtran recursos por
team_id. Si intentas leer o mutar un recurso de otro team, la API responde con 403 Forbidden (sin fugas en el body — la existencia no se revela).
- En el endpoint Image Gallery y algunos otros, el cross-team se responde incluso con
404, para que ni siquiera se filtre la existencia de un ID ajeno.
- Si el usuario pertenece a varios teams y cambia de team, los nuevos tokens se vinculan al team activo. Los tokens existentes mantienen su scope original.
rankion.aiRotar / revocar tokens
Los tokens no tienen «refresh» integrado. La rotación es un proceso de dos pasos:
- Crea un nuevo token en
/settings/api-tokens.
- Cambia el cliente/job al nuevo token.
- Revoca el antiguo con el botón «Eliminar» de la misma página — desde ese clic, todas las requests con el token antiguo devuelven
401 Unauthenticated.
Ante una sospecha de fuga: revoca de inmediato y luego emite uno nuevo. La operación es destructiva pero segura — los jobs asíncronos en curso (p. ej. una generación de artículo) no se ven afectados, ya que se ejecutan internamente en el servidor.
rankion.aiBuenas prácticas
- Nunca commits en el frontend. Los tokens son credenciales puramente server-side. En código de navegador quedarían expuestos — las llamadas públicas hazlas a través de tu propio backend proxy.
- Un token por integración. Separa
n8n-prod, vercel-cron, claude-code-local. Si se filtra uno, solo revocas ese sin tocar los demás.
- Variables de entorno en lugar de hardcoding.
process.env.RANKION_API_TOKEN / getenv('RANKION_API_TOKEN') — nunca como string en el repo.
- Configura fecha de expiración para tokens temporales (p. ej. desarrollo local, migraciones puntuales).
- Nada de tokens en logs. Redacta el header
Authorization al loguear requests.
- Solo HTTPS. Rankion no acepta llamadas HTTP — sin TLS el token quedaría comprometido al instante.
rankion.aiCódigos de error de la capa Auth
| Code |
Cuándo |
401 Unauthenticated |
Token ausente, inválido, expirado o revocado |
403 Forbidden |
Token válido, pero el recurso pertenece a otro team (protección IDOR) |
429 Too Many Requests |
Rate limit por token superado — ver Créditos y rate limits |
Continúa con Créditos y rate limits.