bruxel.ai

Exemplos

O fluxo de integração em curl, Python e JavaScript. Substitua bxk_sua_chave pela que você criou no console.

Autenticar e verificar

Cada chamada leva sua API key como token Bearer. Comece confirmando que funciona com GET /v1/me.

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

const res = await fetch(BASE + "/me", { headers: h });
console.log(await res.json()); // { tenant, key: { scopes, ... } }

Enviar seu catálogo

Crie ou atualize produtos por SKU (upsert em massa, até 500 por requisição).

const res = await fetch(BASE + "/products", {
  method: "POST",
  headers: { ...h, "Content-Type": "application/json" },
  body: JSON.stringify({
    products: [{ sku: "CAMISA-001", name: "Camisa de lino", brand: "Acme" }],
  }),
});
console.log(await res.json()); // { total, created, updated, skipped }

Gerar uma descrição

Geração síncrona: cobra no sucesso. O Idempotency-Key é recomendado para novas tentativas seguras.

const res = await fetch(BASE + "/generations", {
  method: "POST",
  headers: {
    ...h,
    "Content-Type": "application/json",
    "Idempotency-Key": "gen-camisa-001-v1",
  },
  body: JSON.stringify({ product_id: "prod_8f2", languages: ["es", "en"] }),
});
const data = await res.json(); // { results, total_credits_charged, balance }

Gerar em lote

Para volume: reserve créditos com Idempotency-Key obrigatório e faça poll até o lote terminar — o poll cobra os sucessos e reembolsa o resto.

const submit = await fetch(BASE + "/batches", {
  method: "POST",
  headers: {
    ...h,
    "Content-Type": "application/json",
    "Idempotency-Key": "batch-2026-07-23-a",
  },
  body: JSON.stringify({ product_ids: ["prod_8f2", "prod_9a1"] }),
});
const { id } = await submit.json();

// Poll hasta status "ended" (el GET cobra éxitos y reembolsa el resto)
let batch;
do {
  await new Promise((r) => setTimeout(r, 10000));
  batch = await (await fetch(BASE + "/batches/" + id, { headers: h })).json();
} while (batch.status !== "ended");

Ler e exportar

Leia a descrição atual de um produto ou exporte todo o catálogo gerado em CSV.

// Descripción actual
const desc = await (
  await fetch(BASE + "/products/prod_8f2/descriptions", { headers: h })
).json();

// Export a CSV
const csv = await (
  await fetch(BASE + "/export/catalog.csv?language=es", { headers: h })
).text();
Exemplos — Bruxel