Claria
API v1 · Docs
→ Mis API Keys→ MCP Docs
API PUBLICA v1

Claria API

La API de Claria permite que cualquier ERP, sistema de compras o aplicacion integre el motor de procurement de Claria directamente. Cotiza en segundos, emite OCs y recibe eventos en tiempo real.

Base URL
https://baiyers-production.up.railway.app/api/v1
Formato
REST · JSON
Auth
X-Claria-Key header

Autenticacion

Todas las requests requieren el header X-Claria-Key con tu API key. Genera tus keys en /developers.

# Produccion
curl -H "X-Claria-Key: claria_live_xxxxxxxxxxxx" \
     https://baiyers-production.up.railway.app/api/v1/ping

# Sandbox (datos de prueba)
curl -H "X-Claria-Key: claria_test_xxxxxxxxxxxx" \
     https://baiyers-production.up.railway.app/api/v1/ping
Seguridad

Las keys se almacenan solo como hash SHA-256. Si pierdes una key debes generar una nueva. Las keys de test (claria_test_) usan datos de sandbox separados.

POST /cotizar

Busca precios para un item en multiples proveedores chilenos e internacionales. Retorna lista ordenada por precio.

Request
POST /api/v1/cotizar
X-Claria-Key: claria_live_xxx
Content-Type: application/json

{
  "item": "válvula de paso 2" acero",
  "cantidad": 10,
  "unidad": "unidad",
  "numero_parte": "VP-2IN-SS",
  "marca": "Nibco",
  "urgente": false
}
Response 200
{
  "cotizacion_id": "cot_abc123",
  "item_identificado": {
    "nombre_tecnico": "Válvula de bola 2"",
    "categoria": "hidraulico",
    "confianza": "alto"
  },
  "proveedores": [
    {
      "nombre": "Hidráulica SpA",
      "precio_unitario": 45000,
      "precio_total": 450000,
      "moneda": "CLP",
      "plazo_entrega_dias": 5,
      "disponibilidad": "en_stock",
      "score_claria": 87
    }
  ],
  "total_proveedores": 8,
  "tiempo_busqueda_ms": 2340,
  "creado_en": "2025-09-15T14:23:00Z"
}

POST /cotizar/batch

Business+

Cotiza hasta 100 items en paralelo. Ideal para cubicaciones y listas de materiales. Solo en plan Business y Enterprise.

POST /api/v1/cotizar/batch

{
  "items": [
    { "item": "cable HDMI 10m", "cantidad": 5 },
    { "item": "switch 24 puertos", "cantidad": 2 },
    { "item": "rack 42U", "cantidad": 1 }
  ],
  "proyecto_nombre": "Data Center Norte 2025"
}

OC, Ordenes de Compra

POST /oc/emitir

Request
{
  "cotizacion_id": "cot_abc123",
  "proveedor_id": "prov_xyz",
  "cantidad": 10,
  "precio_unitario": 45000,
  "condiciones_pago": "30_dias",
  "referencia_erp": "PO-2025-1234",
  "notas": "Entregar en bodega"
}
Response 200
{
  "oc_id": "oc_def456",
  "numero_oc": "OC-2025-0089",
  "estado": "enviada",
  "pdf_url": "https://storage...",
  "referencia_erp": "PO-2025-1234",
  "total": 450000,
  "moneda": "CLP",
  "creado_en": "2025-09-15T14:25Z"
}
GET/oc/{oc_id}Estado de una OC especifica
GET/oc?estado=enviada&referencia_erp=PO-2025-1234Listar OCs con filtros

Proveedores

GET/proveedores?categoria=hidraulico&score_min=60Listar con filtros
GET/proveedores/{id}Detalle de proveedor
POST/proveedoresAgregar proveedor
POST/proveedores/importImportar hasta 500 proveedores

Estadisticas

GET/estadisticas/gastos?periodo=ultimo_trimestreGasto total, por mes, por categoria
GET/estadisticas/proveedores?limit=10Top proveedores por score
GET/estadisticas/uso_apiUso de la API este mes

Webhooks

Recibe eventos en tu ERP en tiempo real cuando ocurren acciones en Claria. Soporta firma HMAC-SHA256 para verificar autenticidad.

Configurar

POST /api/v1/webhooks/configurar

{
  "url": "https://erp.empresa.cl/webhook/claria",
  "eventos": ["oc.confirmada", "factura.recibida"],
  "secret": "mi_secret_privado"
}

Payload recibido en tu ERP

POST https://erp.empresa.cl/webhook/claria
X-Claria-Event: oc.confirmada
X-Claria-Timestamp: 1694781900
X-Claria-Signature: sha256=abc123...

{
  "evento": "oc.confirmada",
  "oc_id": "oc_def456",
  "numero_oc": "OC-2025-0089",
  "referencia_erp": "PO-2025-1234",
  "confirmada_en": "2025-09-15T16:00:00Z",
  "proveedor": "Hidráulica Industrial SpA"
}

