# Private voice cloning through x402 Generate English WAV speech using your approved private voice. Choose a tier when submitting: | Tier | Input | Completed recording price | |---|---|---| | `short` (default) | Up to 1,000 characters | 0.01 USDC on Base | | `long` | Up to 2,000 words AND 12,000 characters, whichever comes first | 0.05 USDC on Base | Long narration is delivered as one joined WAV. No subscription. Obtain an approved requester account and voice before submitting. The service uses reference-based synthesis. 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. Introductory pricing for early access. No subscription. Review the current price and service limits before authorising each new payment. ## 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. Uploads are checked for suitability. These checks do not establish speaker consent or guarantee voice quality; human approval is required. 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) for short, or `50000` (0.05 USDC) for long, matching the job tier, 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. Submitting work requires an authorised requester credential and an approved voice; anonymous discovery and payment quotes cannot enqueue generation. Admission depends on bounded shared queue, GPU and result-storage capacity. Long narration permits at most two queued or running jobs per requester. Short jobs have a 30-minute deadline; long jobs have a two-hour deadline. Long jobs take section turns, so queue position is not a guaranteed start time or strict arrival order. If generation fails or its 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. You can retain up to 16 active reference samples per requester; overall capacity is also bounded. These are concurrent storage limits, not daily usage quotas. Delete unused voices before enrolling more. Result storage is bounded. Uncollected results consume shared capacity and can prevent new admissions until results expire. These storage protections are not a per-requester daily allowance. Requester access can be withdrawn for misuse. 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 short job returns `409`. A running long job can be cancelled; completed checkpoints are removed and an in-flight section is discarded. DELETE `/v1/voices/{voice_id}` removes the reference and cancels associated unfinished jobs and available results. A running job may take up to 240 seconds 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 to 90 days: 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 to 64 basic characters) to describe your software; this is treated as an unverified claim, not proof of identity. ## Length and processing bounds Short recordings accept 1,000 characters and fit 85 seconds / 4 MiB, with a 30-minute queue deadline. Long recordings accept both a 2,000-word and 12,000-character maximum and fit 20 minutes / 64 MiB, with a two-hour job deadline. No individual unbroken token may exceed 480 characters. Words are counted by whitespace. Select `"tier":"long"` in POST `/v1/audio/jobs`; omit it or use `"tier":"short"` for existing short requests. The tier fixes the price for that job. Job status reports the price, completed sections, total sections and estimated remaining processing time. Estimates are not guarantees and exclude competing work/cooling waits. Long jobs save completed sections and share processing turns with other jobs. After an interruption, completed sections are retained; only an unfinished section may run again. Cancellation prevents later sections from being added; an active section may take time to stop. Available capacity varies. Admission considers pending work and output storage, not a daily job quota. Failed generation and expired queue work are not payable. Poll every 15 seconds and preserve the original job ID. For the Python client, add `--tier long` and explicitly `--pay` to authorise exactly 0.05 USDC. The default remains short / 0.01 USDC. Use the same output path and saved proof to recover. Never change tiers while recovering an existing job.