Rate Limits & Errors

The U2L API enforces rate limits per plan and returns consistent error responses across all endpoints.

Rate Limits

Rate limits are applied per API key on a per-minute basis. Limits vary by plan:

PlanRequests / MinuteRequests / Day
Pro6010,000
Advanced12050,000
Team300200,000
Enterprise6001,000,000

Rate Limit Headers

Every API response includes headers to help you track your rate limit usage:

HeaderDescription
X-RateLimit-LimitMaximum requests per minute for your plan
X-RateLimit-RemainingRemaining requests in the current minute window
X-RateLimit-ResetUnix timestamp (seconds) when the rate limit resets

Example response headers

X-RateLimit-Limit: 60 X-RateLimit-Remaining: 54 X-RateLimit-Reset: 1707600060

Rate Limit Exceeded

When you exceed the rate limit, the API returns a 429 Too Many Requests response with a retryAfter value indicating how many seconds to wait:

429 Too Many Requests
{
  "error": {
    "code": "rate_limit_exceeded",
    "message": "Rate limit exceeded. Try again in 45 seconds.",
    "retryAfter": 45
  }
}

Error Response Format

All errors follow a consistent format with a machine-readable code and a human-readable message:

Error format
{
  "error": {
    "code": "error_code",
    "message": "Human-readable error message"
  }
}

Validation errors may include a details object with per-field error messages:

422 Validation Error
{
  "error": {
    "code": "validation_error",
    "message": "Invalid request body",
    "details": {
      "url": "Must be a valid URL",
      "tags": "Tags feature requires Pro plan or higher"
    }
  }
}

Error Codes

StatusCodeDescription
400bad_requestInvalid or missing request parameters
401unauthorizedMissing or invalid API key
403forbiddenFeature not available on your plan
404not_foundResource not found
409conflictResource already exists (e.g., slug taken)
422validation_errorRequest body validation failed
429rate_limit_exceededToo many requests
500internal_errorUnexpected server error