⌘K

API de Wizerp

API de servidor a servidor de Wizerp. Todo va en JSON y todo está acotado a tu empresa.

La empresa sale de tu llave: no es un parámetro, no se puede pasar y no hay forma de leer datos de otra.

Esta API no se llama desde el navegador. Una petición con la cabecera Origin, con ?sid= o con x-csrf-mexerp se rechaza con 400.

Dirección base https://api.wizerp.com/api/v1

Autenticación

Van las dos cabeceras, en toda llamada.

CabeceraEjemploQué es
Authorization Bearer wzk_live_… El secreto completo de la llave.
X-Wizerp-Key-Id 208_a3f91c7d El identificador público. Van las dos: sin ésta la petición falla con 401 aunque el secreto sea correcto.

Topes y reintentos

Los topes son por empresa, no por llave: tener tres llaves no te da el triple. Al pasarte recibes 429 con la cabecera Retry-After — espera esos segundos y reintenta, no de inmediato. Si tu empresa tiene demasiadas peticiones en curso a la vez recibes 503 ocupado, también con Retry-After.

Si vas a consultar seguido, no preguntes en bucle: pide que te avisemos. Hablar con soporte sale más barato que chocar contra el tope todos los días.

Errores

Todos tienen la misma forma. El campo peticion es lo que hay que pegar en un correo a soporte: con eso lo encontramos en el registro.

HTTPCuándo
400 Petición mal formada: filtro no permitido, filtro vacío, cursor o límite inválidos, o una cabecera de navegador
401 La llave no es válida, está revocada, venció, o la empresa dejó de ser PRO
403 La llave no tiene el permiso que pide esta operación
404 La ruta no existe, o tu empresa no tiene la API habilitada
405 Método equivocado para esta ruta. La respuesta trae la cabecera Allow
409 Misma Idempotency-Key con datos distintos
413 El cuerpo pasa del máximo
422 Un dato no es válido para tu empresa
429 Pasaste un tope. La respuesta trae Retry-After
500 Falló de nuestro lado. Reintenta y reporta el valor de peticion
503 Tu empresa tiene demasiadas peticiones en curso, o la búsqueda no está disponible. Trae Retry-After
Servicio

Comprobar que la API responde

GET https://api.wizerp.com/api/v1/health

No necesita llave y no toca la base de datos: dice que el proceso está vivo y sirviendo, no que la base conteste.

Respuestas

404 La ruta no existe, o tu empresa no tiene la API habilitada
405 Método equivocado para esta ruta. La respuesta trae la cabecera Allow
500 Falló de nuestro lado. Reintenta y reporta el valor de peticion
Prospectos

Registrar un prospecto

POST https://api.wizerp.com/api/v1/leads

Crea una ficha de prospecto en el CRM. Necesita nombre o empresa, y correo o teléfono. Los datos van en el cuerpo JSON, nunca en la URL.

Manda la cabecera Idempotency-Key para poder reintentar sin duplicar: con la misma clave y los mismos datos se devuelve la respuesta guardada, byte por byte.

Requiere el permiso leads:write en la llave · contrato del 2026-10-09

Cuerpo JSON

nombre texto

Máximo 100. Se necesita éste o «empresa».

empresa texto

Máximo 200.

correo texto

Máximo 50. Se necesita éste o «telefono».

telefono texto

Máximo 30.

mensaje texto

Máximo 2000.

vendedor entero

Clave del vendedor al que se asigna.

Respuestas

400 Petición mal formada: filtro no permitido, filtro vacío, cursor o límite inválidos, o una cabecera de navegador
401 La llave no es válida, está revocada, venció, o la empresa dejó de ser PRO
403 La llave no tiene el permiso que pide esta operación
404 La ruta no existe, o tu empresa no tiene la API habilitada
409 Misma Idempotency-Key con datos distintos
413 El cuerpo pasa del máximo
422 Un dato no es válido para tu empresa
429 Pasaste un tope. La respuesta trae Retry-After
500 Falló de nuestro lado. Reintenta y reporta el valor de peticion
503 Tu empresa tiene demasiadas peticiones en curso, o la búsqueda no está disponible. Trae Retry-After
Clientes

Lista de clientes

GET https://api.wizerp.com/api/v1/clientes

Devuelve los registros de tu empresa, paginados por cursor.

Las consultas devuelven páginas, no listas completas. Pide la siguiente pasando en cursor el valor que vino en siguiente, hasta que hay_mas sea false.

No hay conteo total: contar millones de filas cuesta lo mismo que traerlas.

Sólo se aceptan los filtros documentados. Cualquier otro parámetro contesta 400 filtro_no_permitido; no se ignora en silencio, porque un filtro ignorado hace creer que filtraste.

El campo correo puede traer varias direcciones separadas por coma y recortadas: el filtro correo compara el campo completo, así que no encuentra a un cliente por su segunda dirección.

Requiere el permiso clientes:read en la llave · contrato del 2026-10-09

Peticiones recientes · de esta consola, solo en esta pestaña
HoraEstadoDuraciónAcciones
Prueba esta consulta para ver aquí tu historial.

Query Params

cursor texto

La clave que vino en «siguiente» de la página anterior. Sin él, empieza por el principio.

limite entero

Registros por página. Omisión 100, máximo 500.

clave entero

Número entero.

folio texto

Coincidencia exacta. No admite comodines.

correo texto

Correo exacto. Se compara normalizado: no distingue mayúsculas ni espacios de sobra.

telefono texto

Se comparan los últimos 10 caracteres tras quitar espacios, guiones, paréntesis y el signo de más. Manda el número como lo tengas.

movil texto

Se comparan los últimos 10 caracteres tras quitar espacios, guiones, paréntesis y el signo de más. Manda el número como lo tengas.

rfc texto

Coincidencia exacta. No admite comodines.

prospecto booleano

true o false.

publico booleano

true o false.

id_mercadolibre texto

Coincidencia exacta. No admite comodines.

id_shopify texto

Coincidencia exacta. No admite comodines.

id_woocommerce texto

Coincidencia exacta. No admite comodines.

id_tiendanube texto

Coincidencia exacta. No admite comodines.

id_walmart texto

Coincidencia exacta. No admite comodines.

uso_cfdi texto

La clave del SAT, por ejemplo G03. No el identificador interno de Wizerp.

modificado_desde texto

Fecha ISO 8601 en UTC, por ejemplo 2026-10-01T00:00:00Z. Devuelve lo que sea igual o posterior.

proximo_contacto_desde texto

Fecha ISO 8601 en UTC, por ejemplo 2026-10-01T00:00:00Z. Devuelve lo que sea igual o posterior.

proximo_contacto_hasta texto

Fecha ISO 8601 en UTC. Devuelve lo que sea igual o anterior.

Respuestas

400 Petición mal formada: filtro no permitido, filtro vacío, cursor o límite inválidos, o una cabecera de navegador
401 La llave no es válida, está revocada, venció, o la empresa dejó de ser PRO
403 La llave no tiene el permiso que pide esta operación
404 La ruta no existe, o tu empresa no tiene la API habilitada
429 Pasaste un tope. La respuesta trae Retry-After
500 Falló de nuestro lado. Reintenta y reporta el valor de peticion
503 Tu empresa tiene demasiadas peticiones en curso, o la búsqueda no está disponible. Trae Retry-After
Productos

Lista de productos

GET https://api.wizerp.com/api/v1/productos

Devuelve los registros de tu empresa, paginados por cursor.

Las consultas devuelven páginas, no listas completas. Pide la siguiente pasando en cursor el valor que vino en siguiente, hasta que hay_mas sea false.

No hay conteo total: contar millones de filas cuesta lo mismo que traerlas.

Sólo se aceptan los filtros documentados. Cualquier otro parámetro contesta 400 filtro_no_permitido; no se ignora en silencio, porque un filtro ignorado hace creer que filtraste.

Los productos eliminados no se devuelven salvo que pidas estatus=eliminado.

Requiere el permiso productos:read en la llave · contrato del 2026-10-09

Peticiones recientes · de esta consola, solo en esta pestaña
HoraEstadoDuraciónAcciones
Prueba esta consulta para ver aquí tu historial.

