Documentation Index
Fetch the complete documentation index at: https://docs.limitly.dev/llms.txt
Use this file to discover all available pages before exploring further.
The Limitly SDK provides powerful request validation capabilities to enforce rate limits and usage policies.
Basic Validation
Validate a request using the user’s API key:
import { Limitly } from '@limitly/limitly-js';
const limitly = new Limitly({
apiKey: process.env.LIMITLY_API_KEY!
});
// Validate a request
const result = await limitly.validation.validate(
'user_api_key',
'/api/users',
'GET'
);
if (result.success) {
console.log('Request allowed');
} else {
console.log('Request denied:', result.error);
}
Express.js Integration
Integrate validation into your Express.js application:
import express from 'express';
import { Limitly } from '@limitly/limitly-js';
const app = express();
const limitly = new Limitly({
apiKey: process.env.LIMITLY_API_KEY!
});
app.use(async (req, res, next) => {
const apiKey = req.headers['x-api-key'] as string;
if (!apiKey) {
return res.status(401).json({ error: 'API Key required' });
}
const result = await limitly.validation.validate(
apiKey,
req.path,
req.method
);
if (!result.success) {
return res.status(429).json({
error: 'Rate limit exceeded',
details: result.details
});
}
next();
});
app.get('/api/users', (req, res) => {
res.json({ message: 'Users retrieved successfully' });
});
Validation Response
The validation method returns a detailed response:
interface ValidateRequestResponse {
success: boolean;
error?: string;
details?: {
current_usage: number;
limit: number;
plan_name: string;
period_start: string;
period_end: string;
};
}
Error Handling
Handle different types of validation errors:
import { Limitly } from '@limitly/limitly-js';
const limitly = new Limitly({
apiKey: process.env.LIMITLY_API_KEY!
});
try {
const result = await limitly.validation.validate(
'user_api_key',
'/api/users',
'GET'
);
if (result.success) {
console.log('Request allowed');
console.log('Remaining requests:', result.details?.limit - result.details?.current_usage);
} else {
console.log('Request denied:', result.error);
if (result.details) {
console.log('Retry after:', result.details.period_end);
}
}
} catch (error) {
console.error('Validation error:', error);
}
Next Steps