Skip to main content

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

Project description

sidearmdrm

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

Install

pip install sidearmdrm

Quick Start

from sidearm import Sidearm

client = Sidearm(api_key="sk_live_...")
job = client.protect(media_url="https://example.com/art.png", level="maximum")
result = job.wait()
print(result)

Protection

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

# Run specific algorithms by name
job = client.run(algorithms=["nightshade", "glaze", "hmark"], media_url="https://...")

Job Polling

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

# Wait until done (default 120s timeout, 2s interval)
result = job.wait(timeout=120, interval=2)

# Manual poll
status = job.poll()

# Resume from a previous job ID
resumed = client.jobs.handle("job-uuid")
resumed.wait()

Algorithms

all_algos = client.algorithms.list()
audio = client.algorithms.list(media_type="audio")
open_algos = client.algorithms.list(category="open")

Detection

# AI content detection (async)
ai_job = client.detect.ai(media_url="https://...")
ai_result = ai_job.wait()

# Fingerprint detection (sync)
matches = client.detect.fingerprint(media_url="https://...", tier="perceptual")

# Membership inference
mem_job = client.detect.membership(
    content_ids=["uuid-1", "uuid-2"],
    suspect_model="stable-diffusion-xl",
    method="combined",
)
mem_result = mem_job.wait()

Search

results = client.search.run(media_url="https://...", type="perceptual", limit=10)
history = client.search.list(limit=20)

Media Management

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

Rights and Billing

rights = client.rights.get("media-uuid")
billing = client.billing.get("account-uuid", start_date="2026-01-01")

Error Handling

from sidearm import Sidearm, SidearmError

try:
    client.protect(media_url="...")
except SidearmError as e:
    print(e)          # Human-readable message
    print(e.status)   # HTTP status code
    print(e.body)     # Raw response body

Context Manager

with Sidearm(api_key="sk_live_...") as client:
    job = client.protect(media_url="https://...")
    result = job.wait()

Requirements

  • Python 3.9+
  • Single dependency: httpx
  • Full type annotations (py.typed)

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sidearmdrm-0.2.1.tar.gz (8.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sidearmdrm-0.2.1-py3-none-any.whl (13.5 kB view details)

Uploaded Python 3

File details

Details for the file sidearmdrm-0.2.1.tar.gz.

File metadata

  • Download URL: sidearmdrm-0.2.1.tar.gz
  • Upload date:
  • Size: 8.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for sidearmdrm-0.2.1.tar.gz
Algorithm Hash digest
SHA256 3c95177ab580added392c0aae726b8536280439e99a31a2cf2a4b04b25f6dd37
MD5 b19526916ae789b5d8dc9158076d4ee8
BLAKE2b-256 a8ce44b66839095237229b6a1c248e5f3de80cc0c9f19085c52d068c99cc05df

See more details on using hashes here.

File details

Details for the file sidearmdrm-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: sidearmdrm-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 13.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for sidearmdrm-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 aaa94dd3e70bbf26fb70f839a24d6e0575baa7f365dc7ed5501da18134eaa7ed
MD5 3e75b27283532b36aa4818d2a100a59b
BLAKE2b-256 cbc6a518e17b478a625f823096d7277e6b4846eb3acb8a7aa7e30f789968ffca

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page