WHOOP
| Tier | Limit | Allowed | Scope | Vendor’s words |
|---|
| Default | per minute | 100 requests per minute | whole app | “All clients are subject to two sets of rate limiting for requests. By default, clients may only send: 100 requests per minute. 10,000 requests per day.” (source) |
| Default | per day | 10,000 requests per day | whole app | “All clients are subject to two sets of rate limiting for requests. By default, clients may only send: 100 requests per minute. 10,000 requests per day.” (source) |
WHOOP says every client may send these; the client is your app.
Mitigations WHOOP documents
- Webhooks for workout, sleep and recovery changes, instead of polling those (source)
- Ask for a rate limit increase from the Developer Dashboard (Open Request) (source)
Sources read 2026-10-17 · guide
Strava
| Tier | Limit | Allowed | Scope | Vendor’s words |
|---|
| New app (default) | non-upload, per 15 minutes | 100 requests per 15 minutes | whole app | “rate limit allows 100 requests every 15 minutes, with up to 1,000 requests per day.” (source) |
| New app (default) | non-upload, per day | 1,000 requests per day | whole app | “rate limit allows 100 requests every 15 minutes, with up to 1,000 requests per day.” (source) |
| New app (default) | overall, per 15 minutes | 200 requests per 15 minutes | whole app | “The default overall rate limit allows 200 requests every 15 minutes, with up to 2,000 requests per day.” (source) |
| New app (default) | overall, per day | 2,000 requests per day | whole app | “The default overall rate limit allows 200 requests every 15 minutes, with up to 2,000 requests per day.” (source) |
| Self-service upgrade | read, per 15 minutes | 200 requests per 15 minutes | whole app | “Once your app is configured in your API dashboard, you can upgrade your access directly from your API Settings Dashboard. This raises your access to: Athlete capacity of 10 Read read limits: 200 requests / 15min & 2,000 requests / day Overall rate limits: 400 requests / 15min & 4,000 requests / day” (source) |
| Self-service upgrade | read, per day | 2,000 requests per day | whole app | “Once your app is configured in your API dashboard, you can upgrade your access directly from your API Settings Dashboard. This raises your access to: Athlete capacity of 10 Read read limits: 200 requests / 15min & 2,000 requests / day Overall rate limits: 400 requests / 15min & 4,000 requests / day” (source) |
| Self-service upgrade | overall, per 15 minutes | 400 requests per 15 minutes | whole app | “Once your app is configured in your API dashboard, you can upgrade your access directly from your API Settings Dashboard. This raises your access to: Athlete capacity of 10 Read read limits: 200 requests / 15min & 2,000 requests / day Overall rate limits: 400 requests / 15min & 4,000 requests / day” (source) |
| Self-service upgrade | overall, per day | 4,000 requests per day | whole app | “Once your app is configured in your API dashboard, you can upgrade your access directly from your API Settings Dashboard. This raises your access to: Athlete capacity of 10 Read read limits: 200 requests / 15min & 2,000 requests / day Overall rate limits: 400 requests / 15min & 4,000 requests / day” (source) |
Strava limits usage per application, with a 15-minute and a daily limit; the 15-minute window resets on the quarter hour and the daily one at midnight UTC.
Mitigations Strava documents
- Implement webhooks when activity polling hits the daily limit (source)
- Throttle backfills by reading the rate-limit response headers (source)
Sources read 2026-10-17 · guide
Oura
| Tier | Limit | Allowed | Scope | Vendor’s words |
|---|
| Default | per 5 minutes | 5,000 requests per 5 minutes | not stated (applied to whole app) | “The Oura API is limited to 5000 requests per 5-minute period.” (source) |
Oura enforces a per-access-token and a per-application layer but gives this one figure without saying which layer it is, so it is applied here to your whole app, the stricter reading.
Mitigations Oura documents
- Webhooks: Oura says customers who implement them properly have not hit rate limits (source)
- One historical request when a user connects, then webhooks (source)
- Retry from the rate-limit headers rather than a fixed-interval backoff (source)
Sources read 2026-10-17 · guide
Polar AccessLink
| Tier | Limit | Allowed | Scope | Vendor’s words |
|---|
| Dynamic | per 15 minutes | 500 + 20 × users requests per 15 minutes | whole app | “15min rate limit: 500 + number of users x 20” (source) |
| Dynamic | per 24 hours | 5,000 + 100 × users requests per day | whole app | “24h rate limit: 5000 + number of users x 100” (source) |
Polar scales the limit with the number of registered users and updates it daily; the users you enter are used as that number.
Mitigations Polar AccessLink documents
- A webhook, which must answer Polar's ping when you create it (source)
Sources read 2026-10-17 · guide
Withings
| Tier | Limit | Allowed | Scope | Vendor’s words |
|---|
| Standard | per minute | 120 requests per minute | whole app | “The standard Withings API enforces a 120 requests-per-minute limit across your application” (source) |
Withings says the limit applies across your application.
Mitigations Withings documents
- Notifications: Withings POSTs when new data arrives, then you fetch (source)
- Fetch with lastupdate to get everything changed since your last sync (source)
Sources read 2026-10-17 · guide
Wahoo
| Tier | Limit | Allowed | Scope | Vendor’s words |
|---|
| Sandbox | per 5 minutes | 25 requests per 5 minutes | whole app | “Requests every 5 Min: 25 200” (source) |
| Sandbox | per hour | 100 requests per hour | whole app | “Requests per Hour: 100 1000” (source) |
| Sandbox | per day | 250 requests per day | whole app | “Requests per Day: 250 5000” (source) |
| Production | per 5 minutes | 200 requests per 5 minutes | whole app | “Requests every 5 Min: 25 200” (source) |
| Production | per hour | 1,000 requests per hour | whole app | “Requests per Hour: 100 1000” (source) |
| Production | per day | 5,000 requests per day | whole app | “Requests per Day: 250 5000” (source) |
The lines read do not say whether the limit is per app or per user, so it is applied here to your whole app. Authentication, token refreshes and file downloads do not count.
Mitigations Wahoo documents
- The workout_summary webhook (source)
- Ask support for higher throughput (source)
Sources read 2026-10-17 · guide
Dexcom
| Tier | Limit | Allowed | Scope | Vendor’s words |
|---|
| Default | per hour | 60,000 requests per hour | whole app | “Request frequency is limited to 60,000 calls per app per hour. If the limit is exceeded, an HTTP 429 response is returned.” (source) |
Dexcom limits calls per app.
Mitigations Dexcom documents
None in the pages read.
Sources read 2026-10-17 · guide
COROS (Partner API)
| Tier | Limit | Allowed | Scope | Vendor’s words |
|---|
| Partner API | per minute | 1,000 requests per minute | not stated (applied to whole app) | “Rate limit: 1,000 calls/minute” (source) |
The line read does not say whether the figure is per app or per user, so it is applied here to your whole app. The MCP path's rate limit is not stated.
Mitigations COROS (Partner API) documents
- Partner API webhooks push workout data within about 5 minutes (source)
Sources read 2026-10-17 · guide
TeamUp
| Tier | Limit | Allowed | Scope | Vendor’s words |
|---|
| Default | per minute, per caller | 250 requests per minute | per user | “Unless otherwise noted in an endpoint's description, the rate limit is 250 requests per minute for a caller. The caller is identified by the authenticated user or in the case of unauthenticated endpoints, the IP address.” (source) |
The caller is the authenticated user (or the IP address for unauthenticated endpoints), so the limit is applied per user.
Mitigations TeamUp documents
- Event notifications with webhooks (source)
Sources read 2026-10-17 · guide
Wodify
| Tier | Limit | Allowed | Scope | Vendor’s words |
|---|
| Default | per second (sustained) | 5 requests per second | not stated (applied to whole app) | “Rate 5 requests per second” (source) |
| Default | per calendar month | 500,000 requests per 31 days | not stated (applied to whole app) | “Quota 500,000 requests per month” (source) |
Wodify also allows a burst of 20 requests above the rate before throttling. The lines read do not say whether the limits are per key or per user, so they are applied here to your whole app, and a month is taken as 31 days.
Mitigations Wodify documents
- Exponential backoff on 429 (source)
- Batch requests instead of looping single calls (source)
- Cache data you reference often (source)
Sources read 2026-10-17 · guide
Terra
| Tier | Limit | Allowed | Scope | Vendor’s words |
|---|
| Data-read endpoints | requested days per hour, per user | 6,000 requested days per hour | per user | “your code has issued requests for this user totalling more than 6,000 days in the current hour” (source) |
Terra's limit counts days of data requested, not requests: each request counts the days its date range spans. Terra says it applies rate limits on data-read endpoints.
Mitigations Terra documents
- Deliver to a webhook (or a database, bucket or queue) instead of reading (source)
- Ranges over a month go through to_webhook and arrive asynchronously (source)
- Terra handles retries and backoff against the providers' own limits (source)
Sources read 2026-11-05 · guide
Google Health API
| Tier | Limit | Allowed | Scope | Vendor’s words |
|---|
| Default quotas | per minute, per user | 300 requests per minute | per user | “300 requests / minute” (source) |
| Default quotas | per minute, per project | 120,000 requests per minute | whole app | “120,000 requests / minute” (source) |
| Default quotas | per day, per project | 86,400,000 requests per day | whole app | “86.4M requests / day” (source) |
| Unverified app | per minute, per user | 300 requests per minute | per user | “300 requests / minute” (source) |
| Unverified app | per minute, per project | 120,000 requests per minute | whole app | “120,000 requests / minute” (source) |
| Unverified app | per day, per project | 86,400,000 requests per day | whole app | “86.4M requests / day” (source) |
| Unverified app | per second, all users (unverified app) | 250 requests per second | whole app | “Unverified applications: Max 250 QPS total (capped at 100 users @ 2.5 QPS per user)” (source) |
| Unverified app | per second, per user (unverified app) | 2.5 requests per second | per user | “Unverified applications: Max 250 QPS total (capped at 100 users @ 2.5 QPS per user)” (source) |
Google states per-project and per-user limits; the per-project ones are applied here to all of your app's traffic.
Mitigations Google Health API documents
- Back off and retry on 429 (source)
- Webhooks for 28 data types (source)
Sources read 2026-10-31 · guide