Numerade Video API

Overview

The Numerade Video API provides secure access to educational videos from Numerade. It includes a built-in video player with download capabilities and supports both regular and AI-generated content.

Basic Usage

To request video access, send either a GET or POST request to the API endpoint.

GET Request

GET /api/getVideoSource?url=https://www.numerade.com/questions/your-question-url

POST Request

POST /api/getVideoSource
Content-Type: application/json

{
    "url": "https://www.numerade.com/questions/your-question-url"
}

Response

{
    "key": "bc2654783f2523a22390f6e18ad2d83f6c711b24f1f0cc32921cabc91a7d69a1",
    "title": "Question Title",
    "proxyUrl": "https://free-numerade-videos.vercel.app/api/getVideoSource?key=bc2654783f2523a22390f6e18ad2d83f6c711b24f1f0cc32921cabc91a7d69a1",
    "watchUrl": "https://free-numerade-videos.vercel.app/watch?watch=bc2654783f2523a22390f6e18ad2d83f6c711b24f1f0cc32921cabc91a7d69a1",
    "isAIGenerated": false
}

Video Access

There are two ways to access the video content:

1. Built-in Video Player

The recommended method is to use the built-in video player, which provides playback controls, download capability, and an expiry countdown:

GET /watch?watch=your_received_key

2. Direct Integration

For custom implementations, use the proxy URL in your own video player:

<video controls>
    <source src="https://free-numerade-videos.vercel.app/api/getVideoSource?key=your_received_key" type="video/mp4">
</video>

Implementation Example

async function getVideo(numeradeUrl) {
    try {
        const response = await fetch('/api/getVideoSource', {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json'
            },
            body: JSON.stringify({ url: numeradeUrl })
        });
        
        if (!response.ok) {
            throw new Error(`HTTP error! status: ${response.status}`);
        }
        
        const data = await response.json();
        return {
            key: data.key,
            proxyUrl: data.proxyUrl,
            watchUrl: data.watchUrl,
            isAIGenerated: data.isAIGenerated,
            title: data.title
        };
    } catch (error) {
        console.error('Error fetching video:', error);
        throw error;
    }
}

Technical Details

  • All access keys and URLs expire after 5 minutes
  • Supported URL formats:
    • www.numerade.com/questions/...
    • www.numerade.com/ask/question/...
  • The isAIGenerated flag in the response indicates AI-created content
  • Rate limiting is in place to ensure service stability
  • For high-volume usage, a Discord bot is available