Live · Base mainnet/x402 · ERC-8004 · USDC

Pay an API call with 1 USDC.

Exactly 3 production x402 endpoints on Base mainnet. EIP-3009 signed. ERC-8004 agent card. One HTTP round trip, no API keys — your wallet is the auth.

Resources
3
Chain
Base · 8453
Settlement
USDC
Auth
Wallet signature

01 · Quickstart

Trigger a 402 in 30 seconds.

One curl produces an x402 challenge. Sign with EIP-3009, retry with the PAYMENT-SIGNATURE header, and the asset is delivered. No keys to provision, no portal to register on.

Request
curl -i -X POST https://app.suedeai.ai/create-music \
  -H "Content-Type: application/json" \
  -d '{"prompt":"lofi beat","durationSeconds":120}'
402 Payment Required
x402
HTTP/1.1 402 Payment Required
Content-Type: application/json
PAYMENT-REQUIRED: <base64-encoded x402 challenge>

{
  "x402Version": 2,
  "accepts": [{
    "scheme": "exact",
    "network": "eip155:8453",
    "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "amount": "500000",
    "payTo": "0x10FF767043A1723E0BB5B9207bC37D3442cC9E4F",
    "maxTimeoutSeconds": 300,
    "extra": { "name": "USD Coin", "version": "2" }
  }]
}
amount
500000 atomic USDC = $0.50 — settles on Base mainnet via the x402 facilitator.
asset
USDC on Base (0x833589…2913). Mainnet only; Sepolia available on request.
payTo
Suede payout wallet. Receives the EIP-3009-authorized transfer.

The challenge is also returned in the PAYMENT-REQUIRED header as a base64-encoded JSON payload, so SDKs can read it without parsing the body. The facilitator at x402.org/facilitator verifies and settles the signed authorization before the asset is generated — one HTTP round trip end-to-end.

02 · Python SDK

pip install suede-ai

The official Python SDK wraps the entire 402-challenge / EIP-3009 sign / retry loop. Three pay-per-call endpoints, settled in USDC on Base — no API keys, no subscriptions. Your agent code writes prompts, not typed-data signatures.

Install · PyPI
pip install suede-ai

Requires Python 3.10+. Pulls in httpx, eth-account, and pydantic. The first call returns 402; the SDK signs an EIP-3009 transferWithAuthorization for USDC on Base, replays with PAYMENT-SIGNATURE, and hands you the JSON — you never touch the typed data.

60-second quickstart
from suede_ai import SuedeClient

# Funded EOA on Base with USDC. Treat this like any 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

Endpoint signatures track the live manifest at /.well-known/x402.json. Prefer the raw HTTP handshake or another language? The next section has TypeScript, Python, and Go samples that run the same flow by hand.

03 · Integrate

Three steps. Three languages.

Discover endpoints, sign payment, call the route. Each sample handles the full 402-then-retry handshake against the live Suede x402 facilitator.

.ts
import { createWalletClient, http, parseSignature } from "viem";
import { base } from "viem/chains";
import { privateKeyToAccount } from "viem/accounts";

const USDC_BASE = "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913";
const account = privateKeyToAccount(process.env.PRIVATE_KEY as `0x${string}`);
const wallet = createWalletClient({ account, chain: base, transport: http() });

// 1. Discover live endpoints
const discovery = await fetch("https://app.suedeai.ai/.well-known/x402.json")
  .then((r) => r.json());

// 2. First call returns 402 with payment requirements
const unpaid = await fetch("https://app.suedeai.ai/create-music", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({ prompt: "lofi beat", durationSeconds: 120 }),
});
const challenge = await unpaid.json();
const req = challenge.accepts[0];

// 3. Sign EIP-3009 TransferWithAuthorization
const now = Math.floor(Date.now() / 1000);
const authorization = {
  from: account.address,
  to: req.payTo,
  value: BigInt(req.amount),
  validAfter: BigInt(Math.max(0, now - 600)),
  validBefore: BigInt(now + (req.maxTimeoutSeconds ?? 300)),
  nonce: `0x${crypto.randomUUID().replace(/-/g, "")}${"00".repeat(8)}` as `0x${string}`,
};
const signature = await wallet.signTypedData({
  account,
  domain: { name: "USD Coin", version: "2", chainId: 8453, verifyingContract: USDC_BASE },
  types: { TransferWithAuthorization: [
    { name: "from", type: "address" }, { name: "to", type: "address" },
    { name: "value", type: "uint256" }, { name: "validAfter", type: "uint256" },
    { name: "validBefore", type: "uint256" }, { name: "nonce", type: "bytes32" },
  ]},
  primaryType: "TransferWithAuthorization",
  message: authorization,
});

const paymentSignature = Buffer.from(JSON.stringify({
  x402Version: 2, scheme: req.scheme, network: req.network,
  payload: { authorization, signature },
})).toString("base64");

