https://app.gudink.com/api/v1 y tu clave gk_live_):
Listar tus productos
Un producto es un diseño tuyo en Gudink que no está archivado. No hace falta que esté publicado en ningún canal: alcanza con que exista en tu cuenta.Qué es cada campo
Una línea es un par
Una línea es siempre el parproduct_id + variant_id. El variant_id solo no identifica nada: es la variante base (por ejemplo L / Blanco) y el mismo número aparece en varios de tus productos, cada uno con su precio.
- Guardá tus variantes con la clave
(product_id, variant_id), nunca sólo porvariant_id. - Mandá siempre el par, al cotizar y al crear el pedido.
- Una variante con el
product_idde otro producto responde 409variant_not_orderable.
Paginado
limitva de 1 a 25. Por defecto 20.- Si
next_cursorno esnull, pedí la página siguiente concursor=<next_cursor>. Cuando esnull, terminaste. - El cursor es opaco y sólo sirve para tu cuenta. No lo armes ni lo interpretes.
Un producto solo
data. Un id que no existe o que no es de tu cuenta responde 404 not_found. Es siempre el mismo 404: la API no confirma si un id ajeno existe.
Imágenes
Descargáthumbnail_url y mockups[].url y alojalas en tu sitio. No las enlaces directo desde Gudink: la dirección cambia cuando la imagen se regenera y la anterior deja de funcionar.
Cada cuánto sincronizar
- No vendas una variante con
available: false.availablepuede cambiar en cualquier momento. - Igual el alta del pedido puede responder 409
out_of_stock:available: truedice que hay al menos una unidad, no cuántas, y los pedidos sin pagar reservan unidades. Prepará tu checkout para eso. Ver Stock y reservas. - Un producto que desaparece de
GET /products(o que responde 404 enGET /products/:id) se archivó o dejó de ser tuyo: dejá de venderlo. Si igual llega a un pedido, el alta responde 409product_archived. - No hay aviso (webhook) de cambios de producto: un evento
product.updatedtodavía no existe. Los avisos son sólo de pedidos. - Programá la sincronización con un reloj de verdad (el cron del servidor). Si tu plataforma corre sus tareas programadas sólo cuando alguien visita el sitio (WP-Cron de WordPress, por ejemplo), en una tienda con poco tráfico pueden pasar horas sin sincronizar.
Cuando cambia un precio
- El pedido toma el precio del momento en que lo creás.
items[].unit_pricedel pedido es lo que se te cobra, aunque el producto cambie de precio después. - Gudink te avisa por mail los cambios de precio antes de que entren en vigor, con la fecha.
- Desde ese día, tu próxima sincronización ya trae el precio nuevo en
variants[].price.
Cotizar el envío
Antes de crear el pedido, cotizá el envío a domicilio para esas líneas y ese código postal. La cotización queda guardada 24 horas, y el pedido se cobra exactamente al precio de la opción que elijas.201:
Qué mandar
Qué devuelve
Reglas de la cotización
service_codeidentifica una opción dentro de esa cotización y sólo vale junto con suquote_id. Copialo tal cual en el pedido.- No se garantiza que sea el mismo en dos cotizaciones del mismo carrito: el
opt_1de una cotización nueva puede ser otro envío. Si recotizás, elegí de nuevo entre las opciones nuevas, porlabelyprice. - Las líneas tienen que ser exactamente las del pedido: mismo producto, misma variante, misma cantidad. El orden no importa. Si cambia el carrito, cotizá de nuevo.
- Una cotización vigente sirve para más de un pedido con las mismas líneas y el mismo código postal.
- Cotizar no mira el stock. El stock se reserva recién al crear el pedido.
- Mandá cada par
product_id+variant_iduna sola vez, con la cantidad sumada. Si repetís el par en dos líneas, la cotización y el pedido lo aceptan y quedan como dos líneas separadas (cada una con su tope de unidades), pero no lo necesitás para nada: evitalo. - Carritos mixtos. Si el carrito tiene productos que no son de Gudink, cotizá sólo las líneas de Gudink: lo de Gudink sale en su propio paquete, desde Gudink, y el envío del resto lo calculás vos como siempre. Mostrale a tu comprador la suma, o los dos envíos por separado.
- Sólo hay envío a domicilio.
- Límite: 30 cotizaciones por minuto por cuenta.
price de la opción es lo que te cobra Gudink a vos. Cuánto le cobrás de envío a tu comprador lo decidís vos. Ver Cuánto cobrar de envío.
Errores de la cotización
Se deciden en este orden. Responde el primero que corresponde:
Además puede responder los errores de toda ruta con clave (401, 403, 429, 500, 503) y los del cuerpo (400
invalid_body, 413 payload_too_large). Qué trae details en cada uno: ver Errores y límites.
province_required es un código propio, para que no tengas que distinguirlo de un dato mal tipeado:
Provincias
province (al cotizar) y shipping_address.province (en el pedido) son una de estas 24. La API siempre devuelve el nombre tal cual figura acá:
Cómo se normaliza lo que mandás:
Tres reglas para no equivocarte:
- Si la API reconoce el código postal, la provincia sale del código postal y no hace falta mandarla al cotizar. En el pedido, la que mandes se ignora, no se rechaza: el pedido sale con la del código postal.
- Si no lo reconoce, responde 400
province_required: pedísela a tu comprador con un selector de estos 24 valores. - En el pedido, mandá en
shipping_address.provincelaprovinceque devolvió la cotización. Así nunca difiere. Qué compara la API entre la cotización y el pedido: ver Qué compara la cotización con el pedido.

