# Transcript Pack > Transcript Pack by Rowan Vale turns audio into a transcript (.txt), WebVTT captions (.vtt) and AI-generated show notes (.md). Pay per pack with x402 (USDC on Base, network eip155:8453) or Lightning. No account, no API key. ## Pricing (x402, one-time job token) - POST https://transcript-pack.toolschemaforge.workers.dev/api/x402/t10: $0.10 USDC, audio up to 10 min - POST https://transcript-pack.toolschemaforge.workers.dev/api/x402/t30: $0.25 USDC, audio up to 30 min - POST https://transcript-pack.toolschemaforge.workers.dev/api/x402/t60: $0.45 USDC, audio up to 60 min An unpaid request returns HTTP 402 with the payment requirements in the PAYMENT-REQUIRED header (also mirrored in the JSON body). Pay with any x402 client and retry; the response is {"token":"..."}. GET works the same as POST. payTo: 0x7a3C00Ef0969378A3E74455cde3Dc87C0f016dfa ## Chunk format - WAV, PCM 16-bit, mono, 16 kHz (16000 Hz), standard 44-byte header - At most 60 s per chunk and at most 1950000 bytes (1.95 MB) - chunkCount must be between ceil(durationSec/60) and ceil(durationSec/50)+1; chunks are numbered from 0 - The Worker does not decode MP3/AAC: decode and resample on your side (e.g. ffmpeg -i in.mp3 -ac 1 -ar 16000 -c:a pcm_s16le -f segment -segment_time 59 chunk%03d.wav) ## Flow - 1) Buy a one-time token: POST /api/x402/t10 ($0.10, audio up to 10 min), /api/x402/t30 ($0.25, up to 30 min) or /api/x402/t60 ($0.45, up to 60 min) with an empty JSON body {} and any x402 client (USDC on Base). The paid response is {"token":"..."}. - 2) Decode your audio yourself and split it into chunks: 16 kHz, mono, 16-bit PCM WAV (44-byte header), at most 60 s and at most 1,950,000 bytes each. chunkCount must be between ceil(durationSec/60) and ceil(durationSec/50)+1 (aim for ~60 s chunks). - 3) POST /api/job with {"token":"...","durationSec":,"chunkCount":}. Returns {"jobId":"..."}. The token is used up once a job starts. - 4) For i = 0..n-1: POST /api/job/{jobId}/chunk/{i} with Content-Type audio/wav and the WAV bytes as the body (Content-Length required). Returns {"index":i,"segments":k,"ms":t}. - 5) POST /api/job/{jobId}/finish. Then GET /api/job/{jobId}/transcript.txt, /captions.vtt and /shownotes.md. GET /api/job/{jobId} shows status. Human result page: /result.html?job={jobId}. ## Example ``` # 1. token (x402 client pays the 402) POST https://transcript-pack.toolschemaforge.workers.dev/api/x402/t10 {} -> {"token":""} # 2. start a job for 125.4 s of audio in 3 chunks curl -X POST https://transcript-pack.toolschemaforge.workers.dev/api/job -H 'content-type: application/json' -d '{"token":"","durationSec":125.4,"chunkCount":3}' # 3. upload each chunk curl -X POST https://transcript-pack.toolschemaforge.workers.dev/api/job//chunk/0 -H 'content-type: audio/wav' --data-binary @chunk000.wav # 4. finish, then download curl -X POST https://transcript-pack.toolschemaforge.workers.dev/api/job//finish curl https://transcript-pack.toolschemaforge.workers.dev/api/job//transcript.txt curl https://transcript-pack.toolschemaforge.workers.dev/api/job//captions.vtt curl https://transcript-pack.toolschemaforge.workers.dev/api/job//shownotes.md ``` ## Machine-readable - https://transcript-pack.toolschemaforge.workers.dev/openapi.json: OpenAPI 3.1 with x-payment-info - https://transcript-pack.toolschemaforge.workers.dev/.well-known/x402: x402 resource list - https://transcript-pack.toolschemaforge.workers.dev/api/config: tiers and limits - Web app for humans: https://transcript-pack.toolschemaforge.workers.dev/ Outputs are AI-generated and may contain errors.