Query Params

cursor texto

La clave que vino en «siguiente» de la página anterior. Sin él, empieza por el principio.

limite entero

Registros por página. Omisión 100, máximo 500.

clave entero

Número entero.

sku texto

Coincidencia exacta. No admite comodines.

folio entero

Número entero.

estatus texto

Uno de los valores de la lista.

Valores: activo inactivo eliminado

tipo texto

Uno de los valores de la lista.

Valores: normal virtual_con_precio virtual_sin_precio gasto

subtipo texto

Uno de los valores de la lista.

Valores: terminado componente materia_prima

kit booleano

true o false.

codigo_sat texto

Coincidencia exacta. No admite comodines.

id_shopify texto

Coincidencia exacta. No admite comodines.

marca texto

El nombre tal como aparece en el catálogo, no su identificador.

categoria texto

El nombre tal como aparece en el catálogo, no su identificador.

sku_padre texto

El código del producto. Si el SKU corresponde a varios productos, se devuelven las filas de todos.

buscar texto

Búsqueda de texto. Mínimo 3 caracteres en al menos una palabra; las más cortas se descartan. No admite comodines.

modificado_desde texto

Fecha ISO 8601 en UTC, por ejemplo 2026-10-01T00:00:00Z. Devuelve lo que sea igual o posterior.

Respuestas

400 Petición mal formada: filtro no permitido, filtro vacío, cursor o límite inválidos, o una cabecera de navegador
401 La llave no es válida, está revocada, venció, o la empresa dejó de ser PRO
403 La llave no tiene el permiso que pide esta operación
404 La ruta no existe, o tu empresa no tiene la API habilitada
429 Pasaste un tope. La respuesta trae Retry-After
500 Falló de nuestro lado. Reintenta y reporta el valor de peticion
503 Tu empresa tiene demasiadas peticiones en curso, o la búsqueda no está disponible. Trae Retry-After
Proveedores

Lista de proveedores

GET https://api.wizerp.com/api/v1/proveedores

Devuelve los registros de tu empresa, paginados por cursor.

Las consultas devuelven páginas, no listas completas. Pide la siguiente pasando en cursor el valor que vino en siguiente, hasta que hay_mas sea false.

No hay conteo total: contar millones de filas cuesta lo mismo que traerlas.

Sólo se aceptan los filtros documentados. Cualquier otro parámetro contesta 400 filtro_no_permitido; no se ignora en silencio, porque un filtro ignorado hace creer que filtraste.

Los registros eliminados no se devuelven salvo que pidas estatus=eliminado.

Requiere el permiso proveedores:read en la llave · contrato del 2026-10-09

Peticiones recientes · de esta consola, solo en esta pestaña
HoraEstadoDuraciónAcciones
Prueba esta consulta para ver aquí tu historial.

Query Params

cursor texto

La clave que vino en «siguiente» de la página anterior. Sin él, empieza por el principio.

limite entero

Registros por página. Omisión 100, máximo 500.

clave entero

Número entero.

folio texto

Coincidencia exacta. No admite comodines.

estatus texto

Uno de los valores de la lista.

Valores: activo inactivo eliminado

rfc texto

Coincidencia exacta. No admite comodines.

nombre texto

Búsqueda de texto. Mínimo 3 caracteres en al menos una palabra; las más cortas se descartan. No admite comodines.

Respuestas

400 Petición mal formada: filtro no permitido, filtro vacío, cursor o límite inválidos, o una cabecera de navegador
401 La llave no es válida, está revocada, venció, o la empresa dejó de ser PRO
403 La llave no tiene el permiso que pide esta operación
404 La ruta no existe, o tu empresa no tiene la API habilitada
429 Pasaste un tope. La respuesta trae Retry-After
500 Falló de nuestro lado. Reintenta y reporta el valor de peticion
503 Tu empresa tiene demasiadas peticiones en curso, o la búsqueda no está disponible. Trae Retry-After
Existencias

Lista de existencias

GET https://api.wizerp.com/api/v1/inventario

