Saltar a contenido

Autenticación

Una vez que tiene la API Key, el primer paso es obtener un token JWT.


Endpoint

POST /apientidades/v1/auth
Content-Type: application/json

Sin autenticación

Este es el único endpoint que no requiere token JWT. Se envía la API Key en el body.


Petición

{
  "apiKey": "mi-clave-api-secreta-ejemplo-2026"
}
Campo Tipo Obligatorio Descripción
apiKey string La API Key proporcionada por el Comisionado

Respuesta exitosa (200)

{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "expiresAt": "2026-03-26T15:30:00Z",
  "entityId": 1001,
  "entityName": "AYUNTAMIENTO DE EJEMPLO"
}
Campo Tipo Descripción
token string Token JWT para usar en las peticiones siguientes
expiresAt datetime Fecha/hora de expiración del token (UTC, ISO 8601)
entityId int ID de la entidad autenticada
entityName string Nombre de la entidad

Cómo usar el token

Incluya el token en la cabecera Authorization de todas las peticiones:

Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

Ejemplos

# Guardar API Key en fichero (evitar problemas con caracteres especiales)
echo '{"apiKey":"mi-clave-api-secreta-ejemplo-2026"}' > /tmp/auth.json

# Obtener token
TOKEN=$(curl -s -X POST https://apientidades-pro.transparenciacanarias.org/apientidades/v1/auth \
  -H "Content-Type: application/json" \
  -d @/tmp/auth.json | jq -r '.token')

echo "Token: $TOKEN"

# Usar el token
curl -s https://apientidades-pro.transparenciacanarias.org/apientidades/v1/evaluaciones \
  -H "Authorization: Bearer $TOKEN" | jq .
import requests

API_URL = "https://apientidades-pro.transparenciacanarias.org/apientidades/v1"
API_KEY = "mi-clave-api-secreta-ejemplo-2026"

# Obtener token
resp = requests.post(f"{API_URL}/auth", json={"apiKey": API_KEY})
token = resp.json()["token"]

# Usar el token
headers = {"Authorization": f"Bearer {token}"}
evaluaciones = requests.get(f"{API_URL}/evaluaciones", headers=headers)
print(evaluaciones.json())
using var client = new HttpClient();
var baseUrl = "https://apientidades-pro.transparenciacanarias.org/apientidades/v1";

// Obtener token
var authResp = await client.PostAsJsonAsync($"{baseUrl}/auth",
    new { apiKey = "mi-clave-api-secreta-ejemplo-2026" });
var authData = await authResp.Content.ReadFromJsonAsync<AuthResponse>();

// Usar el token
client.DefaultRequestHeaders.Authorization =
    new AuthenticationHeaderValue("Bearer", authData.Token);
var evaluaciones = await client.GetFromJsonAsync<object>($"{baseUrl}/evaluaciones");
<?php
$apiUrl = "https://apientidades-pro.transparenciacanarias.org/apientidades/v1";
$apiKey = "mi-clave-api-secreta-ejemplo-2026";

// Obtener token
$ch = curl_init("$apiUrl/auth");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(["apiKey" => $apiKey]));
curl_setopt($ch, CURLOPT_HTTPHEADER, ["Content-Type: application/json"]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$token = $result["token"];

// Usar el token
$ch = curl_init("$apiUrl/evaluaciones");
curl_setopt($ch, CURLOPT_HTTPHEADER, ["Authorization: Bearer $token"]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$evaluaciones = json_decode(curl_exec($ch), true);
print_r($evaluaciones);

Errores posibles

Código Causa Solución
400 Campo apiKey vacío o body ausente Envíe un JSON válido con el campo apiKey
401 API Key inválida o entidad desactivada Verifique la clave con el equipo del Comisionado
401 IP no autorizada Su IP no está en la lista de IPs permitidas

Ejemplo de error (401)

{
  "type": "https://api.evaluax.es/errores/no-autorizado",
  "title": "No autorizado",
  "status": 401,
  "detail": "API Key invalida o entidad no autorizada.",
  "instance": "/apientidades/v1/auth",
  "traceId": "a1b2c3d4..."
}

API Key con caracteres especiales

Si su API Key contiene caracteres como &, @, #, %, asegúrese de enviarla dentro de un JSON válido. En curl, es recomendable guardar el body en un fichero (-d @/tmp/auth.json) para evitar problemas de escape en el shell.