# Catalogue narration — no account needed Choose a voice → get a free quote → sign locally → receive an MP3. Introductory price: **0.005 USDC on Base per recording**, up to **1,000 characters**. Output: MP3, at most 120 seconds / 2 MiB. English; normal speed. No custom reference, requester account or human approval is needed. For up to 2,000 words AND 12,000 characters with a private voice, use https://api.neurodynamic.tech/cloning instead. ## Discover and choose GET https://api.neurodynamic.tech/.well-known/ai-services.json GET https://api.neurodynamic.tech/v1/audio/voices The catalogue provides stable voice IDs, names, accent, pitch/pace estimates, human delivery descriptions and free samples. Hazel, Bella, Emma, Alice, George, Michael and Ben are available. The catalogue's metadata is guidance, not a guarantee of a particular emotion or accent on every passage. ## Free first request ```bash curl -i -X POST https://api.neurodynamic.tech/v1/audio/speech ``` HTTP 402 describes the exact price, recipient, asset and network. This request does not generate audio or charge money. ## Generate POST https://api.neurodynamic.tech/v1/audio/speech Content-Type: application/json PAYMENT-SIGNATURE: your locally signed x402 v2 proof ```json {"input":"Welcome. Here is your spoken update.","voice":"bf_emma"} ``` Optional fixed fields: model="kokoro", response_format="mp3", speed=1, stream=false. The default voice is Hazel (af_heart). Do not upload a file or private voice ID to this endpoint. Validate the quote before signing: exact scheme, Base eip155:8453, USDC asset 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913, amount 5000 base units, recipient 0xa369aC3412360206DB63507b190E691c0C5B9F3e and resource https://api.neurodynamic.tech/v1/audio/speech. This endpoint accepts EOA EIP-3009 authorisations; smart-account and Permit2 signatures are not advertised. Keep your wallet key local. The payment is verified before audio creation and settled only after successful generation. Invalid input and failed generation do not settle. A busy response has Retry-After; reuse the same proof. There is no daily job quota. ## Save and recover HTTP 200 returns MP3 bytes and a PAYMENT-RESPONSE receipt. Save your input, exact signed proof, output and receipt privately. For one hour, an identical input and proof can retrieve the recording again; X-Payment-Replayed: true means no second settlement. After an uncertain timeout or HTTP 409, do not create a fresh payment. Retry the exact saved request/proof. If the service reports uncertainty or expired recovery, contact https://neurodynamic.tech/contact with the transaction hash and payer address. Never send your private key or signed authorisation to support. An expired, unused proof requires a fresh quote; first resolve whether its earlier request ran. Text is held in memory during processing. Audio is retained privately for one hour for recovery, except uncertain settlement audio is retained until resolved. Payment receipts are retained separately. Operational logs use masked identifiers and contain no input text/audio. Cloudflare handles HTTPS; Coinbase handles payment verification and settlement. Chain records are public. ## Reusable client Download https://api.neurodynamic.tech/v1/audio/narration/client.py and inspect it. With Python packages httpx, eth-account and x402 installed: ```bash python client.py --text-file message.txt --voice bf_emma --output narration.mp3 ``` Without --pay this only validates a free quote. Set NARRATION_BUYER_KEY_FILE to a private file containing your wallet key and add --pay to authorise the 0.005 USDC purchase. The client saves the proof before sending; rerunning the same command reuses it. Keep its .payment.json file private. ## Attribution The catalogue is generated using hexgrad's Apache-2.0 licensed Kokoro model. https://huggingface.co/hexgrad/Kokoro-82M Names are service labels, not claims about real people. Do not use generated speech deceptively or claim a real person said it. ## Optional discovery label Send X-Discovery-Source with bazaar, x402scan, x402-list, x402-bazaar, website, github or direct to tell us where you found the service. This is optional, unverified metadata, not authentication. Omit it if unknown.