// 4. Retry with the canonical PAYMENT-SIGNATURE header; asset is delivered
const paid = await fetch("https://app.suedeai.ai/create-music", {
  method: "POST",
  headers: { "Content-Type": "application/json", "PAYMENT-SIGNATURE": paymentSignature },
  body: JSON.stringify({ prompt: "lofi beat", durationSeconds: 120 }),
});
const asset = await paid.json();
console.log(asset.url);

The TypeScript sample mirrors @/lib/x402-client.ts from the Suede app itself. Production wallets should add idempotency keys (X-Idempotency-Key), nonce reuse protection, and exponential backoff on facilitator timeouts.

04 · Well-known

Discovery endpoints.

Every route is enumerable from a small set of well-known JSON manifests. Point an agent runtime at any of these and it can self-serve.

ManifestPurposeLive
/.well-known/x402.jsonLive x402 discovery manifest for the 3 public paid offerings, with prices, networks, and asset addresses.Open ↗
/.well-known/agent-card.jsonERC-8004 agent card with identity, current creative capabilities, and payment links.Open ↗
/.well-known/agentic-commerce.jsonAgentic Commerce manifest — offerings, contact, and intent endpoints for buyer agents.Open ↗
/.well-known/virtuals-acp.jsonVirtuals ACP manifest. Pointer to the Producer by Suede Labs execution agent.Open ↗
/.well-known/ai-plugin.jsonOpenAI-compatible plugin manifest. Lets ChatGPT-style runtimes discover the OpenAPI schema.Open ↗
/llms.txtPlain-text crawl summary for LLM indexers. Endpoints, pricing, and protocol surface in one file.Open ↗

05 · Payment rails

Two ways to pay the same endpoint.

Every paid route settles over x402 by default. The same routes also accept Skyfire agent payment tokens, so a buyer agent already provisioned on Skyfire can pay without signing an EIP-3009 authorization itself.

x402Default rail

Sign an EIP-3009 authorization and retry. Settled by the x402 facilitator on Base mainnet.

Header
PAYMENT-SIGNATURE
Asset
USDC · Base 8453
Auth
Wallet signature
SkyfireAlso accepted

Send a Skyfire-issued token in place of an x402 payload. Suede verifies it against Skyfire's JWKS and charges it through Skyfire's token-charge API.

Header
PAYMENT-SIGNATURE
Tokens
pay+jwt · kya-pay+jwt
Verify
ES256 · Skyfire JWKS

Both rails are advertised per-resource in /.well-known/x402.json. Skyfire is a third-party payment rail Suede accepts; Suede Labs is not affiliated with or endorsed by Skyfire.

06 · Catalog

3 live endpoints.

All paid in USDC on Base mainnet. Prices range from $0.15 (image) to $4.99 (short video). Grouped by tier; click a row to inspect the live x402 challenge.

Music·1 endpoint

Video·1 endpoint

  • POST
    /agent/video

    Generate a short Suede media clip for product, campaign, and music workflows.

    $4.99USDC
    402 ↗

Image·1 endpoint

  • POST
    /agent/image

    Generate a still image from a text prompt — cover art, key frames, promo stills. Returns a hosted image URL.

    $0.15USDC
    402 ↗

07 · Don't want to integrate?

Hire the agent.

Producer by Suede Labs is a Virtuals ACP agent for agent-market audits, offer packaging, and growth research — paid by the deliverable.

Producer by Suede Labs

Producer is a live Virtuals ACP agent priced by deliverable. Its seven consulting offerings cover seller scoring, offer optimization, launch planning, market research, buyer discovery, and agent setup.

  • Agent Quick Score

    1-page markdown scorecard grading any Virtuals/Bazaar agent on positioning, offering quality, pricing, and traction.

    $3
  • ACP Performance Audit

    Deep audit of an ACP seller's offerings, pricing, SLAs, and jobs history. Per-offering grades plus a 30-day action plan.

    $19
  • ACP Offer Optimization

    Rewrite a single ACP offering for Bazaar discoverability. Primary version, two A/B variants, keyword list, expected-lift call.

    $39
  • x402 Promotion Plan

    14-day launch plan for an x402 endpoint or Bazaar listing. Day-by-day calendar, content pack, distribution targets, success metrics.

    $39
  • ACP Market Arbitrage Report

    Arbitrage memo across 3-5 Bazaar categories. Under/over-priced listings flagged plus three named arbitrage plays.

    $29
  • ACP Buyer Growth List

    20+ likely-buyer agents for a seller's offerings. Prospect table, top-5 sequencing, disqualifier list.

    $15
  • ACP Agent Setup

    End-to-end setup playbook for launching a new ACP agent. Positioning, 4-6 offerings, infra checklist, day 1-7 plan.

    $49
Hire Producer on Virtuals →