Skip to content

Superadmin Operations Guide

Guía en español: Guía de Superadmin — documentación para usuarios no técnicos.

This guide covers day-to-day superadmin tasks. All operations require the X-Admin-Key header.


All superadmin endpoints are at /api/superadmin/. Include the key in every request:

Terminal window
curl -H "X-Admin-Key: {SUPER_ADMIN_KEY}" https://api.clinicflow.lat/api/superadmin/stats

Also accessible from the dashboard at /superadmin (UI with the same capabilities).


When a potential customer fills the landing page form, a demo request is created with status pending.

View pending requests:

Terminal window
curl -H "X-Admin-Key: {KEY}" \
"https://api.clinicflow.lat/api/superadmin/demo-requests?status=pending"

Accept and generate invite code:

Terminal window
curl -X POST \
-H "X-Admin-Key: {KEY}" \
-H "Content-Type: application/json" \
-d '{"expiresInDays": 7}' \
"https://api.clinicflow.lat/api/superadmin/demo-requests/{id}/accept"

Returns: { "inviteCode": "ABC123DEF456" } — send this to the clinic owner.

Reject a request:

Terminal window
curl -X POST \
-H "X-Admin-Key: {KEY}" \
"https://api.clinicflow.lat/api/superadmin/demo-requests/{id}/reject"

Para crear un código sin una solicitud de demo:

Terminal window
curl -X POST \
-H "X-Admin-Key: {KEY}" \
-H "Content-Type: application/json" \
-d '{
"plan": "pro",
"expiresInDays": 30,
"email": "clinica@email.com",
"notes": "Código para Clínica Ejemplo"
}' \
"https://api.clinicflow.lat/api/superadmin/invite-codes"

Si se incluye email, solo ese correo puede usar el código. Sin email, cualquiera puede usarlo.

Para acceso permanente (Forever Free):

Terminal window
-d '{"plan": "forever_free", "notes": "Cliente beta"}'

Extend a trial or upgrade a plan:

Terminal window
curl -X PATCH \
-H "X-Admin-Key: {KEY}" \
-H "Content-Type: application/json" \
-d '{"plan": "pro", "expiresInDays": 365}' \
"https://api.clinicflow.lat/api/superadmin/clinics/{clinicId}"

Grant Forever Free status:

Terminal window
-d '{"plan": "forever_free"}'

Suspend a clinic:

Terminal window
-d '{"is_active": false}'

Reactivate a clinic:

Terminal window
-d '{"is_active": true}'

Terminal window
curl -X PATCH \
-H "X-Admin-Key: {KEY}" \
"https://api.clinicflow.lat/api/superadmin/invite-codes/{id}/revoke"

Solo funciona si el código no ha sido usado. Los códigos ya usados no se pueden revocar (la clínica ya fue creada).


Terminal window
curl -H "X-Admin-Key: {KEY}" \
"https://api.clinicflow.lat/api/superadmin/stats"

Returns: total clinics, active clinics, pending demo requests, today’s appointments across all clinics, revenue this month, plan distribution.


Monitor background jobs (appointment reminders, daily agendas):

URL: https://api.clinicflow.lat/admin/queues
Auth: HTTP Basic Auth (QUEUES_ADMIN_USER / QUEUES_ADMIN_PASS)

  1. Open Bull Board
  2. Find the failed job in appointment-reminders or daily-agenda queue
  3. Click the job → Retry
Failure Cause Fix
WhatsApp 4xx Token expired Update WhatsApp token in clinic settings
WhatsApp 401 Phone number deregistered Clinic must re-setup WhatsApp
Appointment not found Appointment was deleted Safe to ignore — job will fail permanently
Redis timeout Redis rate limit Check Railway dashboard, upgrade Redis plan if needed

The dashboard has a superadmin section at /superadmin (requires SUPER_ADMIN_KEY to log in). It provides a UI for:

  • Viewing and acting on demo requests
  • Managing invite codes
  • Viewing clinic list and updating plans
  • Global statistics

For complex operations or bulk updates, use the API directly.