Skip to content
Go to app

Limits and rate limits

Open in ChatGPT

Each key may send 120 requests per minute. Requests are counted in fixed 60-second windows. Every response carries the current state in headers following the IETF draft for RateLimit headers:

RateLimit-Policy: "default";q=120;w=60
RateLimit: "default";r=87;t=34
ValueMeaning
qRequests per window
wWindow size in seconds
rRequests left in the current window
tSeconds until the next window

When the limit is reached the API answers 429 rate_limited with a Retry-After header (seconds). Wait that long, then retry.

There is also a generous ceiling per IP address (600 requests per minute), so several websites on shared hosting don’t slow each other down.

Tips:

  • Use batch for many events: 100 operations count as one request.
  • Send changes when they happen instead of sending everything regularly. For a complete reconciliation there is the full sync.
  • The API recognizes unchanged events itself (changed: false); you don’t need to track that.
Sandbox (any plan)BasicProfessional
Calendars3 sandbox calendars1 live calendar10 live calendars
Events per calendar5005,0005,000
Active subscribers (account)5005,000

A series counts as one event. More on request. What happens when you reach a limit: Plans and limits.

Limit
Active keys per account10
JSON body1 MB
Batch100 operations
Logo / banner512 KB / 2 MB
Calendar name100 characters
Calendar description1,000 characters
external_id1 to 128 characters: A-Z a-z 0-9 . _ : -
Event title255 characters
Event description65,536 characters input, up to 8,000 characters of text stored
Location500 characters
URLs2,000 characters, https:// only
categories10 entries of 50 characters
metadata2 KB of JSON
recurrence.rules5 rules of 500 characters
recurrence.except_dates1,000
recurrence.overrides500
COUNT, INTERVAL1 to 1,000
default_durationup to PT24H
Page size when listing100
Lifetime of a full sync1 hour
Idempotency-Key255 characters, kept for 24 hours