Verificar firma (Python)

import hmac, hashlib, json

def verificar_firma(payload_bytes, timestamp, firma, secret):
    msg = f"{timestamp}.{payload_bytes.decode()}"
    esperada = hmac.new(secret.encode(), msg.encode(), hashlib.sha256).hexdigest()
    return hmac.compare_digest(f"sha256={esperada}", firma)

# En tu endpoint Flask/FastAPI:
firma = request.headers["X-Claria-Signature"]
ts    = request.headers["X-Claria-Timestamp"]
ok    = verificar_firma(request.data, ts, firma, "mi_secret_privado")
Retry logic
Si tu endpoint no responde 2xx, Claria reintenta: inmediato → 5min → 30min → 2h → 24h. Despues de 5 intentos fallidos te notificamos por email.

Codigos de error

{
  "error": {
    "codigo": "PLAN_LIMIT_EXCEEDED",
    "mensaje": "Excediste el límite de 100 cotizaciones/mes del plan Pro",
    "plan_actual": "pro",
    "limite": 100,
    "usadas": 100,
    "reinicia_en": "2025-10-01T00:00:00Z",
    "upgrade_url": "https://claria.cc/pricing"
  }
}
INVALID_API_KEY
Key invalida o inexistenteHTTP 401
API_KEY_EXPIRED
Key expiradaHTTP 401
RATE_LIMIT_EXCEEDED
Demasiadas requests por minutoHTTP 429
PLAN_LIMIT_EXCEEDED
Limite mensual del plan alcanzadoHTTP 402
ITEM_NOT_IDENTIFIED
No se pudo identificar el itemHTTP 400
BATCH_NOT_AVAILABLE
Batch requiere Business+HTTP 402
OC_ALREADY_CONFIRMED
OC ya confirmadaHTTP 409
NOT_FOUND
Recurso no encontradoHTTP 404

Integracion por ERP

Defontana
  1. Webhook de Defontana se dispara al crear una requisicion
  2. Tu middleware llama POST /api/v1/cotizar con los datos del item
  3. Resultados se muestran en sidebar dentro de Defontana
  4. Usuario aprueba y llamas POST /api/v1/oc/emitir
  5. Claria envia OC al proveedor y te retorna PDF + numero
  6. Webhook oc.confirmada notifica a Defontana para registrar la PO
# 1. Recibir requisicion de Defontana
@app.post("/webhook/defontana")
def requisicion(data: dict):
    resp = requests.post(
        "https://baiyers-production.up.railway.app/api/v1/cotizar",
        headers={"X-Claria-Key": CLARIA_KEY},
        json={"item": data["descripcion"], "cantidad": data["cantidad"]}
    )
    return resp.json()  # Devolver a Defontana
Bsale
  1. Webhook de Bsale dispara en 'pedido pendiente'
  2. Items bajo $500k CLP: cotizacion y OC automatica
  3. Items sobre $500k CLP: flujo de aprobacion manual
  4. OC confirmada → Bsale la registra como venta
# Automatico para items < $500k CLP
if precio_estimado < 500_000:
    oc = requests.post("https://baiyers-production.up.railway.app/api/v1/oc/emitir", ...)
else:
    # Enviar a aprobacion manual
    notificar_comprador(item, cotizaciones)
SAP Business One
  1. Claria actua como proveedor externo de precios en SAP B1
  2. Integracion via SAP Service Layer REST API
  3. Compatible con SAP B1 version 9.3 y superior
  4. Mapeamos Purchase Quotation → POST /cotizar
// SAP B1 Service Layer + Claria
const sap_token = await getSAPToken();
const req = await getSAPPurchaseRequest(prId);

const precios = await fetch('https://baiyers-production.up.railway.app/api/v1/cotizar', {
  method: 'POST',
  headers: {'X-Claria-Key': CLARIA_KEY},
  body: JSON.stringify({item: req.ItemDescription, cantidad: req.Quantity})
});
Odoo 16/17
  1. Instala el addon claria_procurement en /addons
  2. Configura tu API key en Ajustes → Claria
  3. El boton 'Cotizar con Claria' aparece en Purchase Orders
  4. Resultados se importan directamente como lineas de PO
# /addons/claria_procurement/models/purchase.py
class PurchaseOrder(models.Model):
    def action_claria_quote(self):
        for line in self.order_line:
            resp = requests.post(
                'https://baiyers-production.up.railway.app/api/v1/cotizar',
                headers={'X-Claria-Key': self.env.company.claria_api_key},
                json={'item': line.product_id.name, 'cantidad': line.product_qty}
            )
            line.claria_best_price = resp.json()['proveedores'][0]['precio_unitario']

Claria API v1 · hola@claria.cc · Obtener API key