# Private voice cloning through x402 Generate English WAV speech using your approved private voice: **0.01 USDC on Base per completed recording**, up to 300 characters. The service uses Chatterbox. Similarity and accent retention vary. The `exaggeration` control accepts 0.3–0.7 (default 0.3); it is not a precise pitch or named-emotion control. ## Discover and connect Agents can arrive through a service link, web search or a Bazaar search tool. A capabilities file does not announce itself to agents. Bazaar indexing is verified separately after a successful public payment; a hosted endpoint alone does not establish a listing. - Service instructions: https://api.neurodynamic.tech/cloning - Machine-readable capabilities: https://api.neurodynamic.tech/v1/audio/cloning/capabilities - OpenAPI: https://api.neurodynamic.tech/v1/audio/cloning/openapi.json - Python requester example: https://api.neurodynamic.tech/v1/audio/cloning/client.py - Onboarding and support: https://neurodynamic.tech/contact Contact the operator to request a requester account and arrange voice authorization review. This is an approved-requester pilot. The operator issues a private bearer credential; payment alone does not create an account or approve a voice. Keep this credential on your own server. Never send a wallet private key or payment signature to support. ## Prepare and enrol a reference Supply **mono 24,000 Hz, 16-bit PCM WAV**, 5–20 seconds, at most 1 MiB. Prefer 10–20 seconds of clear, natural speech from one speaker in a quiet room, without music, reverberation, overlapping speakers or effects. Do not pad a short clip with silence. Automatic checks cover format, duration, signal level and clipping. They do not establish speaker identity, permission, speech content, noise quality or accent fidelity. POST `/v1/voices` with `Authorization: Bearer YOUR_TOKEN`, a unique `Idempotency-Key`, and JSON: ```json { "name": "My private narrator", "sample_wav_base64": "BASE64_OF_YOUR_WAV", "authorization": { "basis": "own_voice", "speaker_permission": true, "recording_rights": true, "no_deceptive_use": true, "terms_version": "2026-09-09.1", "evidence_reference": "Description or private reference to the permission evidence agreed with the operator" } } ``` `basis` is `own_voice`, `licensed_voice` or `synthetic_voice`. These assertions must be true. The requester must have the rights to the recording and the speaker's permission for the proposed cloning and use. Do not impersonate someone deceptively, commit fraud, or submit a sample without the required authorization. An agent must ask its user when that evidence or permission is missing; it cannot invent consent or tick these fields on somebody else's behalf. These conditions do not claim to eliminate the service operator's legal obligations. The response is `202`, with an opaque voice ID and `pending_review`. GET `/v1/voices/{voice_id}` to check status. Stop and arrange human review when `human_action_required` is true; do not repeatedly re-upload or submit generation jobs. A successful upload is not approval. Approved references expire after 30 days. Pending references expire after 7 days. A fresh enrolment and review is needed after expiry. Voice IDs and reference recordings are private to the authenticated requester. There is no public list of customer voices and no endpoint to download their reference audio. ## Submit, wait, then pay 1. POST `/v1/audio/jobs` with your bearer credential, `Idempotency-Key`, and `{"voice_id":"voice_...","text":"Your text","exaggeration":0.3}`. This creates a job without a payment signature. 2. Save the job ID. Poll GET `/v1/audio/jobs/{job_id}` no faster than every 15 seconds. States are `queued`, `running`, `ready`, `failed`, `expired` or `cancelled`. Wait until `ready` before signing a payment. 3. POST `/v1/audio/cloning/result` with the bearer credential and `{"job_id":"job_..."}`. A ready job returns `402` and the x402 `PAYMENT-REQUIRED` header. A queued/running job returns `202` without requesting payment. 4. Check the challenge: `exact`, Base `eip155:8453`, amount `10000` (0.01 USDC), token `0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913`, recipient `0xa369aC3412360206DB63507b190E691c0C5B9F3e`, resource `https://api.neurodynamic.tech/v1/audio/cloning/result`. 5. Sign locally with an x402-compatible wallet. Save the exact signature and job ID privately **before** sending. Repeat the collection POST with `PAYMENT-SIGNATURE`. A successful response contains WAV audio and a `PAYMENT-RESPONSE` receipt. Save both. The collection endpoint returns a generic unpaid challenge to unauthenticated discovery probes, without exposing a job. Actually collecting audio requires both requester authentication and the correct ready job. Paying cannot bypass voice authorization. ## Capacity and recovery There is no daily or lifetime cloning job quota. One generation runs at a time; up to eight more jobs can wait in FIFO order. Admission checks the single GPU's free memory and activity and the Whisper service. Jobs can wait up to 20 minutes; there is no guaranteed start time. The check is not a host-wide GPU reservation. If generation fails or its queue deadline passes, no payment is taken. Full queues return `429` with `Retry-After`; storage pressure or dependency problems return `503`. Respect these responses and retry with the same idempotency key and body. Reference storage allows 64 active samples overall and 16 per requester. These are concurrent storage limits, not daily usage quotas. Delete unused voices before enrolling more. Result storage is bounded. Repeated abandoned jobs can prevent new admissions until results expire. A completed unpaid result lasts one hour. A confirmed payment renews its download window for one hour. Retry the **same job and exact saved payment signature** to retrieve identical audio without paying twice, including after a restart or signature expiry. Never reuse a signature for another job. `409` with an uncertain-payment message means stop and contact support with the job ID, payer address and transaction hash if known. Do not create a replacement payment. The operator checks chain evidence before resolving uncertainty. `410` means the result is no longer available; an old payment cannot be charged again. Refund decisions require operator review. DELETE `/v1/audio/jobs/{job_id}` cancels a queued job or deletes an available result. A running job returns `409`. DELETE `/v1/voices/{voice_id}` removes the reference and cancels associated unfinished jobs and available results. A running generator may take up to its 120-second timeout to release its temporary sample, but its result will be discarded. Deletion during an uncertain or in-flight payment returns `409` until the payment is resolved. ## Data handling Reference audio, authorization evidence and display names are stored on this server until deletion or expiry. Each job stores its text and a working reference until completion, failure, cancellation or its queue deadline. Generated audio is retained for the download window above; an uncertain payment preserves its output for operator recovery. The service keeps idempotency fingerprints and payment records without text or audio to prevent duplicate work and charges. Receipt backups exclude recordings, text, consent evidence, signatures and wallet keys. Blockchain payments are public. Cloudflare processes public HTTPS requests and Coinbase processes payments. Do not put secrets or unnecessary personal details in voice names, text or evidence descriptions. The Python example requires `httpx`, `x402[evm]` and `eth-account`. It enrols only with an authorization file you supply, preserves job/payment recovery files, validates the fixed price and receiver, and signs only with the explicit `--pay` option after the job is ready. Its files containing text or signatures must remain private. The requesting machine needs no GPU or speech model. ## Operational metadata We keep private, bounded request metadata for up to90days: time, service, outcome, duration, software family and keyed masked connection/account/wallet identifiers. No raw IP, audio, text, credentials or payment signatures are stored in these engagement logs. Detail can expire earlier at capacity; payment receipts remain for accounting. Database backups have separate retention. You may optionally send `X-Client-Name` (up to64 basic characters) to describe your software; this is treated as an unverified claim, not proof of identity.