Guide
Rate limits
Limits keep one busy integration from slowing the school down. They are generous for normal syncs.
The limit
Each key may make 120 requests a minute. Every answer says where you stand in X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset (seconds); over the limit you get 429 with Retry-After.
Where you stand
Every answer says how many requests are left in the current minute, and in how many seconds the next one frees up:
HTTP/1.1 200 OK
Content-Type: application/json
X-Request-Id: 0b8f6c1e-4f7a-4f57-9d0c-3c1d2e5a6b7c
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 117
X-RateLimit-Reset: 42Backing off
Over the limit you get 429 rate_limited with Retry-After (seconds). Wait that long, then go on. Bulk jobs should pace themselves: one request every 0.6 s stays under 100 a minute.
Send biometric punches and other writes in batches (up to 500 punches a request) instead of one request each.
Need more for a one-off migration? Ask School360: the limit can be raised for a while.