Referencia APIAPI Keys
Crear API Key
POST /api/v1/contribuyentes/:contribuyenteId/api-keys — creá un nuevo API key para autenticar llamadas de integración.
POST /api/v1/contribuyentes/:contribuyenteId/api-keys
Crea un nuevo API key para el contribuyente indicado. La clave en texto plano se devuelve una única vez en esta respuesta.
Autenticación
Authorization: Bearer {jwt} — JWT de Keycloak. El usuario autenticado debe ser miembro del contribuyente.
Path parameters
| Parámetro | Tipo | Descripción |
|---|---|---|
contribuyenteId | integer | ID interno del contribuyente |
Request body
{
"nombre": "Integración ERP Producción",
"expiraEn": "2027-01-01T00:00:00"
}| Campo | Tipo | Req. | Descripción |
|---|---|---|---|
nombre | string | Sí | Nombre descriptivo de la clave (máx. 100 caracteres) |
expiraEn | datetime | No | Fecha de expiración ISO 8601. Si es null, la clave no expira |
Respuesta exitosa
Status: 201 Created
{
"data": {
"apiKeyId": 42,
"nombre": "Integración ERP Producción",
"key": "sk_live_8f3a9c2e7b5d4a1f6e0c9b8a7d3f2e1c",
"keyPrefix": "sk_live_8f3a9c2e",
"estaActivo": true,
"ultimoUso": null,
"expiraEn": "2027-01-01T00:00:00",
"fechaCreacion": "2026-04-27T14:32:18"
},
"timestamp": "2026-04-27T14:32:18Z",
"errors": null
}El campo key se muestra únicamente en esta respuesta. No se almacena en texto plano y no puede recuperarse después. Guardalo de forma segura inmediatamente — si lo perdés, vas a tener que rotar la clave.
Todas las claves usan el prefijo sk_live_; el entorno se selecciona desde el panel.
Errores
| Status | Tipo | Descripción |
|---|---|---|
| 401 | — | JWT inválido, expirado o ausente |
| 403 | access-denied | El usuario no es miembro del contribuyente |
| 404 | contribuyente-not-found | Contribuyente no existe |
| 422 | validation-error | nombre ausente o supera los 100 caracteres |
Ejemplos
curl -X POST https://api.sifende.com.py/api/v1/contribuyentes/42/api-keys \
-H "Authorization: Bearer $JWT" \
-H "Content-Type: application/json" \
-d '{
"nombre": "Integración ERP Producción",
"expiraEn": "2027-01-01T00:00:00"
}'