Devuelve los registros de tu empresa, paginados por cursor.

Las consultas devuelven páginas, no listas completas. Pide la siguiente pasando en cursor el valor que vino en siguiente, hasta que hay_mas sea false.

No hay conteo total: contar millones de filas cuesta lo mismo que traerlas.

Sólo se aceptan los filtros documentados. Cualquier otro parámetro contesta 400 filtro_no_permitido; no se ignora en silencio, porque un filtro ignorado hace creer que filtraste.

Puede devolver existencias de productos que ya no están activos: una existencia es un hecho sobre el almacén, no sobre el ciclo de vida del producto. Si sincronizas catálogo, cruza contra GET /productos.

El campo apartado viene con signo y el ERP calcula el disponible como existencia menos el valor absoluto de apartado, con piso en minimo. No restes de frente o puedes ofrecer lo que Wizerp no vende.

Requiere el permiso inventario:read en la llave · contrato del 2026-10-09

Peticiones recientes · de esta consola, solo en esta pestaña
HoraEstadoDuraciónAcciones
Prueba esta consulta para ver aquí tu historial.

Query Params

cursor texto

La clave que vino en «siguiente» de la página anterior. Sin él, empieza por el principio.

limite entero

Registros por página. Omisión 100, máximo 500.

clave entero

Número entero.

sku texto

El código del producto. Si el SKU corresponde a varios productos, se devuelven las filas de todos.

almacen texto

El código de tres caracteres del almacén. Consúltalos en GET /almacenes.

sucursal entero

Número entero.

modificado_desde texto

Fecha ISO 8601 en UTC, por ejemplo 2026-10-01T00:00:00Z. Devuelve lo que sea igual o posterior.

Respuestas

400 Petición mal formada: filtro no permitido, filtro vacío, cursor o límite inválidos, o una cabecera de navegador
401 La llave no es válida, está revocada, venció, o la empresa dejó de ser PRO
403 La llave no tiene el permiso que pide esta operación
404 La ruta no existe, o tu empresa no tiene la API habilitada
429 Pasaste un tope. La respuesta trae Retry-After
500 Falló de nuestro lado. Reintenta y reporta el valor de peticion
503 Tu empresa tiene demasiadas peticiones en curso, o la búsqueda no está disponible. Trae Retry-After
Almacenes

Lista de almacenes

GET https://api.wizerp.com/api/v1/almacenes

Devuelve los registros de tu empresa, paginados por cursor.

Las consultas devuelven páginas, no listas completas. Pide la siguiente pasando en cursor el valor que vino en siguiente, hasta que hay_mas sea false.

No hay conteo total: contar millones de filas cuesta lo mismo que traerlas.

Sólo se aceptan los filtros documentados. Cualquier otro parámetro contesta 400 filtro_no_permitido; no se ignora en silencio, porque un filtro ignorado hace creer que filtraste.

Los registros eliminados no se devuelven salvo que pidas estatus=eliminado.

Requiere el permiso inventario:read en la llave · contrato del 2026-10-09

Peticiones recientes · de esta consola, solo en esta pestaña
HoraEstadoDuraciónAcciones
Prueba esta consulta para ver aquí tu historial.

Query Params

cursor texto

La clave que vino en «siguiente» de la página anterior. Sin él, empieza por el principio.

limite entero

Registros por página. Omisión 100, máximo 500.

clave entero

Número entero.

codigo texto

Coincidencia exacta. No admite comodines.

sucursal entero

Número entero.

principal booleano

true o false.

estatus texto

Uno de los valores de la lista.

Valores: activo inactivo eliminado

Respuestas

400 Petición mal formada: filtro no permitido, filtro vacío, cursor o límite inválidos, o una cabecera de navegador
401 La llave no es válida, está revocada, venció, o la empresa dejó de ser PRO
403 La llave no tiene el permiso que pide esta operación
404 La ruta no existe, o tu empresa no tiene la API habilitada
429 Pasaste un tope. La respuesta trae Retry-After
500 Falló de nuestro lado. Reintenta y reporta el valor de peticion
503 Tu empresa tiene demasiadas peticiones en curso, o la búsqueda no está disponible. Trae Retry-After
Ventas

