Tools
sumvid for agents & developers — pay-per-call, no signup.
Sumvid is also an HTTP API and an MCP server: two endpoints that summarize a YouTube video or fetch its transcript, built for agents and developers. Every call is pay-per-call with no account or API key — an HTTP 402 response quotes the price, and a USDC micropayment on Base mainnet settles it. Failed calls are never charged; payment only settles on a successful response.
01 — HTTP API
Endpoints (x402)
| Endpoint | What it does |
|---|---|
| POST https://api.sumvid.app/v1/summarize | AI summary of a YouTube video |
| POST https://api.sumvid.app/v1/transcript | Full transcript of a YouTube video |
Request body for both: {"url": "<any YouTube URL>", "language": "en"} (language optional).
Per-call prices aren't quoted here — they're set server-side and can change, so the machine-readable x402 discovery manifest is the source of truth for current pricing, network, and payTo.
What you get back
A successful call returns JSON right in the response — no job to poll. The summary is Markdown; the transcript is plain text:
// POST /v1/summarize → 200
{
"youtube_video_id": "dQw4w9WgXcQ",
"summary": "## Overview\nRick Astley's...", // Markdown, truncated here
"model": "claude-haiku-4-5-20251001",
"cached": false, // true = served from the shared cache
"language_code": "en",
"title": "Never Gonna Give You Up", // metadata may be null
"channel": "Rick Astley",
"thumbnail_url": "https://i.ytimg.com/...",
"duration_seconds": 213
}
// POST /v1/transcript → 200
{
"youtube_video_id": "dQw4w9WgXcQ",
"transcript": "We're no strangers to love...", // plain text, truncated here
"language_code": "en",
"title": "Never Gonna Give You Up", // metadata may be null
"channel": "Rick Astley",
"thumbnail_url": "https://i.ytimg.com/...",
"duration_seconds": 213
}Get a price quote — no wallet needed
Calling without payment returns the 402 quote, so you can discover pricing before holding any USDC:
curl -i -X POST https://api.sumvid.app/v1/summarize \
-H 'content-type: application/json' \
-d '{"url": "https://youtu.be/dQw4w9WgXcQ"}'
# → HTTP 402 with a PAYMENT-REQUIRED header: the price quote
# (network eip155:8453, USDC on Base, payTo address, amount)Paying a call
To actually pay, use any x402 client library (e.g. the x402 Python or JS package) — it reads the 402 quote, signs an EIP-3009 USDC authorization with your wallet key, and retries with a PAYMENT-SIGNATURE header. Prereqs: a wallet holding USDC on Base mainnet — a fraction of a dollar is plenty, and gas is paid by the facilitator, so no ETH needed. With the JS x402-fetch wrapper it's wrap fetch, point it at the endpoint, done:
import { wrapFetchWithPayment } from "x402-fetch";
import { privateKeyToAccount } from "viem/accounts";
const account = privateKeyToAccount(process.env.WALLET_KEY);
const fetchWithPay = wrapFetchWithPayment(fetch, account);
const res = await fetchWithPay("https://api.sumvid.app/v1/summarize", {
method: "POST",
headers: { "content-type": "application/json" },
body: JSON.stringify({ url: "https://youtu.be/dQw4w9WgXcQ" }),
});
const { summary } = await res.json(); // Markdown summary textMachine-readable service manifest: https://api.sumvid.app/.well-known/x402.json (x402 discovery format — agents can find prices, network, and payTo there automatically).
02 — MCP server
Native MCP tools
The same two capabilities are native MCP tools for agents: summarize_youtube_video and get_youtube_transcript, served at https://mcp.sumvid.app over streamable-http transport — x402-paid, same no-signup model.
Add it to any MCP-capable client:
{
"mcpServers": {
"sumvid": {
"url": "https://mcp.sumvid.app",
"transport": "streamable-http"
}
}
}Building an agent or integration against this API? Read the full YouTube summary API guide for endpoint details, the x402 payment flow, and MCP setup.
FAQ
Common questions
- Why x402 instead of API keys?
- Agents can't do signup flows. With x402, a signed USDC payment is the auth — pay-per-call means zero onboarding: no account, no key to provision, no dashboard to click through.
- What happens if a call fails?
- You are not charged. Payment only settles on a successful response — a video with no captions or a bad URL returns an HTTP error and the payment never settles.
- Which errors can I get?
- 400 for a bad URL, 422 when no captions are available for the video, 502 for an upstream hiccup. None of these settle payment.
- Are repeat requests fast?
- Yes. Results are cached, so repeat requests for the same video return fast.