Documentación · API v1

La API de tu tienda, lista para tu propia web

Lee el catálogo, da cuentas a tus compradores y cobra desde cualquier web con una API REST en JSON. Se autentica con API keys que creas en tu panel.

Petición
curl "https://vendiq.pe/api/v1" \
  -H "x-api-key: vnd_live_xxxxxxxxxxxx"
Respuesta · 200
{
  "object": "api",
  "version": "v1",
  "tenant": {
    "name": "Tienda Demo",
    "subdomain": "tienda-demo",
    "plan": "BUSINESS_PRO"
  },
  "authentication": { "type": "api_key", "scopes": ["read"] },
  "rate_limit": { "limit": 100, "window": "1m" },
  "resources": [
    "/api/v1/products",
    "/api/v1/products/{slug}",
    …
  ],
  "docs": "https://vendiq.pe/docs#api"
}

01

La API de Vendiq

Es una API REST: recibe y devuelve JSON y usa los verbos y los códigos de estado de HTTP. Sirve para llevar tu tienda a una web hecha a tu medida, con su catálogo, el contenido del Site Builder, las cuentas de tus compradores, sus pedidos y el checkout.

Formato
JSON
Versión
v1
Autenticación
API key
Límite
100 por minuto

02

URL base

Todas las rutas cuelgan de esta dirección. La tienda no se elige por el dominio: la identifica la API key con la que llamas.

URL base
https://vendiq.pe/api/v1

La API responde también en el dominio de tu tienda, que es el que usa la documentación de tu panel. De las rutas de la referencia, solo /api/checkout/token vive fuera de /api/v1.

03

Autenticación

Cada petición lleva tu API key en la cabecera x-api-key. Si tu cliente no puede enviar cabeceras propias, la API también la acepta como Authorization: Bearer.

Los endpoints marcados como «Sesión del comprador» piden además el token que devuelve POST /api/v1/auth/login. En ellos la key va en x-api-key y el token en Authorization: Bearer.

Solo la tienda
curl "https://vendiq.pe/api/v1/products?limit=10" \
  -H "x-api-key: vnd_live_xxxxxxxxxxxx"
Tienda y comprador
curl -X POST "https://vendiq.pe/api/v1/auth/login" \
  -H "x-api-key: vnd_live_xxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{ "email": "cliente@correo.com", "password": "********" }'

curl "https://vendiq.pe/api/v1/users/me" \
  -H "x-api-key: vnd_live_xxxxxxxxxxxx" \
  -H "Authorization: Bearer <token>"

Las keys empiezan por vnd_live_ y siguen con 64 caracteres hexadecimales. Las emitidas antes con el prefijo lum_live_ siguen funcionando.

04

Crear una API key

Las API keys vienen en los planes Business Pro y White label, y solo las gestiona un administrador de la tienda.

  1. 1

    Abre Configuración → API Keys

    Está en el panel de tu tienda, en /dashboard/settings/api-keys.

  2. 2

    Pulsa «Nueva API Key»

    Ponle un nombre que diga dónde se usa, por ejemplo «Web principal».

  3. 3

    Elige los permisos

    «Solo lectura» le da el scope read; «Lectura y escritura» le suma write.

  4. 4

    Cópiala y guárdala

    Se muestra una sola vez. Vendiq guarda solo su huella SHA-256, así que no se puede recuperar: si la pierdes, revócala y crea otra.

  • En el navegador, solo lectura

    La API acepta llamadas desde cualquier origen. Una key que va en el código de tu web la puede leer cualquiera: usa ahí una de solo lectura y guarda las de escritura en tu servidor.

  • Cuándo deja de funcionar

    Una key revocada o vencida responde 401 UNAUTHORIZED. Si la operación exige un scope que la key no tiene, la respuesta es 403 FORBIDDEN.

05

Límites de uso

Cada API key tiene hasta 100 peticiones por minuto. Algunos endpoints sensibles, como el inicio de sesión o el envío de correos, tienen además un límite propio más bajo.

Al pasarte llega un 429 RATE_LIMIT_EXCEEDED. Espera antes de reintentar: cuando la respuesta trae Retry-After, ahí están los segundos.

Consulta tu cuota con estas cabeceras cuando vengan en la respuesta:

RateLimit-Limit
Peticiones permitidas en la ventana de un minuto.
RateLimit-Remaining
Las que te quedan en esa ventana.
RateLimit-Reset
Segundos hasta que la ventana se renueva.
Retry-After
En un 429, los segundos que conviene esperar.

06

Errores

Todo error trae error.code y error.message. Programa contra error.code, que es estable, y no contra el texto, que puede cambiar.

Los endpoints del contrato común añaden los campos de Problem Details (RFC 9457): type, title, status, detail e instance, más un requestId para rastrear la petición.

Error · 404
{
  "type": "https://vendiq.pe/docs/api#not_found",
  "title": "Not found",
  "status": 404,
  "detail": "No existe un producto publicado con el slug \"xyz\".",
  "instance": "/api/v1/products/xyz",
  "requestId": "req_3f9c2a7b1e4d8c6a5b0f2e1d",
  "error": {
    "code": "NOT_FOUND",
    "message": "No existe un producto publicado con el slug \"xyz\"."
  }
}
  • UNAUTHORIZED401Falta la API key, es inválida, expiró, o falta el token del comprador.
  • FORBIDDEN403La API key no tiene el scope necesario (p. ej. write).
  • NOT_FOUND404No existe, o no es de tu tienda. Se responde 404 y no 403 a propósito: confirmar que existe pero es de otro ya sería filtrar información.
  • BAD_REQUEST400Input inválido. Si es por campo, viene issues.
  • MIXED_CURRENCIES400El carrito mezcla monedas: una orden lleva una sola.
  • RATE_LIMIT_EXCEEDED429Superaste la cuota. Espera lo que dice Retry-After.
  • GONE410Esta versión de la API se retiró. Link rel="successor-version" dice a dónde migrar.
  • INTERNAL_ERROR500Error nuestro. Pasanos el requestId de la respuesta.

07

Convenciones

  • Paginación

    Las listas paginadas aceptan ?page=1&limit=20, con un máximo de 100 por página, y responden { object: "list", data, pagination }.

  • Versión

    Cada respuesta indica su versión en X-API-Version. Antes de retirar una versión se avisa con Deprecation y Sunset; después, la API responde 410 Gone.

  • Trazabilidad

    Las respuestas del contrato común traen X-Request-Id. Inclúyelo cuando escribas a soporte por un error.

  • CORS

    Se aceptan llamadas desde cualquier origen, con las cabeceras Authorization, Content-Type y x-api-key.

08

Referencia de endpoints

Sale del mismo catálogo que anuncia GET /api/v1 y que usa la documentación de tu panel: las tres listas dicen lo mismo.

Descubrimiento

1 endpoint

La raíz se describe a sí misma: qué tienda eres, qué cuota tienes y qué recursos hay.

Productos

5 endpoints

Catálogo público. Solo productos ACTIVE: un borrador no se filtra a tu web.

Categorías y colecciones

4 endpoints

Para armar el menú y las secciones de tu web.

Blog

2 endpoints

Artículos publicados del tenant, para storefronts headless.

Promociones y gift cards

2 endpoints

Descuentos vigentes y saldo de tarjetas de regalo.

Carrito, favoritos y fidelidad

3 endpoints

Lo que es del comprador: su carrito, su wishlist y sus puntos.

Autenticación de compradores

9 endpoints

El comprador vive en la BD de la tienda. Cada tienda tiene SU contraseña: la de una no abre otra.

Perfil y direcciones

4 endpoints

Requieren las DOS credenciales: la API key dice qué tienda, el token dice qué comprador.

Compras

6 endpoints

Cotizar, cobrar y consultar pedidos.

Contenido

10 endpoints

Las páginas que armas con el editor de sitio.

Chat en vivo

4 endpoints

Chat del storefront: visitante anónimo ↔ asesor/bot. Requiere la feature integrations.chat.

Integra tu tienda con tu propia web

Dentro de tu panel, la documentación de la API ya trae la URL de tu tienda y el prefijo de tus keys, lista para copiar.

Documentación y API | Vendiq