Lista de ventas

GET https://api.wizerp.com/api/v1/ventas

Devuelve los registros de tu empresa, paginados por cursor.

Las consultas devuelven páginas, no listas completas. Pide la siguiente pasando en cursor el valor que vino en siguiente, hasta que hay_mas sea false.

No hay conteo total: contar millones de filas cuesta lo mismo que traerlas.

Sólo se aceptan los filtros documentados. Cualquier otro parámetro contesta 400 filtro_no_permitido; no se ignora en silencio, porque un filtro ignorado hace creer que filtraste.

Aquí viven TODOS los documentos de venta: remisiones, facturas, cotizaciones, pedidos y anticipos. Sin el filtro tipo se devuelven las ventas (tipo=venta; remision es sinónimo). Para los demás pide ese tipo: cada tipo se pagina por separado, no hay un listado de todos a la vez.

En pedidos, surtido_estatus y monto_surtido traen el avance del surtido; en los demás tipos vienen null. No hay filtro por surtido.

Los documentos cancelados no salen salvo que pidas cancelada=true.

El filtro folio busca en el folio del tipo consultado: el mismo número puede existir como venta y como factura.

Si filtras por fechas, el rango máximo es de 92 días: para un periodo mayor, pide por ventanas y recorre cada una con cursor.

Los renglones de un documento se consultan en GET /ventas-renglones con la clave que devuelve esta lista.

Requiere el permiso ventas:read en la llave · contrato del 2026-10-09

Peticiones recientes · de esta consola, solo en esta pestaña
HoraEstadoDuraciónAcciones
Prueba esta consulta para ver aquí tu historial.

Query Params

cursor texto

La clave que vino en «siguiente» de la página anterior. Sin él, empieza por el principio.

limite entero

Registros por página. Omisión 100, máximo 500.

clave entero

Número entero.

tipo texto

Uno de los valores de la lista.

Valores: remision venta factura cotizacion pedido anticipo

folio entero

El número de folio del documento. El folio se busca según el «tipo» consultado: el mismo número puede existir como venta y como factura.

cliente entero

Número entero.

cancelada booleano

true devuelve solo documentos cancelados; false, solo vigentes. Sin este filtro, los cancelados no salen.

fecha_desde texto

Fecha ISO 8601 en UTC, por ejemplo 2026-10-01T00:00:00Z. Devuelve lo que sea igual o posterior.

fecha_hasta texto

Fecha ISO 8601 en UTC. Devuelve lo que sea igual o anterior.

sucursal entero

Número entero.

sku texto

El código del producto. Devuelve los documentos que incluyen ese SKU en sus renglones. Si el SKU corresponde a varios productos, cuentan todos.

Respuestas

400 Petición mal formada: filtro no permitido, filtro vacío, cursor o límite inválidos, o una cabecera de navegador
401 La llave no es válida, está revocada, venció, o la empresa dejó de ser PRO
403 La llave no tiene el permiso que pide esta operación
404 La ruta no existe, o tu empresa no tiene la API habilitada
429 Pasaste un tope. La respuesta trae Retry-After
500 Falló de nuestro lado. Reintenta y reporta el valor de peticion
503 Tu empresa tiene demasiadas peticiones en curso, o la búsqueda no está disponible. Trae Retry-After
Renglones de venta

Renglones de una venta

GET https://api.wizerp.com/api/v1/ventas-renglones

Devuelve los registros de tu empresa, paginados por cursor.

Las consultas devuelven páginas, no listas completas. Pide la siguiente pasando en cursor el valor que vino en siguiente, hasta que hay_mas sea false.

No hay conteo total: contar millones de filas cuesta lo mismo que traerlas.

Sólo se aceptan los filtros documentados. Cualquier otro parámetro contesta 400 filtro_no_permitido; no se ignora en silencio, porque un filtro ignorado hace creer que filtraste.

El filtro venta es obligatorio: esta consulta devuelve los renglones de UN documento, no un listado general. La clave de la venta la da GET /ventas.

El campo sku puede venir null si el producto fue eliminado por completo del catálogo.

