For AI agents: a documentation index is at /llms.txt. Every docs page is also available as markdown: append .md to its URL or request it with Accept: text/markdown.

API Reference

API Rate Limits

To ensure a consistent experience for all users, the Waitlister API implements rate limiting. This page explains our rate limits and provides best practices for handling them in your applications.

Rate Limit Overview

Rate limits vary based on your plan and endpoint type. The limits are based on requests per minute (RPM), per account and endpoint, so API keys on the same account share them.

Rate Limits by Plan and Endpoint Type

PlanSubscriber EndpointsList SubscribersLog View & Stats EndpointsCreate WaitlistList WaitlistsGet Account
FreeSign-up only, 10 RPM¹—Stats only, 10 RPM¹5 RPM¹10 RPM¹20 RPM¹
LaunchSign-up only, 10 RPM¹—Stats only, 10 RPM¹5 RPM¹10 RPM¹20 RPM¹
ProSign-up only, 10 RPM¹—Stats only, 10 RPM¹5 RPM¹10 RPM¹20 RPM¹
Growth60 RPM300 RPM200 RPM5 RPM60 RPM60 RPM
Business120 RPM600 RPM400 RPM5 RPM60 RPM120 RPM

¹ Free, Launch and Pro plans need an account API key (wl_acct_…) — per-waitlist API keys require the Growth plan or higher. With an account key, these plans can check the key (Get Account), create waitlists, add subscribers, read stats, and manage landing pages; the other subscriber endpoints (list, get, update, delete), tags, and log view stay Growth+.

Landing Page Endpoints

PlanReadCreate or updatePublishAI generate
Free, Launch, Pro30 RPM5 RPM3 RPM2 RPM
Growth, Business60 RPM10 RPM5 RPM2 RPM

Endpoint Categories

  • Subscriber Endpoints: All endpoints related to managing subscribers, including:
    • Adding subscribers (/sign-up)
    • Getting subscriber details (/subscribers/{id-or-email})
    • Updating subscribers (/subscribers/{id-or-email})
    • Deleting subscribers (/subscribers/{id-or-email})
    • Listing tags (/tags)
  • List Subscribers: The paginated subscriber list (GET /subscribers)
  • Log View & Stats Endpoints: The analytics endpoints for logging page views (/log-view) and reading social-proof numbers (/stats)
  • Waitlists Endpoints: The account-scoped endpoints for creating (POST /api/v1/waitlists) and listing (GET /api/v1/waitlists) waitlists
  • Get Account: The account-scoped key check (GET /api/v1/me). Available on every plan with an account key

These limits help in the following ways:

  • Consistent performance for all users
  • Protection against accidental infinite loops
  • Prevention of API abuse

Rate Limit Headers

When you make an API request, we include headers that provide information about your current rate limit status.

HeaderDescription
X-RateLimit-LimitThe maximum number of requests allowed per minute
X-RateLimit-RemainingThe number of requests remaining in the current rate limit window
X-RateLimit-ResetWhen the oldest request in the current window expires and frees up capacity (Unix timestamp, in seconds)

For example:

code
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 45
X-RateLimit-Reset: 1683741600

A 429 response also includes a Retry-After header and data.retry_after in the body, both giving the number of seconds to wait.

Increasing Your Rate Limits

If you need higher rate limits:

  1. Upgrade Your Plan:
    • The Growth plan provides the full API, with 60 RPM on most subscriber endpoints
    • The Business plan doubles most Growth limits
  2. Contact Support: For enterprise-level needs, contact us through the public contact form to discuss custom rate limits.

Monitoring Your API Usage

To prevent hitting rate limits, monitor your API usage regularly.

  • Check rate limit headers in your API responses
  • Implement logging of API calls and response headers
  • Set up alerts when approaching rate limits
  • Review your API usage patterns to identify optimization opportunities

Best Practices for Rate Limit Management

  1. Implement Exponential Backoff: When receiving a 429 error, wait and retry with increasing delays
    javascript
    function fetchWithBackoff(url, options, attempt = 1) {
      return fetch(url, options)
        .then(response => {
          if (response.status === 429 && attempt <= 5) {
            const delay = Math.min(Math.pow(2, attempt) * 1000, 30000);
            return new Promise(resolve => setTimeout(resolve, delay))
              .then(() => fetchWithBackoff(url, options, attempt + 1));
          }
          return response;
        });
    }
    
  2. Batch Requests When Possible: Instead of making many small requests, batch operations where appropriate
  3. Cache Responses: Store responses locally to reduce the number of API calls needed

By following these best practices, you can make sure your application interacts smoothly with the Waitlister API while respecting the rate limits.

Get started for free

Start collecting sign ups for your product launch in minutes — no coding required.

Create your waitlist