The snapWONDERS API has been open for a while — forensic analysis, format conversion, and snapWONDERS Vaultify's steganography (hide and reveal), all reachable over HTTPS and described by a published OpenAPI 3.x specification. Today we are shipping official client libraries for it: Python, JavaScript/TypeScript, PHP and Go, all open source, all free to use against the free tier.
Updated 16 August 2026 — when this was published, TUS was the only way to upload a file, and parts of this article said so. That is no longer true. The API now also accepts direct upload: a single
POST /api/uploadwith the file as the request body, for files up to 95 MB. TUS is still there, still resumable, and still the right choice for large files and unreliable connections — but it is no longer a prerequisite for talking to the API. The passages below have been corrected, and the reasoning is in Direct upload and the snapWONDERS MCP server.
What the SDK actually does
Nothing the API didn't already do. A full run against the raw API means creating a session, uploading each file, starting a job, polling until it finishes, then fetching and downloading the results — correct, but tedious, and there is more bookkeeping than the result is worth writing twice.
The SDK collapses that into one call:
from snapwonders import Client
client = Client(api_key="sw_your_key")
job = client.stego.hide(files=["secret.pdf", "cover.jpg"], password="Str0ng!Pass")
for result in job.results():
result.download(f"out/{result.name}")
Forensic analysis and conversion follow the same shape:
job = client.analyse.run(["photo.jpg"])
for item in job.results():
print(item.name, item.grade)
No business logic lives in the client — the server does all the work. The library's whole job is to turn the correct-but-tedious choreography into something you can read in one glance.
Four languages, one API
| Language | Package | Install |
|---|---|---|
| Python (3.10+) | snapwonders |
pip install snapwonders |
| JavaScript / TypeScript (Node 18+) | @snapwonders/sdk |
npm install @snapwonders/sdk |
| PHP (8.2+) | snapwonders/sdk |
composer require snapwonders/sdk |
| Go (1.21+) | — | go get github.com/snapWONDERS/snapWONDERS-SDK-Go |
All four are MIT-licensed and live on GitHub under github.com/snapWONDERS, with a matrix CI suite and a runnable example for hide/reveal, analyse, and convert in each repo. Python and JavaScript are hand-written reference implementations — Python covers both upload paths, and the rest use TUS throughout; all four follow the same contract.
If your language isn't on the list, the underlying OpenAPI spec is complete, and the interactive Swagger UI documents the raw HTTP contract in full — nothing is hidden behind the SDKs. Most other languages are a short step away with openapi-generator pointed at that spec: direct upload is a single ordinary POST, so a generated client can drive the whole flow without hand-written upload code. Hand-porting only comes back if you need TUS for files above 95 MB. If you'd like to see a language added to the official set, get in touch.
Getting started
You'll need a free snapWONDERS API key — sign up and generate one from your account settings. New keys start with sw_. Full quickstarts, a 60-second first call, and side-by-side examples for every language are on the developers hub.
The API itself is reachable over the clearnet, Tor and I2P — see browsing safely for the dark web addresses.
For the story behind why we built these — the developer feedback that drove it, and three real bugs found only by testing against production — Kenneth wrote about it: Why I Built Official SDKs for the snapWONDERS API.



