Skip to content

Autenticación ​

La API de Zenci se usa con una clave de API que emites desde el panel. La clave identifica al comercio y define qué puede hacer: leer el catálogo, ver existencias, registrar y consultar ventas, y administrar clientes. No necesitas enviar ningún otro dato para decir de qué comercio se trata.

Antes de empezar ​

Para emitir claves necesitas un usuario con permiso sobre Integraciones.

Emitir una clave ​

Las claves se administran en Administración → Integraciones, en la sección Claves de API.

Página Integraciones sin claves de API ni avisos configuradosPágina Integraciones sin claves de API ni avisos configurados
Administración → Integraciones, antes de emitir la primera clave.
  1. Haz clic en Emitir clave.
  2. Escribe un Nombre para reconocerla después, por ejemplo «Tienda en línea».
  3. Marca en Qué puede hacer esta clave solo los permisos que tu integración necesita (ver la tabla de abajo).
  4. Elige la Sucursal de las ventas: la sucursal donde se registran las ventas de esta clave y de cuya bodega salen las existencias. Si eliges La que indique cada pedido, cada venta tiene que enviar su branchId.
  5. En Precios, deja Los del catálogo o elige una lista de precios. Con una lista, la tienda ve y vende con esos precios.
  6. Si quieres, pon una fecha en Vence el (opcional). La clave deja de funcionar al terminar ese día. Sin fecha, sirve hasta que la revoques.
  7. Haz clic en Crear clave.
Formulario Nueva clave de API con nombre, los siete permisos, sucursal de las ventas, precios y vencimientoFormulario Nueva clave de API con nombre, los siete permisos, sucursal de las ventas, precios y vencimiento
Nueva clave de API: permisos, sucursal de las ventas, precios y vencimiento.

Al crearla, Zenci muestra la clave completa una sola vez. Cópiala y guárdala en un lugar seguro antes de cerrar la ventana: después no se puede volver a consultar. Si la pierdes, revócala y emite una nueva.

Ventana Tu clave de API con la clave zpk_ y el botón CopiarVentana Tu clave de API con la clave zpk_ y el botón Copiar
La clave se muestra una sola vez. Cópiala antes de cerrar.

Las claves empiezan con zpk_ seguido de 40 letras y números. En la lista ves su nombre, el inicio de la clave, sus permisos, su estado (Activa, Vencida o Revocada), el último uso y la fecha de creación.

Lista de claves de API con su nombre, permisos, estado, último uso y el botón RevocarLista de claves de API con su nombre, permisos, estado, último uso y el botón Revocar
Claves de API: permisos, estado y último uso de cada una.

Permisos ​

PermisoEn el panelQué permite
catalog:readVer el catálogoGET /products, GET /products/{id}, GET /categories y GET /brands
stock:readVer existenciasGET /stock, GET /branches y GET /warehouses
orders:writeCrear pedidosPOST /orders, GET /payment-methods, GET /branches y GET /warehouses
orders:set-priceFijar el precio de ventaEnviar price en cada línea de POST /orders en lugar de usar el precio del POS
orders:readVer pedidosGET /orders y GET /orders/{id}, con la factura y su PDF
customers:readVer clientesGET /customers y GET /customers/{id}
customers:writeCrear y modificar clientesPOST /customers, PATCH /customers/{id} y las compañías adicionales. No permite eliminar clientes

orders:set-price no abre ninguna ruta por sí solo y necesita orders:write: el panel no deja marcarlo sin Crear pedidos. Sin él, el precio de cada venta siempre lo decide Zenci. GET /me no pide ningún permiso.

Si llamas a una ruta sin el permiso que pide, la respuesta es 403 forbidden con el mensaje Insufficient permissions.

Los permisos, la sucursal, la lista de precios y el vencimiento se fijan al emitir la clave y no se editan después. Para cambiarlos, emite una clave nueva y revoca la anterior.

Enviar la clave ​

Envía la clave en uno de estos dos encabezados:

http
Authorization: Bearer zpk_…
http
X-API-Key: zpk_…

Guárdala en una variable de entorno de tu servidor, nunca en el código del navegador ni en la app: quien la tenga puede actuar en nombre del comercio.

bash
export ZENCI_API_KEY="zpk_…"

Comprobar la clave: GET /me ​

Devuelve la configuración de la clave con la que llamas. Es una buena primera llamada para confirmar que todo está bien.

bash
curl https://api.zenci.app/public/v1/me \
  -H "Authorization: Bearer $ZENCI_API_KEY"
json
{
  "scopes": ["catalog:read", "stock:read", "orders:write"],
  "defaultBranchId": "b7n2q8w4e1r9t3y6u0i5o2p7",
  "priceListId": "l4k8j2h6g0f3d7s1a5p9o3i7",
  "priceList": { "id": "l4k8j2h6g0f3d7s1a5p9o3i7", "name": "Mayoreo" }
}
CampoDescripción
scopesPermisos de la clave
defaultBranchIdSucursal de las ventas, o null si cada venta debe enviar branchId
priceListId, priceListLa lista de precios que de verdad se aplica, o null si la clave usa los precios del catálogo. También es null si la lista de la clave se eliminó o se desactivó: en ese caso se vende a precio de catálogo

Hasta el 6 de octubre de 2026, GET /me traía además affectsInventory, que siempre valía false y no hacía nada. Ya no aparece: si tu integración lo leía, quítalo.

Errores de autenticación ​

HTTPcodeCausa
401unauthorizedFalta la clave (An API key is required), o es desconocida, está revocada o venció (Invalid or revoked API key)
403forbiddenLa suscripción del comercio está restringida. El acceso vuelve cuando se regulariza el pago
404not_foundEl comercio no tiene activa la API para integraciones
429rate_limitedMás de 10 intentos con una clave inválida en un minuto desde la misma IP. Espera 60 segundos

Una clave desconocida, una revocada y una vencida responden igual a propósito: así nadie puede averiguar cuáles existen.

Revocar una clave ​

En la lista de claves, haz clic en Revocar. La clave deja de funcionar de inmediato y no se puede reactivar. Revoca cualquier clave que haya quedado expuesta y emite una por integración, para poder cortar una sin afectar a las demás.

Siguientes pasos ​

  • — Formato de los datos, paginación, límites y errores.
  • — Lee el catálogo.
  • — Registra tu primera venta.

Documentación oficial de Zelta