bruxel.ai

Exemples

Le flux d'intégration en curl, Python et JavaScript. Remplacez bxk_votre_cle par celle créée dans la console.

S'authentifier et vérifier

Chaque appel porte votre clé API comme jeton Bearer. Commencez par confirmer que ça marche avec 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, ... } }

Importer votre catalogue

Créez ou mettez à jour des produits par SKU (upsert en masse, jusqu'à 500 par requête).

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 }

Générer une description

Génération synchrone : facture au succès. L'Idempotency-Key est recommandé pour des nouvelles tentatives sûres.

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 }

Générer par lot

Pour le volume : réservez des crédits avec un Idempotency-Key obligatoire et faites du poll jusqu'à la fin du lot — le poll facture les succès et rembourse le reste.

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)

Lire et exporter

Lisez la description actuelle d'un produit ou exportez tout le catalogue généré en 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)
Exemples — Bruxel