Fly Labs
Agentic Market · Live on Base mainnet

YouTube data your agent can actually trust.

Verbatim transcripts ($0.03) and engagement data ($0.02). Any public video. Any language. Versioned schemas with transparent cache metadata. Your agent pays in USDC on Base — no keys, no signup, no dashboard.

Verbatim, not summarized

No LLM rewrites. Captions extracted from YouTube when they exist, audio transcribed via Whisper otherwise. The transcript is what was actually said.

Built for machines

Versioned schema (v1.0). SI units (seconds, not hh:mm:ss strings). ISO-8601 dates. Separate blocks for transcript, paragraphs, chapters, metadata. Your parser never changes.

Micropayments, no accounts

x402 on Base. Your agent pays per call, nothing else. No monthly minimums, no rate limits tied to a human, no dashboard to babysit.

Transparent cache

Every response tells you cache.hit, cachedAt, and ageSec. Decide client-side whether to trust the cached copy or pay for a fresh fetch — no guessing.

OpenAPI 3.1 spec

Pull the spec at /api/agents/openapi.json and auto-generate a typed client in Python, TypeScript, Go, or anything else. Zero integration friction.

Honest failure modes

Typed error codes: invalid_input, video_unavailable, transcription_failed, worker_unavailable. Retry logic on your side stays simple.

Live endpoints

More are shipping. Each one follows the same pattern: POST, pay, parse.

POST /api/agents/transcribe Live$0.03 / call

YouTube transcripts. Any public video, any language, any length. Verbatim captions when YouTube has them, Whisper-transcribed audio otherwise. Returns a stable JSON payload with time-indexed paragraphs, creator chapters, and canonical metadata. Cached forever — repeat lookups cost the same and return instantly.

Schema: v1.0 stableNetwork: Base mainnetAsset: USDCChain ID: eip155:8453
Request
curl -X POST https://flylabs.fun/api/agents/transcribe \
  -H "Content-Type: application/json" \
  -d '{ "url": "https://youtube.com/watch?v=dQw4w9WgXcQ" }'

First call gets a 402 with payment instructions. An x402-aware agent SDK (like @x402/fetch or the official Coinbase agent SDK) handles the retry automatically.

Response (200)
{
  "schema_version": "1.0",
  "videoId": "dQw4w9WgXcQ",
  "url": "https://youtube.com/watch?v=dQw4w9WgXcQ",
  "source": "youtube_subs" | "groq_whisper" | "cache",
  "servedAt": "2026-04-20T23:47:02.118Z",
  "cache": {
    "hit": true,
    "cachedAt": "2026-04-12T09:14:22.880Z",
    "ageSec": 743019
  },
  "transcript": {
    "text": "...",
    "language": "en",
    "wordCount": 212,
    "durationSec": 213
  },
  "paragraphs": [
    { "startSec": 0, "endSec": 72, "timestamp": "0:00", "text": "..." }
  ],
  "paragraphCount": 4,
  "chapters": [
    { "startSec": 0, "timestamp": "0:00", "title": "Intro" }
  ],
  "chapterCount": 1,
  "metadata": {
    "title": "...",
    "channel": "...",
    "durationSec": 213,
    "publishedAt": "2009-10-24T00:00:00.000Z",
    "viewCount": 1700000000
  }
}
POST /api/agents/engagement Live$0.02 / call

YouTube engagement data. Views, likes, comments, subscriber count, derived ratios, a composite engagement score, plus full channel and video context (tags, categories, description, thumbnail, availability, live status). Cached for 6 hours — repeat calls within the window are instant. Cheaper than transcribe because no audio processing is needed.

Schema: v1.0 stableCache TTL: 6 hoursNetwork: Base mainnetAsset: USDC
Request
curl -X POST https://flylabs.fun/api/agents/engagement \
  -H "Content-Type: application/json" \
  -d '{ "url": "https://youtube.com/watch?v=dQw4w9WgXcQ" }'

Same x402 flow as transcribe. Pay $0.02 per call, get a stable JSON payload back. Useful for trend scoring, influencer ranking, content-market fit.

Response (200)
{
  "schema_version": "1.0",
  "videoId": "dQw4w9WgXcQ",
  "url": "https://youtube.com/watch?v=dQw4w9WgXcQ",
  "source": "ytdlp" | "cache",
  "servedAt": "2026-04-21T...",
  "cache": { "hit": false, "cachedAt": "...", "ageSec": 0 },
  "stats": {
    "viewCount": 1764432594,
    "likeCount": 18700000,
    "commentCount": 2300000,
    "likeToViewRatio": 0.0106,
    "commentToViewRatio": 0.0013,
    "engagementScore": 1.72
  },
  "channel": {
    "id": "UCuAXFkgsw1L7xaCfnd5JJOw",
    "name": "Rick Astley",
    "url": "https://youtube.com/channel/UC...",
    "subscriberCount": 4500000
  },
  "video": {
    "title": "...",
    "description": "...",
    "durationSec": 213,
    "publishedAt": "2009-10-24T00:00:00.000Z",
    "tags": ["rick astley", "never gonna give you up"],
    "categories": ["Music"],
    "ageLimit": 0,
    "availability": "public",
    "liveStatus": "not_live",
    "thumbnailUrl": "https://i.ytimg.com/..."
  }
}

More endpoints shipping: idea scoring, problem feeds, creator intel, knowledge graph queries. Building an agent that needs one of these? Tell us what you need.

Drop into your agent

Any x402-aware HTTP client handles the 402 → pay → retry flow for you. Pick your language. No SDK of ours to install — use whatever client you already trust.

Python
# pip install x402-client httpx
from x402_client import X402Client

client = X402Client(wallet_private_key=os.environ["AGENT_WALLET_KEY"])
resp = client.post(
    "https://flylabs.fun/api/agents/transcribe",
    json={"url": "https://youtube.com/watch?v=dQw4w9WgXcQ"},
)
data = resp.json()
print(data["transcript"]["text"])
print(f"Served from cache: {data['cache']['hit']} (age: {data['cache']['ageSec']}s)")
Node / TypeScript
// npm i @x402/fetch viem
import { wrapFetchWithPayment } from '@x402/fetch'
import { privateKeyToAccount } from 'viem/accounts'

const account = privateKeyToAccount(process.env.AGENT_WALLET_KEY)
const fetchWithPayment = wrapFetchWithPayment(fetch, account)

const res = await fetchWithPayment('https://flylabs.fun/api/agents/transcribe', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ url: 'https://youtube.com/watch?v=dQw4w9WgXcQ' }),
})

const data = await res.json()
console.log(data.transcript.text)
console.log(`Cache hit: ${data.cache.hit} (age: ${data.cache.ageSec}s)`)
Auto-generate a typed client. OpenAPI 3.1 spec lives at /api/agents/openapi.json. Feed it to openapi-generator for any language, or import directly into Cursor / Cline / your agent framework.

How a call works

01

Your agent calls the endpoint

POST /api/agents/transcribe with { "url": "https://youtube.com/watch?v=..." }. No API key, no signup, no OAuth.

02

Server returns 402 with payment instructions

Standard x402 response. Price, network, receive address, and supported schemes. Every x402-aware agent SDK handles this automatically.

03

Agent pays in USDC, retries with proof

$0.03 in USDC on Base mainnet. Coinbase CDP facilitator verifies and settles. Finality in seconds.

04

Data returns

Stable v1.0 JSON: verbatim transcript, time-indexed paragraphs, chapters, metadata. Cached forever — repeat calls are instant.

Building something with agents?

The Agentic Market is just starting. If you're shipping an agent and need a specific data API, tell us — we'll probably build it.