Policies

Defining rate limits using Policy objects.

A Policy defines the rules for rate limiting. It specifies the limit, window, algorithm, and optional burst capacity.

Anatomy of a Policy

interface Policy {
  name: string;          // Unique identifier for the policy
  limit: number;         // Max requests allowed
  window: number;        // Time window in seconds
  algorithm: Algorithm;  // Rate limiting algorithm
  burst?: number;        // Optional burst capacity (Token Bucket only)
  blockDuration?: number; // Optional blocking duration in seconds
}

Creating Policies

You can create custom policies or use presets.

Custom Policy

from halt import Policy, Algorithm

custom_policy = Policy(
    name="custom_limit",
    limit=500,
    window=3600,
    algorithm=Algorithm.SLIDING_WINDOW
)

Using Presets

Halt comes with built-in presets for common scenarios.

import { presets } from 'halt';

// presets.PUBLIC_API: 100 req/min (Token Bucket)
// presets.AUTH_ENDPOINTS: 5 req/min (Fixed Window)
// presets.EXPENSIVE_OPS: 10 req/min (Sliding Window)