Python SDK for the Suede AI x402 surface (17 pay-per-call endpoints, USDC on Base)
Project description
suede-ai
Python SDK for the Suede AI x402 surface — 17 pay-per-call endpoints settled in USDC on Base. No API keys. No subscriptions. Just sign an EIP-3009 authorization and call the endpoint.
The SDK wraps the 402-challenge / sign / retry loop so your agent code spends its time writing creative prompts, not encoding typed data.
Status: Alpha scaffold. Endpoint signatures track the live manifest at https://app.suedeai.ai/.well-known/x402.json. Once the OpenAPI spec covers all 17 endpoints, codegen will finish typing the request/response models.
Install
pip install suede-ai
Requires Python 3.10+. Pulls in httpx, eth-account, and pydantic.
60-second quickstart
from suede_ai import SuedeClient
# Funded EOA on Base with USDC. Treat this like any other secret.
PRIVATE_KEY = "0x..."
with SuedeClient(wallet_private_key=PRIVATE_KEY) as suede:
track = suede.create_music(
prompt="lo-fi rainy afternoon, vinyl crackle, soft piano",
duration_seconds=30,
)
print(track["assetUrl"]) # https://cdn.suedeai.xyz/audio/trk_...mp3
print(track["provenance"]) # {"fingerprint": "0x..."} — on-chain attestation
The first call returns 402 with the x402 challenge. The SDK signs an EIP-3009 transferWithAuthorization for USDC on Base, replays with X-PAYMENT, and returns the JSON body. You never touch the typed data.
The 17 endpoints
| Method | Endpoint | Price (USDC) | What it does |
|---|---|---|---|
create_music |
POST /create-music |
0.20 | Rights-aware music generation |
agent_generate |
POST /agent/generate |
0.20 | Agent-facing music output (same payload) |
agent_video |
POST /agent/video |
1.50 | Short music-video clip generation |
extend |
POST /v1/extend |
0.40 | Continue an existing Suede track |
cover |
POST /v1/cover |
0.40 | Stylistic re-imagining of a track |
voice_cover |
POST /v1/vox |
0.40 | Replace lead vocal with a Suede voice |
continue_track |
POST /v1/continue |
0.40 | Extend an uploaded audio file |
stems_pro |
POST /v1/stems-pro |
0.40 | 4-stem split: vocals / drums / bass / other |
stems_basic |
POST /v1/stems |
0.20 | 2-stem split: vocals + instrumental |
vox |
POST /v1/acapella |
0.20 | Isolate the vocal stem |
midi |
POST /v1/midi |
0.10 | Transcribe audio to MIDI |
wav_master |
POST /v1/mastering |
0.10 | High-quality WAV master |
lyric_sync |
POST /v1/lyric-sync |
0.10 | Timestamped lyrics for a track |
lyrics |
POST /v1/lyrics |
0.04 | Generate fresh song lyrics from a prompt |
style_coach |
POST /v1/style-coach |
0.02 | Expand short tags into a prompt-ready style brief |
rights_lookup |
GET /v1/rights/{assetHash} |
0.005 | Suede Registry attestation lookup (owner / IP / NFT) |
analyze |
POST /v1/analyze |
0.003 | BPM / key / mode / energy / danceability |
Prices are sourced from the live manifest at the time of writing and are enforced server-side.
How payment works
- Client calls
POST /create-music. - Server returns 402 Payment Required with a JSON
acceptsarray. Each entry declares scheme (exact), network (eip155:8453), asset (USDC on Base),payToaddress, andmaxAmountRequired. - SDK builds an EIP-3009
TransferWithAuthorizationtyped message and signs it with the configured wallet. - SDK base64-encodes the payment payload and replays the original request with the
X-PAYMENTheader. - Suede's facilitator settles on-chain; the response body returns asset URL + on-chain provenance.
You can inspect the live manifest yourself:
curl https://app.suedeai.ai/.well-known/x402.json | jq
Advanced
Reuse an httpx.Client
import httpx
from suede_ai import SuedeClient
http = httpx.Client(http2=True, timeout=120.0)
suede = SuedeClient(wallet_private_key=PRIVATE_KEY, http_client=http)
Direct call to any endpoint
result = suede.request("POST", "/v1/style-coach", json={"tags": "lofi, rainy"})
Inspect the live manifest
manifest = suede.manifest() # free — no payment required
Roadmap
- Async client (
AsyncSuedeClient) once OpenAPI lands - Pydantic response models per endpoint
examples/folder: LangChain tool wrappers, CrewAI tasks, agentcash adapter- PyPI publish
See the 0.1.0 release checklist.
License
MIT. See LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file suede_ai-0.1.0.tar.gz.
File metadata
- Download URL: suede_ai-0.1.0.tar.gz
- Upload date:
- Size: 11.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8845c74b2e43753f156f43af2dbb063fef0323a5b38ad4ed414b682e0b6cacce
|
|
| MD5 |
5192181b4c74b366f5e8d9349551fb48
|
|
| BLAKE2b-256 |
4f66ede8d77e47686977ed4bcf664761499c7e3c65c7ad4e9113536c5c4b26e8
|
Provenance
The following attestation bundles were made for suede_ai-0.1.0.tar.gz:
Publisher:
publish.yml on Suede-AI/suede-sdk-python
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
suede_ai-0.1.0.tar.gz -
Subject digest:
8845c74b2e43753f156f43af2dbb063fef0323a5b38ad4ed414b682e0b6cacce - Sigstore transparency entry: 1729692054
- Sigstore integration time:
-
Permalink:
Suede-AI/suede-sdk-python@b836ad9f23b736310611a397c8822d7b3f48906c -
Branch / Tag:
refs/heads/main - Owner: https://github.com/Suede-AI
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@b836ad9f23b736310611a397c8822d7b3f48906c -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file suede_ai-0.1.0-py3-none-any.whl.
File metadata
- Download URL: suede_ai-0.1.0-py3-none-any.whl
- Upload date:
- Size: 10.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d21a3d23730b7c2498221259f8bd2cf12b44d9518bee0590b58b26ba64cdb64a
|
|
| MD5 |
1c022eecaee358a186dd00523d087d8f
|
|
| BLAKE2b-256 |
a6d46a35d5057f0a550c9f385877985453b64686ad826f1efabdb7344430bbaf
|
Provenance
The following attestation bundles were made for suede_ai-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on Suede-AI/suede-sdk-python
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
suede_ai-0.1.0-py3-none-any.whl -
Subject digest:
d21a3d23730b7c2498221259f8bd2cf12b44d9518bee0590b58b26ba64cdb64a - Sigstore transparency entry: 1729692223
- Sigstore integration time:
-
Permalink:
Suede-AI/suede-sdk-python@b836ad9f23b736310611a397c8822d7b3f48906c -
Branch / Tag:
refs/heads/main - Owner: https://github.com/Suede-AI
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@b836ad9f23b736310611a397c8822d7b3f48906c -
Trigger Event:
workflow_dispatch
-
Statement type: