@ideare/sdk
v0.1.0-next.3
Published
The TypeScript client for the ideare API.
Readme
@ideare/sdk
The TypeScript client for the ideare API. It runs wherever fetch does (Node 20.3+, Bun,
Deno, Workers and browsers) and installs nothing else.
import { Ideare } from "@ideare/sdk";
const ideare = new Ideare();
const version = await ideare.versions.get({ slug: "acme", version: "latest" });
// { version: 3, files: [{ path: "web/favicon.ico", url: "https://cdn.ideare.app/b/acme/v3/web/favicon.ico", sha256: "...", ... }, ...] }Approved versions are public, so reading them needs no key. Everything else needs one: make an
ideare_ key in the studio, under Keys, and pass it.
const ideare = new Ideare({ apiKey: process.env.IDEARE_API_KEY });
const brand = await ideare.brands.get({ slug: "acme" });
await ideare.brands.updateDraft({ slug: "acme", draftRev: brand.draft.rev, masters });Each method sends one call and returns its data. A refusal throws an IdeareError with the
API's code (NOT_FOUND, CONFLICT...), the HTTP status, an English message, and
messageKey with params for your own words. Reads, and writes that take an idempotency key,
are tried again after no answer, a 429 or a 5xx, up to twice.
Live images
imageUrl() signs a link to a picture ideare draws when someone opens it, such as a share card
with today's offer. Sign on your server: the brand's live-image secret lets anyone put words on
the brand's pictures.
import { imageUrl } from "@ideare/sdk";
const url = await imageUrl({
secret: process.env.IDEARE_IMAGE_SECRET,
slug: "acme",
template: "promotion",
text: { title: "2 for 1 today" },
});
// https://img.ideare.app/acme/promotion.png?t.title=2+for+1+today&sig=...MIT.
