SDK JavaScript
Marca immagini, brani e clip IA da JavaScript o TypeScript con una sola chiamata: Node.js 20 o successivo, Next.js, Bun, Deno e runtime edge. Tipi inclusi, nessuna dipendenza, licenza MIT.
Installazione
npm install @kennmarq/sdkL’SDK legge la tua chiave da KENNMARQ_API_KEY, oppure la riceve con apiKey. Tienila sul server: mai nel browser.
Marca un file
import { writeFile } from "node:fs/promises";
import { Kennmarq } from "@kennmarq/sdk";
const kennmarq = new Kennmarq();
const marked = await kennmarq.mark("render.png", {
provider: "Acme Inc.",
appName: "Acme Studio",
appVersion: "2.1",
model: "FLUX.1 schnell",
markets: ["eu", "us-ca"],
});
await writeFile("render.marked.png", marked.data);
console.log(marked.markId, marked.watermarkId, marked.marksUsed);mark() accetta un percorso, un Blob o un File, un ArrayBuffer o un Uint8Array, e invia da sé tramite un upload i file oltre 4 MB. Le sue opzioni sono quelle di POST /v1/mark, in camelCase: source, provider, appName, appVersion, model, markets, check, outputFormat, input, e quelle dell’etichetta visibile, label, deepfake e labelLanguage, labelPosition, labelSize, labelStyle.
In una route di Next.js
import { generateImage } from "ai";
import { Kennmarq } from "@kennmarq/sdk";
const kennmarq = new Kennmarq();
export async function POST(request: Request) {
const { prompt } = await request.json();
const { image } = await generateImage({ model: "bfl/flux-3-image", prompt });
const marked = await kennmarq.mark(image.uint8Array, { appName: "Acme Studio", markets: ["eu", "us-ca"] });
return new Response(marked.data, { headers: { "Content-Type": marked.contentType } });
}Altri dettagli nelle guide a Next.js e al Vercel AI SDK.
Brani e clip
const song = await kennmarq.mark("track.mp3"); // five marks per started minute
const clip = await kennmarq.mark("clip.mp4", { check: "ai-act" }); // a job: waits, then downloads
const job = await kennmarq.mark("long.mp4", { wait: false }); // or start it now…
const done = await kennmarq.waitFor(job.markId!); // …and fetch it laterControllo, verifica, ricevute e utilizzo
const answer = await kennmarq.check("render.png", "ai-act"); // the safety check: two marks
const report = await kennmarq.verify(marked.data); // free; an image up to 4 MB needs no key
const receipt = await kennmarq.receipt(marked.markId!); // for marks made with markets
const usage = await kennmarq.usage();Errori
Gli errori dell’API lanciano KennmarqError con il code dell’API, lo status HTTP e il requestId (errori). Un blocco di sicurezza lancia ContentBlocked, con la risposta del controllo in safety, e nulla viene marcato né conteggiato. Se un 429 chiede di attendere un momento, l’SDK attende.
Il codice sorgente è su GitHub.