Autenticación
Una vez que tiene la API Key, el primer paso es obtener un token JWT.
Endpoint
Sin autenticación
Este es el único endpoint que no requiere token JWT. Se envía la API Key en el body.
Petición
| 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:
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.