Integrate our powerful movie recommendation API into your applications with ease. Get started in minutes with our comprehensive guides and examples.
Integrate AI-powered movie recommendations into your applications with our simple and powerful API.
Welcome to the Screenpick API – your gateway to intelligent, AI-powered movie discovery. Our sophisticated recommendation engine leverages advanced machine learning algorithms to understand natural language queries and deliver personalized movie suggestions that match your exact preferences, mood, or specific criteria.
Integrate intelligent movie recommendations into your apps, websites, or services. Our RESTful API is designed for easy integration with comprehensive documentation and code examples.
Built with scalability and reliability in mind, featuring rate limiting, comprehensive error handling, and multiple authentication options to meet enterprise requirements.
The Screenpick API follows RESTful principles and returns responses in JSON format. All endpoints support CORS for browser-based applications and require HTTPS for secure communication. Our API is built on a modern, scalable infrastructure ensuring fast response times and high availability.
https://screenpick.fun/api/Start with our health check endpoint (/api/ping) to verify connectivity, then explore our AI recommendations endpoint with simple queries like "popular comedies" or "award-winning dramas from the 2010s" to see the power of our natural language processing.
The Screenpick API supports both JWT-based authentication and traditional API key authentication. We recommend using JWT tokens for enhanced security, session management, and better integration with modern applications. All API requests require valid authentication.
We now support JWT (JSON Web Token) authentication for enhanced security and better session management. JWT tokens provide stateless authentication with automatic expiration and refresh capabilities.
/api/auth/login/api/auth/refreshExchange your API key for JWT tokens by calling the login endpoint:
POST /api/auth/login{
"apiKey": "your_api_key_here"
}Include the JWT token in your API requests:
Authorization: Bearer your_jwt_tokenRefresh your access token using the refresh token:
POST /api/auth/refresh{
"refreshToken": "your_refresh_token"
}Include your API key in the Authorization header using the Bearer token format:
Authorization: Bearer YOUR_API_KEYFor RapidAPI integration, use the X-RapidAPI-Key header:
X-RapidAPI-Key: YOUR_RAPIDAPI_KEYFor quick testing, you can include the API key as a query parameter:
https://screenpick.fun/api/search?apiKey=YOUR_API_KEY&q=action+movies⚠️ Not recommended for production use due to potential exposure in logs
cURL:
curl -H "Authorization: Bearer your_api_key_here"JavaScript (fetch):
headers: { 'Authorization': 'Bearer your_api_key_here' }Python (requests):
headers = {'Authorization': 'Bearer your_api_key_here'}To ensure fair usage and maintain optimal service performance for all users, the Screenpick API implements intelligent rate limiting. Our rate limits are designed to accommodate both casual developers and high-volume enterprise applications.
We use a sliding window approach that provides more flexible usage patterns compared to fixed windows.
Rate limits are tracked individually for each API key, ensuring your usage doesn't affect others.
| Plan | Daily Requests | Per Minute | Features | Best For | Price |
|---|---|---|---|---|---|
Basic | 20 requests | 1,000 requests per hour | All endpoints | Small applications | Free |
Pro | 2,500 requests | 1,000 requests per hour | Priority support | Production apps | $5/mo |
Mega | 10,000 requests | 4,500 requests per hour | Priority support | Large apps | $15/mo |
Ultra | 30,000 | 4,500 requests per hour | Direct Support | High-volume enterprise | $30/mo |
Custom | Unlimited* | Custom | Dedicated support, SLA, custom features | Enterprise, partners | Contact Us |
Every API response includes rate limit information in the headers:
X-RateLimit-LimitDaily limitX-RateLimit-RemainingRemaining requestsX-RateLimit-ResetReset timestampX-RateLimit-WindowWindow periodBest practices for rate limit management:
When you exceed your rate limit, you'll receive a 429 Too Many Requests response:
{
"error": "Rate limit exceeded",
"message": "You have exceeded your daily request limit. Please upgrade your plan or try again tomorrow.",
"limit": 15,
"remaining": 0,
"resetTime": "2024-01-01T00:00:00Z"
}/api/searchGenerate personalized movie recommendations using advanced AI. Simply describe what you're looking for, and our intelligent system will suggest movies tailored to your preferences, mood, or specific criteria.
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
q | string | query | Yes | Natural language query describing the type of movies you want. Examples: 'romantic comedies from the 90s', 'sci-fi movies with time travel', 'feel-good animated movies for kids'. Maximum length: 300 characters. |
Authorization | string | header | No | Optional. Provide a JWT Bearer token (Authorization: Bearer <token>) or X-RapidAPI-Key for higher rate limits and access to additional features. Anonymous requests are allowed with reduced limits. |
{
"success": true,
"query": "romantic comedies from the 90s",
"movies": [
{
"adult": false,
"backdrop_path": "/wj2nLa0vfS0SLu2vJ6ABTRhMrok.jpg",
"genre_ids": [
35,
10749
],
"id": 334541,
"original_language": "en",
"original_title": "Manchester by the Sea",
"overview": "After his older brother passes away, Lee Chandler is forced to return home to care for his 16-year-old nephew...",
"popularity": 37.713,
"poster_path": "/o9VXYOuaJxCEKOxbA86xqtwmqYn.jpg",
"release_date": "2016-11-18",
"title": "Manchester by the Sea",
"video": false,
"vote_average": 7.5,
"vote_count": 5868
}
],
"total": 10,
"requestId": "5a3c2f1e-1234-4567-89ab-abcdef012345",
"timestamp": "2025-09-17T12:34:56.789Z",
"authMethod": "jwt",
"userPlan": "basic"
}curl -X GET "https://screenpick.fun/api/search?q=romantic%20comedies%20from%20the%2090s" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json"/api/getIDRetrieve TMDb and IMDb identifiers for movies by title. This endpoint searches our comprehensive movie database and returns matching entries with their corresponding database IDs.
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
title | string | query | Yes | The movie title to search for. Partial matches are supported (e.g., 'La La Land', 'Inception', 'The Dark Knight'). |
Authorization | string | header | Yes | Bearer token for API authentication or X-RapidAPI-Key header. |
[
{
"title": "La La Land (2016)",
"imdb": "tt3783958",
"tmdb": "313369"
},
{
"title": "La La Land (Short 2014)",
"imdb": "tt4282966",
"tmdb": "285473"
}
]curl -X GET "https://screenpick.fun/api/getID?title=La%20La%20Land" \
-H "Authorization: Bearer YOUR_API_KEY"/api/pingSimple endpoint to check if the API is running and accessible. Returns the current status of the service.
No parameters required for this endpoint.
{
"status": "ok"
}curl -X GET "https://screenpick.fun/api/ping"/api/auth/loginExchange your API key for JWT tokens. This provides enhanced security with stateless authentication, automatic token expiration, and refresh capabilities.
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
apiKey | string | body | Yes | Your API key obtained from RapidAPI marketplace. |
email | string | body | No | Optional email address for user identification. |
{
"success": true,
"data": {
"accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"expiresIn": "24h",
"tokenType": "Bearer",
"user": {
"userId": "user_12345678",
"email": "user@example.com",
"plan": "basic",
"permissions": [
"read",
"search",
"details"
],
"rateLimit": {
"requests": 100,
"window": "1h"
}
}
}
}undefined/api/auth/refreshRefresh your access token using a refresh token. This extends your session without requiring re-authentication with your API key.
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
refreshToken | string | body | Yes | The refresh token obtained from the login endpoint. |
{
"success": true,
"data": {
"accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"expiresIn": "24h",
"tokenType": "Bearer"
}
}undefined/api/auth/validateValidate your JWT token and retrieve user information. Use this to check if your token is still valid and get current user details.
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
Authorization | string | header | Yes | Bearer token for authentication (Authorization: Bearer YOUR_JWT_TOKEN). |
{
"success": true,
"data": {
"valid": true,
"user": {
"userId": "user_12345678",
"email": "user@example.com",
"plan": "basic",
"permissions": [
"read",
"search",
"details"
],
"rateLimit": {
"requests": 100,
"window": "1h"
}
},
"isLegacyAuth": false,
"expiresAt": "2025-09-17T12:00:00.000Z"
}
}undefinedThe Screenpick API uses conventional HTTP response codes to indicate the success or failure of requests. Our error responses include detailed information to help you quickly identify and resolve issues.
| Code | Status | Description |
|---|---|---|
200 | OK | Request completed successfully |
400 | Bad Request | Invalid request parameters or malformed request |
401 | Unauthorized | Missing or invalid API key |
403 | Forbidden | Valid API key but insufficient permissions |
404 | Not Found | Requested resource or endpoint doesn't exist |
429 | Too Many Requests | Rate limit exceeded - slow down your requests |
500 | Internal Server Error | Something went wrong on our servers |
503 | Service Unavailable | API is temporarily down for maintenance |
When an error occurs, the API returns a structured JSON response with detailed error information to help you understand and resolve the issue quickly:
{
"success": false,
"error": {
"code": "invalid_request",
"message": "The request was invalid. Please check your parameters.",
"details": "The 'q' parameter is required for movie recommendations.",
"timestamp": "2024-01-15T10:30:00Z",
"requestId": "req_abc123def456"
}
}missing_parameter - Required parameter not providedinvalid_api_key - API key is malformed or invalidrate_limit_exceeded - Too many requests sentservice_unavailable - AI service temporarily downquery_too_long - Search query exceeds maximum lengthasync function handleApiResponse(response) {
if (!response.ok) {
const errorData = await response.json();
switch (response.status) {
case 400:
throw new Error(`Bad Request: ${errorData.error.message}`);
case 401:
throw new Error('Invalid API key. Please check your credentials.');
case 429:
const retryAfter = response.headers.get('Retry-After') || 60;
throw new Error(`Rate limit exceeded. Retry after ${retryAfter} seconds.`);
case 500:
throw new Error('Server error. Please try again later.');
default:
throw new Error(`API Error: ${errorData.error.message}`);
}
}
return await response.json();
}Join thousands of developers who are already using Screenpick to power their movie recommendation features. Get started with our free tier and scale as you grow.
Need help getting started? Check out our quickstart guide or contact our support team.
Built for developers who need reliable, fast, and intelligent movie recommendations. Our API combines cutting-edge AI with developer-friendly design.
RESTful API with clear endpoints and comprehensive documentation for quick implementation
Sub-second response times with globally distributed infrastructure and optimized caching
API key authentication, rate limiting, and HTTPS encryption for secure data transmission
Worldwide availability with 99.9% uptime SLA and automatic failover protection
Powered by state-of-the-art machine learning models trained on vast movie databases
Comprehensive movie information including ratings, genres, cast, and detailed descriptions
Ready to discover your next favorite movie?
Join thousands of movie lovers finding perfect recommendations