SDK JavaScript
Marquez les images, morceaux et vidéos IA depuis JavaScript ou TypeScript en un seul appel : Node.js 20 ou version ultérieure, Next.js, Bun, Deno et les runtimes edge. Types inclus, sans dépendances, sous licence MIT.
Installation
npm install @kennmarq/sdkLe SDK lit votre clé dans KENNMARQ_API_KEY, ou la reçoit via apiKey. Gardez-la côté serveur : jamais dans le navigateur.
Marquer un fichier
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() accepte un chemin, un Blob ou un File, un ArrayBuffer ou un Uint8Array, et fait passer automatiquement un fichier de plus de 4 Mo par un envoi. Ses options sont celles de POST /v1/mark, en camelCase : source, provider, appName, appVersion, model, markets, check, outputFormat, input, et, pour la mention visible, label, deepfake ainsi que labelLanguage, labelPosition, labelSize, labelStyle.
Dans une route 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 } });
}Plus de détails dans les guides Next.js et Vercel AI SDK.
Morceaux et vidéos
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 laterContrôle, vérification, justificatifs et utilisation
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();Erreurs
Les erreurs de l’API lèvent KennmarqError avec le code de l’API, le status HTTP et le requestId (erreurs). Un blocage par le contrôle de sécurité lève ContentBlocked, avec la réponse du contrôle dans safety, et rien n’est marqué ni décompté. Le SDK patiente lorsqu’un 429 demande d’attendre un instant.
Le code source est sur GitHub.