Documentation

Everything you need to build with Rendrift's media processing API.

Getting Started

1. Sign Up for an API Key

Start with our Free tier (instant provisioning) or upgrade to a paid plan anytime.

  1. Click "Sign Up" on the homepage
  2. Choose a tier (Free, Pro, or Business)
  3. For Free: get your API key instantly in the modal
  4. For paid: complete checkout → key arrives via email after webhook processing

2. Make Your First Request

Use your API key in the Authorization header:

curl -X POST https://rendrift.io/v1/thumbnail \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/video.mp4",
    "format": "jpg",
    "width": 320,
    "height": 180
  }'
          

3. Manage Your Account

Upgrade, downgrade, or change your billing details anytime via the billing portal.

API Reference

All API requests require an Authorization: Bearer YOUR_API_KEY header.

POST /v1/thumbnail

Generate a thumbnail from a video or image URL.

Request Body

{
  "url": "https://example.com/video.mp4",  // Media URL (required)
  "format": "jpg",                           // jpg, png, webp (required)
  "width": 320,                              // Thumbnail width (required)
  "height": 180,                             // Thumbnail height (required)
  "timestamp": 5                             // Seconds into video (optional, default: 0)
}
                

Response

{
  "url": "https://rendrift-cdn.io/thumb_abc123.jpg",  // Download URL (valid 24 hours)
  "format": "jpg",
  "width": 320,
  "height": 180
}
                
POST /v1/audio

Extract audio from video to MP3.

Request Body

{
  "url": "https://example.com/video.mp4",  // Media URL (required)
  "bitrate": "128k"                          // 128k, 192k, 320k (optional, default: 192k)
}
                

Response

{
  "url": "https://rendrift-cdn.io/audio_xyz789.mp3",  // Download URL (valid 24 hours)
  "duration_seconds": 120,
  "bitrate": "192k"
}
                
POST /v1/probe

Get detailed metadata about a media file.

Request Body

{
  "url": "https://example.com/video.mp4"  // Media URL (required)
}
                

Response

{
  "duration_seconds": 120,
  "format": "mp4",
  "video": {
    "codec": "h264",
    "width": 1920,
    "height": 1080,
    "fps": 30,
    "bitrate": "5000k"
  },
  "audio": {
    "codec": "aac",
    "channels": 2,
    "bitrate": "128k",
    "sample_rate": 48000
  }
}
                
POST /v1/image

Resize, crop, or convert an image.

Request Body

{
  "url": "https://example.com/image.jpg",  // Image URL (required)
  "format": "webp",                          // jpg, png, webp (optional, default: original)
  "width": 800,                              // Width in px (optional)
  "height": 600,                             // Height in px (optional)
  "crop": "center"                           // center, top, bottom (optional)
}
                

Response

{
  "url": "https://rendrift-cdn.io/image_def456.webp",  // Download URL (valid 24 hours)
  "format": "webp",
  "width": 800,
  "height": 600
}
                
POST /v1/waveform

Generate waveform data (JSON) from audio or video.

Request Body

{
  "url": "https://example.com/audio.mp3",  // Media URL (required)
  "samples": 1000                            // Data points (default: 1000, max: 10000)
}
                

Response

{
  "samples": [0.12, 0.45, 0.89, ...],  // Normalized peak amplitude per sample (0-1)
  "duration_seconds": 120,
  "sample_rate": 1000
}
                

Error Handling

All errors return JSON with status code and message:

{
  "error": "Unauthorized",
  "message": "Invalid or missing API key"
}
          

Common status codes:

  • 400 — Bad request (missing or invalid parameters)
  • 401 — Unauthorized (missing/invalid API key)
  • 429 — Rate limited (tier limit exceeded)
  • 500 — Server error (try again in a few seconds)

Pricing & Limits

Free

$0/mo

Quotas

  • • 500 requests/month
  • • Max file: 100 MB
  • • Max duration: 5 min

Features

  • ✓ All 5 endpoints
  • ✓ Community support

Starter

$29/mo

Quotas

  • • 10,000 requests/month
  • • Max file: 500 MB
  • • Max duration: 30 min

Features

  • ✓ All 5 endpoints
  • ✓ Email support

Pro Recommended

$99/mo

Quotas

  • • 50,000 requests/month
  • • Max file: 2 GB
  • • Max duration: 3 hours

Features

  • ✓ All 5 endpoints
  • ✓ Priority support

Business

$299/mo

Quotas

  • • 100,000 requests/month
  • • Max file: 2 GB
  • • Max duration: 3 hours

