bruxel.ai

Ejemplos

El flujo de integración en curl, Python y JavaScript. Reemplaza bxk_tu_llave por la que creaste en la consola.

Autenticar y verificar

Toda llamada lleva tu API key como Bearer token. Empieza confirmando que funciona con GET /v1/me.

import httpx

BASE = "https://bruxel.ai/api/public/v1"
h = {"Authorization": "Bearer bxk_tu_llave"}

r = httpx.get(f"{BASE}/me", headers=h)
r.raise_for_status()
print(r.json())  # { tenant, key: { scopes, ... } }

Empujar tu catálogo

Sube o actualiza productos por SKU (upsert masivo, hasta 500 por request).

r = httpx.post(f"{BASE}/products", headers=h, json={
    "products": [
        {"sku": "CAMISA-001", "name": "Camisa de lino", "brand": "Acme"},
    ],
})
print(r.json())  # { total, created, updated, skipped }

Generar una descripción

Generación síncrona: cobra al éxito. El Idempotency-Key es recomendado para reintentos seguros.

r = httpx.post(
    f"{BASE}/generations",
    headers={**h, "Idempotency-Key": "gen-camisa-001-v1"},
    json={"product_id": "prod_8f2", "languages": ["es", "en"]},
)
data = r.json()  # { results, total_credits_charged, balance }

Generar en lote

Para volumen: reserva créditos con Idempotency-Key obligatorio y haz poll hasta que el lote termine — el poll cobra los éxitos y reembolsa el resto.

import time

r = httpx.post(
    f"{BASE}/batches",
    headers={**h, "Idempotency-Key": "batch-2026-07-23-a"},
    json={"product_ids": ["prod_8f2", "prod_9a1"]},
)
batch_id = r.json()["id"]

# Poll hasta que termine (el GET ingiere: cobra éxitos, reembolsa el resto)
while True:
    b = httpx.get(f"{BASE}/batches/{batch_id}", headers=h).json()
    if b["status"] == "ended":
        break
    time.sleep(10)

Leer y exportar

Lee la descripción actual de un producto o exporta todo el catálogo timbrado a CSV.

# Descripción actual
desc = httpx.get(f"{BASE}/products/prod_8f2/descriptions", headers=h).json()

# Export a CSV
csv = httpx.get(f"{BASE}/export/catalog.csv", headers=h, params={"language": "es"})
open("catalogo.csv", "wb").write(csv.content)
Ejemplos — Bruxel