@bria-ai/client
v0.2.0
Published
Bria.ai TypeScript/JavaScript SDK for the Bria Engine API
Readme
@bria-ai/client
TypeScript/JavaScript SDK for the Bria Engine API — image & video editing.
Requires Node.js 20+ (uses the built-in fetch, FormData, and Blob).
Install
npm install @bria-ai/clientUsage
import { BriaClient } from "@bria-ai/client";
const client = new BriaClient({ apiToken: process.env.BRIA_API_TOKEN });
// Synchronous job — resolves when it's done:
const res = await client.run(
"remove_background",
{ image_url: "https://example.com/cat.png" },
{ raiseForStatus: true },
);
console.log(res.result);
// Asynchronous job — submit then poll:
const submitted = await client.submit("increase_resolution", { image_url: "https://…" });
const done = await client.poll(submitted, { interval: 2, timeout: 120 });apiToken and baseUrl also fall back to the BRIA_API_TOKEN / BRIA_BASE_URL environment
variables.
Requests time out after 30 seconds by default (requestTimeout, in seconds). GET requests are
retried on 429/502/503/504 and on network errors; POST requests (run/submit) are never retried,
so a job is never started twice.
API surface
| Method | Purpose |
| ---------------------------------- | ----------------------------------------------------------- |
| run(endpoint, payload, opts?) | Run a synchronous job (sync: true). |
| submit(endpoint, payload, opts?) | Submit an async job (sync: false); optional webhookUrl. |
| get(endpoint, opts?) | Raw GET with optional params. |
| upload(source, mediaType, opts?) | Upload a local video file/bytes, returns a file_url. |
| status(requestId, opts?) | Current Status of a job. |
| poll(target, opts?) | Poll until terminal (interval/timeout in seconds). |
Toolkit exports: BriaResponse, Status, BriaException, Image, verifyWebhookSignature.
Differences from the Python SDK
- Async only. JavaScript has no synchronous HTTP, so there is a single
BriaClient(no sync/async client split).runvssubmitstill map to the API'ssyncflag. Imageaccepts a URL, data URI, base64 string, local path, orBuffer/Uint8Array(andImage.fromBlobfor aBlob). It does not accept PIL images or numpy arrays.
This SDK deliberately mirrors the Python SDK — same method names and behavior (auth, retries, endpoint normalization, webhook signing, status parsing).
Webhook verification
import { verifyWebhookSignature } from "@bria-ai/client";
const ok = verifyWebhookSignature({
payload: rawBodyString,
webhookId: req.headers["bria-webhook-id"],
timestamp: req.headers["bria-webhook-timestamp"],
signatureHeader: req.headers["bria-webhook-signature"],
apiToken: process.env.BRIA_API_TOKEN,
});License
MIT