Features

  • ✓ All 5 endpoints
  • ✓ 24/7 phone support
  • ✓ Webhook events

Quota & Rate Limits

All limits reset on the 1st of each month. When you exceed a limit:

  • Monthly operations exceeded: Requests return 429 Too Many Requests until next month
  • File too large: Request returns 413 Payload Too Large
  • Duration too long: Processing times out if file duration exceeds your tier's limit

Need more? Upgrade anytime or contact us for enterprise limits.

Usage Dashboard

Monitor your usage, manage API keys, and view billing details in real-time.

📊 Access Your Dashboard

Visit /usage.html and sign in with your API key.

Step 1: Generate an API key via signup

Step 2: Go to /usage.html

Step 3: Paste your API key and click "Sign In"

Note: Your key is stored securely in browser local storage for this session only

Dashboard Features

  • Usage Meter: Visual progress bar showing % of monthly quota used
  • Endpoint Breakdown: See which operations consume the most quota
  • Recent Calls: Table of your last 20 API requests with timing
  • API Key Management: Rotate keys, view previews, copy to clipboard
  • Billing Info: Current plan, monthly cost, quota limits, next billing date
  • Upgrade CTA: Quick link to upgrade when you reach 70% usage

Usage & Analytics APIs

Query your usage programmatically via these authenticated endpoints.

GET /v1/usage

Quick summary of your current usage and quota.

Response

{
  "plan": "free",
  "usage_this_month": 42,
  "limit": 500,
  "remaining": 458,
  "reset_at": "2026-05-01T00:00:00Z"
}
                
GET /v1/usage/details

Detailed breakdown of usage by endpoint and recent API calls.

Response

{
  "plan": "free",
  "usage_this_month": 42,
  "limit": 500,
  "usage_percent": 8,
  "reset_at": "2026-05-01T00:00:00Z",
  "by_endpoint": [
    {
      "operation": "thumbnail",
      "calls": 25,
      "avg_duration_ms": 1200,
      "total_bytes": 5242880
    },
    {
      "operation": "probe",
      "calls": 17,
      "avg_duration_ms": 450
    }
  ],
  "recent_calls": [
    {
      "operation": "thumbnail",
      "success": true,
      "duration_ms": 1150,
      "file_size_mb": "2.50",
      "created_at": "2026-04-30T05:15:32.123Z"
    }
  ]
}
                
GET /v1/api-keys

List all API keys for your account.

Response

{
  "keys": [
    {
      "id": "f0c1cd66-4344-4361-b013-39b03c6bb956",
      "name": "John Doe",
      "plan": "free",
      "created_at": "2026-04-30T05:09:16.697Z",
      "active": true,
      "key_preview": "rnd_...3ebb"
    }
  ]
}
                
POST /v1/api-keys/:id/rotate

Rotate an API key. The old key is immediately invalidated.

Response

{
  "message": "API key rotated successfully",
  "new_key": "rnd_e3bb00ffdb765fe18d7e8e192d28cedc...",
  "note": "Save this key now — you won't see it again. Update your applications to use the new key."
}
                
GET /v1/billing/info

Get your billing plan, quota, and Stripe subscription details.

Response

{
  "plan": "free",
  "price": 0,
  "status": "inactive",
  "quota": {
    "operations": 500,
    "max_file_mb": 100,
    "max_duration_sec": 300
  },
  "billing_email": "user@example.com",
  "created_at": "2026-04-30T05:09:16.697Z",
  "stripe_customer_id": null
}
                

FAQ

How long are output files stored?

Downloads URLs are valid for 24 hours. Store important files permanently on your own servers before expiry.

Can I process files from private/authenticated URLs?

Not yet. Submit URLs that are publicly accessible. We're working on signed URL support.

How fast are requests?

Most requests complete within 10–60 seconds depending on file size and complexity. Check the response status in your application.

What media formats are supported?

Video: MP4, WebM, MOV, MKV, AVI. Audio: MP3, WAV, AAC, FLAC. Images: JPG, PNG, WebP, GIF.

Is there a webhook/async API?

Webhooks are included in the Business plan. All endpoints are currently synchronous (request waits for result). Async processing coming soon.

Do you offer refunds?

We offer 30-day refunds if you're unhappy. Contact us at support@rendrift.io.

How do I upgrade my plan?

Visit the billing portal and select a new tier. Changes take effect immediately.

Ready to build?

Get Your API Key

© 2026 Rendrift. All rights reserved. System Status