Rate Limiting & Error Handling Guide

This guide provides comprehensive documentation on rate limiting policies and error handling for the Transcript Downloader API. Understanding these policies will help you build a robust and reliable integration.


Rate Limiting Overview

Our API implements rate limiting to ensure fair usage and maintain service stability for all users. Rate limits are applied at multiple levels to protect both individual endpoints and the overall system.

Global API Rate Limit

Scope Limit Window Identifier
Per User 120 requests 1 minute User API Token
Per IP (unauthenticated) 120 requests 1 minute IP Address

📋 Note: Rate limits are applied per authenticated user. If you exceed the limit, you’ll receive a 429 Too Many Requests response.


Endpoint-Specific Rate Limits

Download Endpoints

Endpoint Limit Cooldown Period Scope
Single Transcript Download 1 request 5 minutes Per video
Bulk Transcript Download 1 request 5 minutes Per channel
Single Audio Download 1 request 5 minutes Per video
CSV Export 1 request 60 minutes Per user

Authentication Endpoints

Endpoint Limit Cooldown Period Notes
Login 5 attempts 30 minutes Per email + IP combination
Email Verification 6 requests 1 minute Per user
Password Reset 6 requests 1 minute Per email

YouTube API Quotas

YouTube API access is subject to daily quota limits to comply with YouTube’s terms of service.

Quota Consumption

Operation Quota Units Notes
Channel Profile Fetch 1 unit Initial channel lookup
Video List (per 50 videos) 2 units Pagination uses additional quota
Video Metadata 1 unit Per video info request

Quota Limits

Limit Type Default Value Reset Time
Daily Quota Configurable per account 24 hours (midnight UTC)

⚠️ Important: When your daily quota is exhausted, you’ll receive a 429 error. Quota resets automatically at midnight UTC.


Instagram API Considerations

Instagram content fetching operates asynchronously due to the nature of data retrieval.

Processing Behavior

Operation Typical Duration Maximum Wait Poll Interval
Profile Fetch 5-30 seconds 60 minutes 30 seconds
Content Metadata 5-60 seconds 60 minutes 30 seconds
Posts/Reels List 3-60 minutes 3 hours 3 minutes (180 seconds)
Audio Extraction 10 seconds - 5 minutes 15 minutes 30 seconds

đź“‹ Technical Details:

Polling Recommendations

Status Recommended Action Interval
pending Continue polling 30-60 seconds for profile/content, 60-180 seconds for lists
success Process response N/A
failed Check error, retry if applicable N/A

Error Codes Reference

HTTP Status Codes

Code Meaning Retryable Recommended Action
400 Bad Request No Fix request parameters
401 Unauthorized / Insufficient Credits No Check API key or add credits
403 Forbidden No Check permissions
404 Not Found No Verify resource ID exists
429 Too Many Requests Yes Wait and retry with backoff
500 Internal Server Error Yes Retry with exponential backoff
503 Service Unavailable Yes Wait for maintenance to complete

Common Error Messages

Authentication Errors

Error Message HTTP Code Cause Solution
Invalid API key 401 API key is incorrect or revoked Regenerate API key in settings
Unauthenticated 401 Missing or malformed Authorization header Include valid Bearer token

Balance Errors

Error Message HTTP Code Cause Solution
Insufficient credits 401 Account balance too low Add funds to your account

Rate Limit Errors

Error Message HTTP Code Cause Solution
Too many requests 429 Rate limit exceeded Wait and retry
Daily usage limit reached 429 YouTube quota exhausted Wait 24 hours for reset
Download again in X minute(s) 429 Download cooldown active Wait for cooldown

Content Errors

Error Message HTTP Code Cause Solution
Invalid Instagram URL 400 Malformed or unsupported URL Use valid Instagram URL format
Invalid YouTube URL 400 Malformed or unsupported URL Use valid YouTube URL format
Incorrect media ID or media access restricted 400 Content is private/deleted Verify content is publicly accessible
Item does not exist 404 Resource not found Check the ID is correct
Unable to process. Required metadata unavailable 500 Content cannot be scraped Content may be restricted

Processing Errors

Error Message HTTP Code Cause Solution
You already have a pending download 200 Duplicate request Use existing download ID
Failed to fetch profile 500 Service temporarily unavailable Retry after a few minutes
Audio download in progress 200 Prerequisite not complete Wait for audio processing

Retry Strategies

Exponential Backoff

For retryable errors (429, 500, 503), implement exponential backoff with the following recommended values:

With each failed attempt, double the wait time until reaching the maximum delay.


Polling Best Practices

For asynchronous operations (Instagram content, audio processing), use the recommended polling intervals below. Continue polling while the status is pending, and stop when you receive success or failed.

Polling Intervals by Operation

Operation Type Recommended Interval Max Duration
Profile Fetch 30 seconds 60 minutes
Content Metadata 30 seconds 60 minutes
Posts/Reels List 60-180 seconds 6 hours
Audio Processing 30 seconds 15 minutes
Transcription 15 seconds 35 minutes

Response Headers

Rate Limit Headers

When approaching or exceeding rate limits, the API returns helpful headers:

Header Description
X-RateLimit-Limit Maximum requests allowed in window
X-RateLimit-Remaining Requests remaining in current window
Retry-After Seconds to wait before retrying (on 429)

Best Practices Summary

Do’s ✅

Don’ts ❌


Error Response Format

All error responses follow a consistent JSON format with an error field containing the error message and a status field set to "error".

Validation errors include a message field with a general description and an errors object containing field-specific validation messages.


Support

If you’re experiencing persistent errors or need assistance with rate limiting issues: