Quote API Documentation

API pública para cotización automática de cajas de cartón corrugado. Diseñada para integración con LLMs, agentes de IA y sistemas B2B.

Conectalo a tu asistente

Con esto tu asistente cotiza cajas sin salir de la conversación: le preguntás por una medida y te devuelve el precio, el plazo y la plantilla de impresión.

URL del servidor MCP

https://www.quilmescorrugados.com.ar/api/mcp

Claude

Add custom connector → pegar la URL → Add

Abrir conectores de Claude

ChatGPT

Advanced → Developer mode → Add → pegar la URL

Abrir conectores de ChatGPT

Claude Code

Un comando, sin pasar por ninguna pantalla.

claude mcp add --transport http quilmes https://www.quilmescorrugados.com.ar/api/mcp

¿Tu asistente no soporta MCP? No hace falta instalar nada: cada cotización es una página. Abrí www.quilmescorrugados.com.ar/cotizar/400x600x600/3000 y cambiá las medidas y la cantidad en la dirección. Da el mismo precio.

Quick Start

cURL
curl -X POST https://www.quilmescorrugados.com.ar/api/v1/quote \
  -H "Content-Type: application/json" \
  -d '{"boxes": [{"length_mm": 400,"width_mm": 300,"height_mm": 200,"quantity": 1000,"has_printing": false,"printing_colors": 0}]}'

Múltiples cajas

Cotizá hasta 10 tipos de cajas diferentes en una sola request.

Precios en tiempo real

Precios actualizados automáticamente según configuración vigente.

Tiempo de producción

Estimación de días hábiles según complejidad del pedido.

Rate limiting

10 req/min sin API key, 100 req/min con API key.

Endpoint

POST$https://www.quilmescorrugados.com.ar/api/v1/quote

Calcula el precio de cajas de cartón corrugado según dimensiones y cantidad.

Headers

HeaderTipoDescripción
Content-TypeRequeridoapplication/json
X-API-KeyOpcionalAPI key para rate limit extendido

Request Body

Parámetros de boxes[]

CampoTipoRangoDescripción
length_mminteger200-1800Largo de la caja en mm. Largo + ancho no puede superar 2000 mm
width_mminteger200-1100Ancho de la caja en mm. Largo + ancho ≤ 2000 y ancho + alto ≤ 1200
height_mminteger100-1000Alto de la caja en mm. Ancho + alto no puede superar 1200 mm
quantityinteger≥1Cantidad de cajas
has_printingboolean-Si tiene impresión (opcional)
printing_colorsinteger0-3Cantidad de colores (opcional)
Ejemplo de request
{
  "boxes": [
    {
      "length_mm": 400,
      "width_mm": 300,
      "height_mm": 200,
      "quantity": 1000,
      "has_printing": false,
      "printing_colors": 0
    }
  ]
}

Response

Ejemplo de response (200 OK)
{
  "success": true,
  "quote": {
    "boxes": [
      {
        "length_mm": 400,
        "width_mm": 300,
        "height_mm": 200,
        "quantity": 1000,
        "has_printing": false,
        "printing_colors": 0,
        "sheet_width_mm": 500,
        "sheet_length_mm": 1450,
        "sqm_per_box": 0.725,
        "total_sqm": 725,
        "price_per_m2": 1200,
        "unit_price": 870,
        "subtotal": 870000
      }
    ],
    "total_m2": 725,
    "subtotal": 870000,
    "currency": "ARS",
    "estimated_days": 7,
    "valid_until": "2025-02-19",
    "minimum_m2": 500,
    "meets_minimum": true
  },
  "rate_limit": {
    "remaining": 9,
    "reset_at": "2025-01-19T12:01:00.000Z"
  }
}

Campos importantes

  • meets_minimum: Indica si el pedido llega al mínimo de compra de 500 m² de cartón. Si es false, el pedido no se puede vender. Una medida propia, troquelada o impresa, arranca en 1.000 m².
  • currency: Siempre "ARS" (Peso Argentino).
  • subtotal: Precio sin IVA.
  • valid_until: Fecha hasta la cual el precio cotizado es válido.
  • boxes[].pieces: 1 si la caja sale de una plancha; 2 si se fabrica en dos mitades pegadas (el desarrollo supera el largo máximo de plancha de 2050 mm). Con pieces=2 el precio ya incluye el material de la segunda solapa y un 25% por el pegado, y pieces_note lo explica en castellano. La plantilla PDF existe igual: dibuja el desplegado como si fuera de una pieza, como referencia para ubicar el diseño (el despiece real lo prepara la fábrica).

Códigos de Error

CódigoDescripción
200Cotización exitosa
400Error de validación (parámetros inválidos)
429Rate limit excedido
500Error interno del servidor

Ejemplos de Código

Python
import requests

response = requests.post(
    "https://www.quilmescorrugados.com.ar/api/v1/quote",
    json={
        "boxes": [{
            "length_mm": 400,
            "width_mm": 300,
            "height_mm": 200,
            "quantity": 1000
        }]
    }
)

quote = response.json()
print(f"Total: ARS {quote['quote']['subtotal']:,.2f}")
JavaScript / Node.js
const response = await fetch('https://www.quilmescorrugados.com.ar/api/v1/quote', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    boxes: [{
      length_mm: 400,
      width_mm: 300,
      height_mm: 200,
      quantity: 1000
    }]
  })
});

const { quote } = await response.json();
console.log(`Total: ARS ${quote.subtotal.toLocaleString()}`);

Rate Limiting

La API implementa rate limiting por IP o API key:

  • Sin API key: 10 requests por minuto
  • Con API key: 100 requests por minuto

Los headers X-RateLimit-Remaining y X-RateLimit-Reset indican el estado del rate limit.

¿Necesitás una API key?

Si necesitás un rate limit mayor para tu integración, contactanos para obtener una API key personalizada.

Solicitar API Key