En renglones de un pedido, cantidad es lo pedido y cantidad_surtida lo ya surtido; en los demás documentos cantidad_surtida trae un eco de la cantidad o cero y no significa nada.

Requiere el permiso ventas:read en la llave · contrato del 2026-10-09

Peticiones recientes · de esta consola, solo en esta pestaña
HoraEstadoDuraciónAcciones
Prueba esta consulta para ver aquí tu historial.

Query Params

cursor texto

La clave que vino en «siguiente» de la página anterior. Sin él, empieza por el principio.

limite entero

Registros por página. Omisión 100, máximo 500.

clave entero obligatorio

Número entero.

venta entero obligatorio

Número entero.

sku texto

El código del producto. Si el SKU corresponde a varios productos, se devuelven las filas de todos.

Respuestas

400 Petición mal formada: filtro no permitido, filtro vacío, cursor o límite inválidos, o una cabecera de navegador
401 La llave no es válida, está revocada, venció, o la empresa dejó de ser PRO
403 La llave no tiene el permiso que pide esta operación
404 La ruta no existe, o tu empresa no tiene la API habilitada
429 Pasaste un tope. La respuesta trae Retry-After
500 Falló de nuestro lado. Reintenta y reporta el valor de peticion
503 Tu empresa tiene demasiadas peticiones en curso, o la búsqueda no está disponible. Trae Retry-After
Facturas (CFDI)

Lista de facturas timbradas

GET https://api.wizerp.com/api/v1/facturas

Devuelve los registros de tu empresa, paginados por cursor.

Las consultas devuelven páginas, no listas completas. Pide la siguiente pasando en cursor el valor que vino en siguiente, hasta que hay_mas sea false.

No hay conteo total: contar millones de filas cuesta lo mismo que traerlas.

Sólo se aceptan los filtros documentados. Cualquier otro parámetro contesta 400 filtro_no_permitido; no se ignora en silencio, porque un filtro ignorado hace creer que filtraste.

A diferencia de /ventas, esta lista trae TODOS los estatus —también canceladas y con error— porque es el registro de timbrado y su historia completa es el punto.

Este es el registro de timbrado: aquí no hay importes. Los montos del documento están en GET /ventas (el campo venta de esta lista es la clave para consultarlo con tipo=factura).

Si filtras por fechas, el rango máximo es de 92 días: para un periodo mayor, pide por ventanas y recorre cada una con cursor.

Requiere el permiso facturas:read en la llave · contrato del 2026-10-09

Peticiones recientes · de esta consola, solo en esta pestaña
HoraEstadoDuraciónAcciones
Prueba esta consulta para ver aquí tu historial.

Query Params

cursor texto

La clave que vino en «siguiente» de la página anterior. Sin él, empieza por el principio.

limite entero

Registros por página. Omisión 100, máximo 500.

clave entero

Número entero.

uuid texto

El folio fiscal (UUID) completo, 36 caracteres. No distingue mayúsculas.

venta entero

Número entero.

tipo texto

Uno de los valores de la lista.

Valores: factura nota_credito pago traslado embarque externa

estatus texto

Uno de los valores de la lista.

Valores: vigente cancelada en_espera error

fecha_desde texto

Fecha ISO 8601 en UTC, por ejemplo 2026-10-01T00:00:00Z. Devuelve lo que sea igual o posterior.

fecha_hasta texto

Fecha ISO 8601 en UTC. Devuelve lo que sea igual o anterior.

Respuestas

400 Petición mal formada: filtro no permitido, filtro vacío, cursor o límite inválidos, o una cabecera de navegador
401 La llave no es válida, está revocada, venció, o la empresa dejó de ser PRO
403 La llave no tiene el permiso que pide esta operación
404 La ruta no existe, o tu empresa no tiene la API habilitada
429 Pasaste un tope. La respuesta trae Retry-After
500 Falló de nuestro lado. Reintenta y reporta el valor de peticion
503 Tu empresa tiene demasiadas peticiones en curso, o la búsqueda no está disponible. Trae Retry-After

Generado el 2026-10-09 desde el catálogo de la API.