Zum Inhalt springen

JavaScript-SDK

Markieren Sie KI-Bilder, -Songs und -Clips aus JavaScript oder TypeScript mit einem Aufruf: Node.js 20 oder neuer, Next.js, Bun, Deno und Edge-Runtimes. Mit Typen, ohne Abhängigkeiten, unter MIT-Lizenz.

Installation

Shell
npm install @kennmarq/sdk

Das SDK liest Ihren Schlüssel aus KENNMARQ_API_KEY oder nimmt ihn über apiKey entgegen. Bewahren Sie ihn auf dem Server auf, nie im Browser.

Datei markieren

TypeScript
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() nimmt einen Pfad, ein Blob oder File, einen ArrayBuffer oder ein Uint8Array entgegen und sendet eine Datei über 4 MB selbstständig über einen Upload. Seine Optionen sind die von POST /v1/mark, in camelCase: source, provider, appName, appVersion, model, markets, check, outputFormat, input sowie für die sichtbare Kennzeichnung label, deepfake und labelLanguage, labelPosition, labelSize, labelStyle.

In einer Next.js-Route

app/api/generate/route.ts
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 } });
}

Mehr dazu in den Anleitungen für Next.js und das Vercel AI SDK.

Songs und Clips

TypeScript
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 later

Sicherheitsprüfung, Verifizierung, Nachweise und Nutzung

TypeScript
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();

Fehler

Bei API-Fehlern wirft das SDK KennmarqError mit dem code der API, dem HTTP-status und der requestId (Fehler). Eine Blockierung durch die Sicherheitsprüfung wirft ContentBlocked, mit der Antwort der Prüfung in safety; dann wird nichts markiert oder gezählt. Auf ein 429, das nur um einen kurzen Moment Geduld bittet, wartet das SDK selbst.

Der Quellcode liegt auf GitHub.