🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

@sidearmdrm/sdk-node

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@sidearmdrm/sdk-node

TypeScript client for the Sidearm API — protect media from AI training, detect AI content, and search for stolen work

latest
Source
npmnpm
Version
0.8.0
Version published
Maintainers
1
Created
Source

@sidearmdrm/sdk-node

TypeScript client for the Sidearm API. Protect media from AI training, detect AI content, search for stolen work.

Install

npm install @sidearmdrm/sdk-node

Quick Start

import { Sidearm } from "@sidearmdrm/sdk-node";
const client = new Sidearm({ apiKey: "sk_live_..." });
const job = await client.protect({
  media_url: "https://example.com/art.png",
  level: "maximum",
});
const result = await job.wait();

Protection

// Preset level (auto-selects algorithms)
const job = await client.protect({
  media_url: "https://...",
  level: "standard",
  tags: ["portfolio"],
});

// Run specific algorithms by name
const job2 = await client.run({
  algorithms: ["nightshade", "glaze", "hmark"],
  media_url: "https://...",
});

Job Polling

Async endpoints return a Job handle with built-in polling:

// Wait until done
const result = await job.wait({ timeoutMs: 120_000, intervalMs: 2_000 });

// Manual poll
const status = await job.poll();

// Resume from a previous job ID
const resumed = client.jobs.handle("job-uuid");
await resumed.wait();

Algorithms

const all = await client.algorithms.list();
const audio = await client.algorithms.list({ media_type: "audio" });
const open = await client.algorithms.list({ category: "open" });

Detection

// AI content detection (async)
const aiJob = await client.detect.ai({ media_url: "https://..." });
const aiResult = await aiJob.wait();

// Fingerprint detection (sync)
const matches = await client.detect.fingerprint({
  media_url: "https://...",
  tier: "perceptual",
});

// Membership inference
const memJob = await client.detect.membership({
  content_ids: ["uuid-1", "uuid-2"],
  suspect_model: "stable-diffusion-xl",
  method: "combined",
});
await memJob.wait();
const results = await client.search.run({
  media_url: "https://...",
  type: "perceptual",
  limit: 10,
});

const history = await client.search.list({ limit: 20 });

Media Management

await client.media.register({ media_url: "https://...", mode: "basic" });
const library = await client.media.list({ limit: 50 });
const asset = await client.media.get("uuid");
await client.media.update("uuid", { original_media_url: "https://..." });
await client.media.delete("uuid");

Rights and Billing

const rights = await client.rights.get("media-uuid");
const billing = await client.billing.get("account-uuid", {
  start_date: "2026-01-01",
});

Error Handling

import { Sidearm, SidearmError } from "@sidearmdrm/sdk-node";

try {
  await client.protect({ media_url: "..." });
} catch (err) {
  if (err instanceof SidearmError) {
    console.error(err.message); // Human-readable message
    console.error(err.status);  // HTTP status code
    console.error(err.body);    // Raw response body
  }
}

Requirements

  • Node.js 18+ or modern browser (native fetch)
  • Zero runtime dependencies
  • Full TypeScript types included

License

MIT

Keywords

sidearm

FAQs

Package last updated on 10 Mar 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts