AI Studio — create, edit, publishSign inGet started
Developers

BuzzSmile API

The same functions the screens call: offers, workflows, cost, generation, tracking. One contract, one door.

Routes

VerbPathReturnsHeaders
GET/api/studio/offersAmounts are in hundredths in amountCents.plans, packs, add-ons, boostsstoreId
GET/api/studio/workflowsWhat the stack EXPOSES, not what it declares.workflows, templates, transitionsstoreId
POST/api/studio/purchase/preparePrepares only: nothing is credited here.purchase intent, tokens to creditstoreId · idempotency key
POST/api/studio/costThe announced cost is the one that will be reserved.estimate before generationstoreId
POST/api/studio/genererReplayed, the same key does not charge twice.job submission, token reservationstoreId · idempotency key
GET/api/studio/jobs/:idThe output URL is signed and expires.progress, signed outputsstoreId

A complete call

curl -X POST "$BUZZSMILE_URL/api/studio/cost" \
  -H "authorization: Bearer $BUZZSMILE_API_KEY" \
  -H "content-type: application/json" \
  -d '{"capability":"image.generate","tier":"standard"}'
The `authorization: Bearer …` header replaces the session. The storeId comes from the key, never from a header.

SDK

SDKs add no rules: they call the same routes.

Response codes

CodeWhenWhat it means
400A sent field is not read by the routeThe missing or off-schema field is named in the response.
401Key missing or revokedA key is revoked; it is not disabled client-side.
402Insufficient token balanceThe reservation failed: no job was submitted.
404The path does not existA missing route answers 404, not 200 with an empty body.
405The path exists, the verb does notPATCH lives on /:id, never on the collection.
409Idempotency key already seenThe response returns the original job, with no new charge.
429Key quota exceededThe quota is per key, not per user.
Your cookie preferences

We use cookies to run the site and, with your consent, to measure its use. You can accept all, reject all, or choose. Learn more