Introduction

Veedcrawl is a REST API that lets AI agents and developers understand social media videos. It extracts transcripts, metadata, and visual AI information from YouTube, TikTok, Instagram, X/Twitter, and Facebook.

Base URL

https://api.veedcrawl.com

Authentication

Every /v1/* request requires an x-api-key header.

bash
curl "https://api.veedcrawl.com/v1/me" \
  -H "x-api-key: YOUR_API_KEY"

Get your API key by signing up at veedcrawl.com/login. New accounts receive 100 free credits.

Health

GET/healthFree

Check API server health. No auth required.

bash
curl "https://api.veedcrawl.com/health"
json
{ "status": "ok" }

Current org

GET/v1/meFree

Returns your org info and remaining credits.

bash
curl "https://api.veedcrawl.com/v1/me" \
  -H "x-api-key: YOUR_KEY"
json
{
  "orgId": "org_abc123",
  "name": "My Org",
  "creditsRemaining": 87
}

Metadata

GET/v1/metadataFree

Fetch title, author, view count, like count, thumbnail, and platform stats for any video URL.

url — query param, required. Full video URL.

bash
curl "https://api.veedcrawl.com/v1/metadata?url=https://www.youtube.com/watch?v=dQw4w9WgXcQ" \
  -H "x-api-key: YOUR_KEY"
json
{
  "title": "Rick Astley - Never Gonna Give You Up",
  "author": "Rick Astley",
  "platform": "youtube",
  "duration": 213,
  "viewCount": 1400000000,
  "likeCount": 15000000,
  "thumbnail": "https://i.ytimg.com/vi/dQw4w9WgXcQ/maxresdefault.jpg"
}

Transcript

POST/v1/transcript1–5 credits

Enqueue a transcription job. Returns a jobId to poll.

Modes: native (platform captions, 1 credit) · generate (OpenAI Whisper, 5 credits) · auto (tries native first, fallback to Whisper)

bash
# Enqueue
curl -X POST "https://api.veedcrawl.com/v1/transcript" \
  -H "x-api-key: YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://www.youtube.com/watch?v=dQw4w9WgXcQ","mode":"auto"}'

# Response
{ "jobId": "job_abc123", "status": "queued" }

# Poll
curl "https://api.veedcrawl.com/v1/transcript/job_abc123" \
  -H "x-api-key: YOUR_KEY"
json
{
  "jobId": "job_abc123",
  "status": "completed",
  "resultJson": {
    "text": "Never gonna give you up, never gonna let you down..."
  }
}

Poll until status === "completed" or "failed".

AI Extract

POST/v1/extract10 credits

Run GPT-4o Vision over your video to extract structured information.

bash
# Enqueue
curl -X POST "https://api.veedcrawl.com/v1/extract" \
  -H "x-api-key: YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://www.youtube.com/watch?v=...","prompt":"Extract all product names shown"}'

# Poll
curl "https://api.veedcrawl.com/v1/extract/job_xyz456" \
  -H "x-api-key: YOUR_KEY"
json
{
  "jobId": "job_xyz456",
  "status": "completed",
  "resultJson": {
    "products": ["iPhone 16 Pro", "AirPods Pro 2"]
  }
}

API Keys

GET/v1/keysFree

List all API keys for your org.

POST/v1/keysFree

Create a new API key. Body: { "name": string }

DELETE/v1/keys/:idFree

Revoke an API key by ID.

bash
# List
curl "https://api.veedcrawl.com/v1/keys" -H "x-api-key: YOUR_KEY"

# Create
curl -X POST "https://api.veedcrawl.com/v1/keys" \
  -H "x-api-key: YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"my-agent"}'

# Revoke
curl -X DELETE "https://api.veedcrawl.com/v1/keys/key_abc123" \
  -H "x-api-key: YOUR_KEY"

Credits

OperationCredits
Metadata0 (free)
Current org (GET /v1/me)0 (free)
Transcript — native captions1
Transcript — Whisper AI5
AI visual extraction10

Errors

All errors follow this shape:

json
{
  "error": "error-code",
  "message": "Human-readable description",
  "details": null,
  "documentationUrl": null
}

Rate limits

TierEndpointsLimit
Heavyextract, generate transcript20 req/min
Lightmetadata, native transcript120 req/min

Rate limit headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset