# Transcript+ (by Seenly) > Send an audio or video file (URL or upload). Get back a speaker-labelled (diarized) transcript, a structured summary (title, summary, key points, chapters, action items, topics) and SRT + WebVTT captions. Built for AI agents; pay per audio minute with x402. ## Pricing - $0.01 USDC per audio minute via x402 on Base mainnet, minimum 1 minute. - Billed per started audio minute (1 s grace), minimum 1 minute. Example: a 4 min 9 s file costs 5 x $0.01. - Status: LIVE, real USDC - x402 v2, scheme exact, Base mainnet (eip155:8453), USDC 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913, 10000 base units per minute, payTo 0xeE6239F3E17bEBe5e89F21F29D74D68CAa0d78CE. Coinbase CDP (gas sponsored; payer needs USDC only, no ETH). ## How to pay 1. POST your request without payment. The service fetches and measures the file and answers HTTP 402 with a PAYMENT-REQUIRED header (x402 v2) whose amount is the exact total for your file, plus a JSON body with "quote" {durationSec, billableMinutes, totalUsd, amount}. 2. Sign it with an x402 client (e.g. @x402/fetch wrapFetchWithPayment) and retry the SAME request with PAYMENT-SIGNATURE. The payer needs USDC only (no ETH). 3. The 200 response carries PAYMENT-RESPONSE (settlement tx hash). Failed jobs are not charged: x402 settles only after a successful response. - Use maxMinutes to cap spend: longer files are refused (422) before any payment. ## Use it - Endpoint: POST https://seenly-transcript-plus.vercel.app/api/transcribe - JSON: {"url": "https://.../file.mp3"} or {"file": {"base64": "...", "filename": "a.m4a"}} - Multipart: field "file" plus option fields. Raw: Content-Type audio/* or video/*, options in the query string. - Options: diarize (true), summary (true), language ("en-US"; auto if omitted), style (clean|verbatim), keywords (array of names/terms), maxMinutes, includeWords (false), format (json|srt|vtt|text) - Formats: MP3, M4A/MP4/MOV, WAV, FLAC, OGG/Opus, WebM/MKV, AAC, AIFF, AMR, CAF, WMA. Video files: the audio track is used. - Limits: 60 min per file, URL ≤ 100 MB, upload ≤ 4 MB, 20 unpaid / 60 paid requests per minute per IP. - URL must be a direct, public http(s) link (ports 80/443). Web pages, YouTube/Spotify links and private/internal addresses are refused. - Response (JSON): durationSec, language, billing, diarization, speakers[{id,talkTimeSec,turns}], text, segments[{speaker,start,end,text}], summary{title,summary,keyPoints,chapters[{start,startClock,title}],actionItems,topics}, captions{srt,vtt}, warnings[] - OpenAPI: https://seenly-transcript-plus.vercel.app/openapi.json · Kit manifest: https://seenly-transcript-plus.vercel.app/kit.json · A2A card: https://seenly-transcript-plus.vercel.app/.well-known/agent-card.json (free, quote-only) · x402 manifest: https://seenly-transcript-plus.vercel.app/.well-known/x402 - Sample output: https://seenly-transcript-plus.vercel.app/samples/transcript.json (input: https://archive.org/download/doctordolittledramatic_1511_librivox/doctordolittle_01_lofting_64kb.mp3, a public-domain LibriVox recording) ## Example curl -s https://seenly-transcript-plus.vercel.app/api/transcribe -H 'content-type: application/json' -d '{"url":"https://archive.org/download/doctordolittledramatic_1511_librivox/doctordolittle_01_lofting_64kb.mp3","maxMinutes":10}' -i # → 402 with the quote ## Rules - Only send recordings you have the right to process; get consent from recorded people where the law requires it. - Media and results are not stored: temp files are deleted when the response is sent. Speech and summary models run through Vercel AI Gateway with zero data retention enforced. - The summary only uses what is in the transcript; the transcript is treated as data, not instructions. ## Contact hello@agentropolis.io