JSON API -dokumentaatio

BrandBazooka tarjoaa neljä REST-rajapintaa, joista voit hakea brändi-JSONin AI-työkaluusi. Käytä joko julkista jakolinkkiä tai API-avainta.

Tunnistautuminen

Julkiset brändit ovat haettavissa ilman tunnistautumista. Yksityiset brändit vaativat Authorization: Bearer -otsikon, jossa on brändin API-avain.

API-avain luodaan brändin asetuksissa. Avain näytetään VAIN kerran luonnin yhteydessä — tallenna se talteen heti.

Päätepisteet

1. Koko brändi-JSON

GET /api/brand/{id}

Palauttaa täydellisen kanonisen brändi-JSONin.

2. Visuaalinen identiteetti

GET /api/brand/{id}/visual

Palauttaa vain visual_identity-lohkon (logot, värit, typografia).

3. Kirjoitustyyli

GET /api/brand/{id}/writing-style/{styleId?}

Palauttaa yksittäisen AnalyzedStylen prompt_injection-merkkijonon kanssa. {styleId} on valinnainen — MVP:ssä brändillä on yksi tyyli.

4. AI-system-prompt

GET /api/brand/{id}/ai-prompt?context=&lang=

Palauttaa valmiiksi rakennetun system-prompt-tekstin, jonka voit liittää suoraan AI-työkaluun. Tukee viittä kontekstia (default, linkedin, instagram, email, blog) ja kahta kieltä (fi, en).

Rajat (rate limits)

  • Julkiset päätepisteet (per IP): 60 pyyntöä/min + 1 000 pyyntöä/h
  • Yksityiset päätepisteet (per API-avain): 600 pyyntöä/min + 10 000 pyyntöä/h

Vastaukset sisältävät otsikot X-RateLimit-Limit, X-RateLimit-Remaining ja X-RateLimit-Reset (unix-aika sekunteina). 429-vastauksissa on lisäksi Retry-After.

Täydellisyysraja

Jos brändin completeness_score on alle 40, päätepisteet palauttavat 422-vastauksen kuvaten puuttuvat kentät. Täydennä brändi vähintään 40 %:iin ennen julkaisua.

Esimerkkejä

curl -komennolla

curl -H "Authorization: Bearer bb_sk_..." \
  https://brandbazooka.io/api/brand/00000000-0000-0000-0000-000000000000

JavaScript-fetchillä

const resp = await fetch(
  'https://brandbazooka.io/api/brand/00000000-0000-0000-0000-000000000000/ai-prompt?context=linkedin&lang=en',
  { headers: { Authorization: 'Bearer bb_sk_...' } }
);
const promptText = await resp.text();
// promptText is paste-ready into Claude/ChatGPT

Statuskoodit

  • 200 — onnistunut nouto
  • 401 — yksityinen brändi ilman Bearer-otsikkoa tai avain väärä/peruutettu
  • 404 — brändi ei löydy
  • 422 — brändi ei täytä täydellisyysrajaa TAI tuntematon context/lang
  • 429 — rate limit ylittyi (katso Retry-After)