Renovar la clave por defecto y ver actividad
Solo la sesión JWT del dueño puede renovar la clave predeterminada y consultar el detalle de actividad. No se permite con sesión de empleado, cliente ni appKey.
POST /v1/api-keys/default/rotate
Authorization: Bearer TOKEN_DEL_DUENO
Content-Type: application/json
{}Devuelve api_key con el registro actualizado. Cambia únicamente api_key y updated_at: conserva ID, fecha de creación, permisos, límites y consumo. La credencial anterior deja de autenticar nuevas solicitudes. No se crea ni se elimina ninguna clave.
GET /v1/api-keys/API_KEY_ID/activity?month=2026-09&page=1
Authorization: Bearer TOKEN_DEL_DUENODevuelve credits, requests, credit_total y request_total. Cada lista pagina 25 registros, ordenados del más reciente al más antiguo. El mes usa America/Caracas. credits contiene fecha, créditos, origen, descripción y movement_type; requests contiene fecha, request_type, provider, bank_account_id y error_code. El historial corresponde a operaciones bancarias atribuidas a la clave; no es un registro completo de todas las rutas HTTP y no guarda sus URLs. La ausencia de error_code no prueba por sí sola que un pago fue confirmado.
Para el total mensual y el límite usa GET /v1/api-keys/API_KEY_ID/credit-limit?month=2026-09. En Integraciones encontrarás los botones de consumo y límite y de detalle de consumos y peticiones.
Cliente y cuentas bancarias · B2B2B
En Integraciones puedes vincular una clave a un cliente y seleccionar cuentas. Sin selección, accede a todas las cuentas de su alcance; con selección, únicamente a esas cuentas. Siempre se valida el dueño.
Una clave vinculada hereda los permisos fijos y el cupo mensual del cliente. No puede consultar el plan ni el saldo del dueño. Sus cuentas nuevas se vinculan automáticamente al cliente, aunque el request intente indicar otro. Si la clave tiene una selección explícita, el dueño debe añadir las cuentas nuevas a esa selección para acceder a ellas.
POST /auth/api-key
Authorization: Bearer TOKEN_DEL_DUENO
Content-Type: application/json
{"name":"Sucursal Centro","client_owner_id":"CLIENT_ID","user_banks":["BANK_ID"]}Con un token de cliente, omite client_owner_id: el servidor usa el cliente autenticado. Omitir user_banks, enviarlo como null o [] significa todas las cuentas de ese alcance.
PUT /v1/api-keys/API_KEY_ID/scope
Authorization: Bearer TOKEN_DEL_DUENO
Content-Type: application/json
{"client_owner_id":"CLIENT_ID","user_banks":["BANK_ID"]}Esta operación reemplaza el alcance y solo admite la sesión del dueño: no empleados, clientes ni otras API keys. La clave predeterminada no admite cambios. Si cambia el cliente, se reinician los permisos; al desvincularlo quedan desactivados hasta configurarlos. Para desvincular y quitar la selección envía:
{
"client_owner_id": null,
"user_banks": []
}GET /me/usersbank
appKey: CLAVE_DE_LA_INTEGRACIONGET /me/api-keys y GET /api-keys/API_KEY_ID incluyen client_owner_id y user_banks. Un cliente solo puede listar sus claves. Una clave limitada a cuentas no puede emitir otras claves ni usar reportes globales; usa rutas por cuenta como GET /movements/BANK_ID o POST /userbankpayment/BANK_ID/betaserio, siempre que sus permisos lo permitan. Las claves de cliente mantienen los permisos de cuentas y notificaciones, sin heredar verificación de pagos del dueño.
GET /v1/bank-pay-notifications aplica el alcance antes de paginar, incluyendo la app de marca blanca. Las cuentas ajenas o fuera de la selección se rechazan; al editar el alcance, una cuenta que no pertenece al cliente se rechaza con 400.
El consumo se consulta con GET /v1/api-keys/API_KEY_ID/credit-limit?month=2026-09. Para una clave de cliente, el dueño ajusta el cupo compartido en PUT /v1/clients/CLIENT_ID/credit-limit; la clave no puede ampliar su propio cupo.
API Keys & Autenticación
Autentica de forma segura todas tus peticiones HTTP a la API de Pabilo mediante tokens de autorización Bearer.
Tu API Key otorga acceso a debitar créditos y consultar transacciones. Úsala exclusivamente en backend o servidores seguros.
Inclúyela en el header estándar Authorization: Bearer <API_KEY> en cada llamada HTTP.
Puedes generar claves independientes y asignarlas a subclientes específicos si operas una plataforma SaaS o multi-tenant.
1. Obtener tu API Key desde el Panel
El método más rápido para comenzar en desarrollo o producción:
- Inicia sesión en tu cuenta de Pabilo.
- Navega a la sección de Integraciones en el menú lateral de tu dashboard.
- En el apartado de API Keys, pulsa el botón "Generar Nueva API Key".
- Asigna un nombre descriptivo para identificar el entorno (por ejemplo, "Servidor Producción" o "Punto de Venta Sucursal 1").
- Copia la clave generada y almacénala inmediatamente en tus variables de entorno (
.env).
Seguridad y Confidencialidad
Llaves del titular y del cliente
Crear una llave requiere autenticación. El backend obtiene el dueño desde la sesión; nunca acepta crearla para otro usuario. Si el titular indica client_owner_id, ese cliente debe ser suyo. Si inicia sesión un cliente, la llave se vincula automáticamente a él.
Las llaves de cliente tienen acceso fijo a sus cuentas bancarias y notificaciones. No se les pueden editar permisos, aunque el campo permissions esté vacío. Las llaves normales requieren permisos explícitos; el catálogo usa payment_verifications y payment_links, no los nombres antiguos verify_payments y generate_pay_link.
2. Uso de la API Key en tus Peticiones
Todas las solicitudes a la API de Pabilo deben incluir la cabecera HTTP Authorization con el prefijo Bearer.
Formato de Cabeceras HTTP
GET /v1/resource HTTP/1.1
Host: api.pabilo.app
Authorization: Bearer pb_live_a1b2c3d4e5f6...
Content-Type: application/jsonEjemplo en JavaScript (Fetch)
const response = await fetch("https://api.pabilo.app/me", {
method: "GET",
headers: {
"Authorization": "Bearer TU_API_KEY_AQUI",
"Content-Type": "application/json"
}
});
const data = await response.json();
console.log(data);3. Generación Programática de API Keys
Si administras múltiples comercios o eres una plataforma SaaS, puedes crear API Keys de forma automatizada mediante el endpoint dedicado.
https://api.pabilo.app/auth/api-keyParámetros del Body (JSON)
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
| name | string | Sí | Nombre descriptivo o etiqueta para la API Key (ej. "Checkout Tienda Online"). |
| user_id | string | Sí | ID del usuario dueño de la clave. Puedes obtenerlo en /docs/user. |
| client_owner_id | string | Opcional | ID del cliente/subcuenta al que se vinculará la clave para entornos multi-tenant (ver Clientes API). |
Petición de Ejemplo (cURL)
curl -X POST https://api.pabilo.app/auth/api-key \
-H "Authorization: Bearer TU_API_KEY_PRINCIPAL" \
-H "Content-Type: application/json" \
-d '{
"name": "API Key Tienda Principal",
"user_id": "685725869e6febc736848bf1",
"client_owner_id": "685725869e6febc736848bc9"
}'Respuesta Exitosa (200 OK)
{
"message": "Api key created successfully",
"api_key": {
"id": "68b1a2c3d4e5f6a7b8c9d0e1",
"name": "API Key Tienda Principal",
"api_key": "b3f1c2d4-5678-90ab-cdef-1234567890ab",
"user_id": "685725869e6febc736848bf1",
"default": false,
"is_active": true,
"client_owner_id": "685725869e6febc736848bc9"
}
}Consumo y límites mensuales
En Integraciones → Consumo y límite puedes consultar los créditos consumidos por cada clave y definir su cupo mensual. Los créditos miden el uso de Pabilo; los montos de pagos verificados se muestran por moneda en Estadísticas.
Las claves de un cliente heredan su límite: todas comparten el cupo configurado en Clientes → Créditos. No pueden sobrescribirlo individualmente. Una clave independiente mantiene su propio límite; si opera sobre una cuenta de cliente también se comprueba el cupo del cliente.
El período es el mes calendario de Caracas. null significa sin límite y 0 bloquea nuevos cargos positivos. Cambiar el límite conserva el consumo acumulado.
Consultar el cupo
GET /v1/api-keys/{id}/credit-limit?month=2026-09
Authorization: Bearer TU_TOKEN{
"month": "2026-09",
"inherited": false,
"monthly_credit_limit": 100,
"consumed": 24,
"operations": 12,
"quota_used": 24,
"remaining": 76
}consumed es el consumo de esa clave. quota_used incluye las reservas del cupo y, para claves de cliente, el consumo compartido. El límite mostrado siempre es el vigente.
Cambiar el límite de una clave independiente
PUT /v1/api-keys/{id}/credit-limit
Authorization: Bearer TU_TOKEN
Content-Type: application/json
{"monthly_credit_limit": 100}Requiere ser propietario de la clave y permiso de escritura en Integraciones. Al alcanzar el cupo, el backend responde 403 API_KEY_MONTHLY_CREDIT_LIMIT_EXCEEDED; para el cupo compartido, CLIENT_MONTHLY_CREDIT_LIMIT_EXCEEDED.
4. Errores de Autenticación Frecuentes
- 401 UnauthorizedLa cabecera
Authorizationno fue enviada, no tiene el formatoBearer <TOKEN>o la API Key suministrada no existe o ha sido revocada. - 403 ForbiddenLa API Key es válida, pero tu cuenta se encuentra inactiva o la clave no tiene autorización para acceder al recurso solicitado.