Skip to main content

snapWONDERS Python SDK

snapWONDERS — Expose what's hidden. Hide what's yours.

snapwonders — Python client for the snapWONDERS API

The official Python client for the snapWONDERS API: steganography, forensic media analysis, and format conversion. The client wraps the resumable TUS upload and the session → job → poll → download choreography so that a whole job is a couple of lines.

All the snapWONDERS API services are available over the Clearnet / Web and Dark Web Tor and I2P.

Status. Published — pip install snapwonders (0.1.2).

See it in action

Hide a secret image inside a cover — the stego output looks pixel-identical, but carries the hidden file, recoverable only with the password:

Secret (hidden inside) Cover (input) Stego output (carries the secret)
secret cover stego

The full walkthrough — steganography, forensic analysis (with a real graded result), and conversion — is in examples/WALKTHROUGH.md.

Installation and setup

snapWONDERS API key

You will need a snapWONDERS API key before you can get started:

  • Sign up and create an account at snapWONDERS sign-up. If you wish to create an account via Tor or I2P then you can do so by accessing snapWONDERS through the Tor or I2P portals. For the dark web links visit browsing safely.
  • Under your account settings, generate an API key. New keys start with sw_. It is sent as the X-Api-Key header on every request — keep it secret.

Install the package

pip install snapwonders

Quickstart

from snapwonders import Client

client = Client(api_key="sw_your_key_here")   # base_url defaults to https://snapwonders.com
print(client.status())                          # no key needed for status

# Hide a secret inside a cover image (the last file is the cover).
job = client.stego.hide(["secret.png", "cover.jpg"], password="Str0ng!Pass")
for result in job.results():
    result.download("out/")                     # "out/" is a directory — the server filename is kept

# Reveal it again.
job = client.stego.reveal("out/cover-share.avif", password="Str0ng!Pass")
job.results()[0].download("recovered/")

client.analyse (forensic analysis) and client.convert (media conversion) follow the same shape — one call in, results out:

# Forensic analysis — grade each file A–F, collect the overlay assets it produced.
job = client.analyse.run(["photo.jpg"], face_detection=True)
for item in job.results():
    print(item.filename, item.grade, item.face_count)
    for asset in item.assets:        # ELA map, face overlay, …
        asset.download("out/")

# Convert media — the image format key is `image_format` (jpeg/png/webp/avif/heic/jxl).
job = client.convert.run(["photo.png"], image_format="webp")
job.results()[0].download("out/")

Prefer to drive each stage yourself? The step-by-step surface is public too: create_session → upload(path, step=…) → wait_for_uploads() → start_job(**opts) → wait() → results().

Examples

Runnable end-to-end examples live in examples/ — steganography, forensic analysis, and conversion, each a self-contained script with a bundled sample image:

export SNAPWONDERS_API_KEY=sw_your_key_here
python examples/hide_and_reveal.py     # hide a file in an image, then reveal it
python examples/analyse.py             # grade an image A–F + download overlay assets
python examples/convert.py             # JPEG → WebP

See examples/WALKTHROUGH.md for the real input/output images and a live forensic-analysis JSON result, or examples/README.md for how to run them.

Errors

Every failure the SDK raises is a typed subclass of SnapwondersError, so you can branch on the kind of failure rather than inspecting HTTP status codes:

Exception Raised when
AuthError Missing, malformed, unknown, or revoked API key
ProRequiredError A Pro-only option was used on a free account
SessionExpiredError Not raised by the current API; kept for compatibility
RateLimitError Rate limited — carries retry_after when the server supplies it
MaintenanceError snapWONDERS is temporarily unavailable for maintenance — carries retry_after
JobFailedError A job finished as failed or terminated — carries the server's reason
UploadError A file could not be uploaded, by whichever method was used
TusUploadError A resumable-upload step failed (subclass of UploadError)
NetworkError The API could not be reached
ApiError Any other non-2xx response

Running the tests

pip install -e ".[dev]"
pytest                       # offline smoke tests — no API key required
# integration tests need SNAPWONDERS_TEST_API_KEY set against the dev API

Documentation

Useful documentation can be found at:

Contact

For security concerns

If you have spotted any security concerns then please reach out via contacting snapWONDERS and set the subject to "SECURITY CONCERNS" and provide the information about your concerns. If you wish to contact via Tor or I2P then you can do so by accessing snapWONDERS through the Tor or I2P portals. For the dark web links visit browsing safely.

For FAQ and questions

It may be that your question is already answered in the FAQ. Be sure to check the FAQ content first. Otherwise you may reach out via contacting snapWONDERS.

For contacting the author

Use this link to contact the author Kenneth Springer.

Why snapWONDERS exists

This project started with my son, Huey.

Huey lost his eyesight and was legally blind from the age of four. Years ago, in the car, while we were working on Hueyify together, he insisted the idea could be applied to digital media: stories embedded inside a photo, so that people with vision impairments could get the personal context, the memory and the feeling behind it. Hidden from everyone else. Only for the person it was meant for.

He was excited at the thought of it. I'll admit the technical difficulty put me off, and I was vocal about it. The look of disappointment kept returning to me, because to Huey it all made sense. We lost Huey at sixteen. I could never let go of that conversation.

snapWONDERS came first, to understand what digital media actually contains and who can see it. Vaultify came after, and it is the closest thing I've built to what Huey described. As of September 2026, snapWONDERS and Vaultify have processed more than six million media jobs.

The full story is at https://vaultify.snapwonders.com/our-story

May peace be with you,
Kenneth Springer

Licence

MIT — Copyright (c) 2026 Kenneth Springer @ snapWONDERS. See LICENSE.

Scope. The MIT licence covers this client library only. It grants no rights in the snapWONDERS API, service, data, models, or algorithms it communicates with — these are proprietary and remain the property of Kenneth Springer @ snapWONDERS. This library only sends HTTP requests to the API; it contains none of its implementation. Using the API requires a valid API key and is governed by the snapWONDERS Terms of Service.

Metadata

Release files for snapwonders 0.1.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for snapwonders 0.1.4
File Size Uploaded Provenance
snapwonders-0.1.4.tar.gz 6.9 MB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for snapwonders 0.1.4
File Interpreter ABI Platform
snapwonders-0.1.4-py3-none-any.whl Python 3 none any Details

Total release size: 7.0 MB

Release files / snapwonders-0.1.4.tar.gz

Download URL snapwonders-0.1.4.tar.gz
Size 6.9 MB
Tags Source
SHA-256 checksum
How to use checksums
816152198ae55b1d84a68468339ad77df027ed87cc5d47a4708ffedd4ed4778c
BLAKE2b-256 checksum
How to use checksums
9ceb206d7bf3cb0587f17649e6280de803cc2049cc5a402fd8722ae85667ee63
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.

Transparency log

Release files / snapwonders-0.1.4-py3-none-any.whl

Download URL snapwonders-0.1.4-py3-none-any.whl
Size 29.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a2a826ed9461bbcc693b70b62a7996367449cdd25c14756ede9ed94a414d8789
BLAKE2b-256 checksum
How to use checksums
0dbf38e178f3e30cdb5324e5d1242f38a9af30afed3fe445f54f6a0d7f0dce8a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.

Transparency log

Security for snapwonders 0.1.4

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for snapwonders-0.1.4.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page