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 Next.js SDK provides comprehensive plan management capabilities to configure rate limits and usage policies.
Creating Plans
Create new usage plans for your application:
import { Limitly } from '@limitly/limitly-nextjs';
const limitly = new Limitly({
apiKey: process.env.LIMITLY_API_KEY!
});
// Create a new plan
const newPlan = await limitly.plans.create({
name: 'Basic Plan',
description: 'Basic usage plan with 1000 requests per month',
max_requests: 1000,
request_period: 'month',
is_active: true
});
console.log('New plan created:', newPlan.data?.id);
Listing Plans
Retrieve all available plans:
// Get all plans
const plans = await limitly.plans.list();
console.log('Available plans:', plans.data);
Getting Plan Details
Get detailed information about a specific plan:
// Get plan details
const plan = await limitly.plans.get('plan_123');
console.log('Plan details:', {
id: plan.data?.id,
name: plan.data?.name,
description: plan.data?.description,
max_requests: plan.data?.max_requests,
request_period: plan.data?.request_period,
is_active: plan.data?.is_active
});
Updating Plans
Update plan properties:
// Update a plan
const updatedPlan = await limitly.plans.update('plan_123', {
name: 'Updated Basic Plan',
description: 'Updated description',
max_requests: 2000,
request_period: 'month'
});
console.log('Updated plan:', updatedPlan.data);
Deleting Plans
Delete plans when they’re no longer needed:
// Delete a plan
await limitly.plans.delete('plan_123');
console.log('Plan deleted successfully');
Plan Usage
Get usage statistics for a plan:
// Get plan usage
const usage = await limitly.plans.getUsage('plan_123');
console.log('Plan usage:', {
plan_id: usage.data?.plan_id,
plan_name: usage.data?.plan_name,
max_requests: usage.data?.max_requests,
total_requests: usage.data?.total_requests,
percentage_used: usage.data?.percentage_used,
users_count: usage.data?.users_count,
api_keys_count: usage.data?.api_keys_count
});
Plan Users
Get all users associated with a plan:
// Get plan users
const users = await limitly.plans.getUsers('plan_123');
console.log('Plan users:', users.data?.users);
Plan API Keys
Get all API keys associated with a plan:
// Get plan API keys
const apiKeys = await limitly.plans.getKeys('plan_123');
console.log('Plan API keys:', apiKeys.data?.api_keys);
API Route Example
Here’s a complete example of plan management in a Next.js API route:
// app/api/plans/route.ts
import { Limitly } from '@limitly/limitly-nextjs';
const limitly = new Limitly({
apiKey: process.env.LIMITLY_API_KEY!
});
export async function POST(request: Request) {
try {
const body = await request.json();
const newPlan = await limitly.plans.create({
name: body.name,
description: body.description,
max_requests: body.max_requests,
request_period: body.request_period,
is_active: body.is_active
});
return Response.json({
success: true,
plan: newPlan.data
});
} catch (error) {
return Response.json({
success: false,
error: error.message
}, { status: 500 });
}
}
export async function GET(request: Request) {
try {
const plans = await limitly.plans.list();
return Response.json({
success: true,
plans: plans.data,
count: plans.count
});
} catch (error) {
return Response.json({
success: false,
error: error.message
}, { status: 500 });
}
}
Plan Properties
The SDK supports the following plan properties:
- id: Unique identifier for the plan
- owner_id: ID of the plan owner
- name: Human-readable name for the plan
- description: Optional description of the plan
- max_requests: Maximum number of requests allowed
- request_period: Period for the limit (‘day’, ‘week’, ‘month’, ‘year’)
- is_active: Whether the plan is active
- created_at: Timestamp when the plan was created
- updated_at: Timestamp when the plan was last updated
Plan Periods
The SDK supports the following request periods:
- day: Daily limits
- week: Weekly limits
- month: Monthly limits
- year: Yearly limits
Error Handling
Handle plan management errors:
import { Limitly } from '@limitly/limitly-nextjs';
const limitly = new Limitly({
apiKey: process.env.LIMITLY_API_KEY!
});
try {
const plan = await limitly.plans.create({
name: 'Test Plan',
max_requests: 1000,
request_period: 'month'
});
console.log('Plan created:', plan.data?.id);
} catch (error) {
if (error.message.includes('Invalid request period')) {
console.error('Invalid request period');
} else if (error.message.includes('Plan name exists')) {
console.error('Plan name already exists');
} else {
console.error('Unexpected error:', error.message);
}
}
Next Steps