From efabd8b1a663a7dde695235e8163f9003fb5c838 Mon Sep 17 00:00:00 2001 From: Alex Harrison Date: Mon, 10 Aug 2026 02:29:50 -0600 Subject: [PATCH 1/3] rate limiting: document the daily call ceiling (platform default, contracted-uncapped, /v1/partner discovery) Ci-From: linux Ci-Session: 41113d63-a627-40ec-8655-2aae22993843 --- rate-limiting.mdx | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/rate-limiting.mdx b/rate-limiting.mdx index a208375..23b8045 100644 --- a/rate-limiting.mdx +++ b/rate-limiting.mdx @@ -69,6 +69,18 @@ if (response.status === 429) { +## Daily call limit + +Alongside the token bucket, every account carries a daily call ceiling: + +| Account | Daily ceiling | +|---------|---------------| +| Self-serve | 200 calls/day | +| Partner, no agreed ceiling | Platform default (currently 2,000 calls/day) | +| Contracted integration | Per agreement, up to no ceiling at all | + +Reaching the ceiling returns `429 Too Many Requests` without a `Retry-After` header; the counter resets at midnight UTC. `GET /v1/partner` reports the ceiling that applies to your account (`rate_limits.requests_per_day`, `null` when none applies). To raise yours, contact api@saturday.fit. + ## Best practices ### Spread requests evenly From 6aa260af41a910ec82df797e35e913c516d906b6 Mon Sep 17 00:00:00 2001 From: Alex Harrison Date: Mon, 10 Aug 2026 02:51:52 -0600 Subject: [PATCH 2/3] rate limiting: the intelligence-endpoint daily ceiling joins the section Ci-From: linux Ci-Session: 41113d63-a627-40ec-8655-2aae22993843 --- rate-limiting.mdx | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/rate-limiting.mdx b/rate-limiting.mdx index 23b8045..ca52594 100644 --- a/rate-limiting.mdx +++ b/rate-limiting.mdx @@ -69,9 +69,9 @@ if (response.status === 429) { -## Daily call limit +## Daily call limits -Alongside the token bucket, every account carries a daily call ceiling: +Alongside the token bucket, every account carries daily call ceilings: | Account | Daily ceiling | |---------|---------------| @@ -79,7 +79,9 @@ Alongside the token bucket, every account carries a daily call ceiling: | Partner, no agreed ceiling | Platform default (currently 2,000 calls/day) | | Contracted integration | Per agreement, up to no ceiling at all | -Reaching the ceiling returns `429 Too Many Requests` without a `Retry-After` header; the counter resets at midnight UTC. `GET /v1/partner` reports the ceiling that applies to your account (`rate_limits.requests_per_day`, `null` when none applies). To raise yours, contact api@saturday.fit. +Intelligence endpoints (nutrition, products, inference, knowledge, AI) also carry their own daily ceiling, separate from the total. Data endpoints (your athletes, activities, organizations, webhooks) are not counted against it, so hitting the intelligence ceiling never blocks syncing your own data. + +Reaching a ceiling returns `429 Too Many Requests` without a `Retry-After` header; the message names the limit, and counters reset at midnight UTC. `GET /v1/partner` reports the ceilings that apply to your account (`rate_limits.requests_per_day` and `rate_limits.ip_requests_per_day`, `null` when none applies). To raise yours, contact api@saturday.fit. ## Best practices From 37f3f944554e95bcbbba4b6ce5fe964eb0a4144e Mon Sep 17 00:00:00 2001 From: Alex Harrison Date: Mon, 10 Aug 2026 03:13:27 -0600 Subject: [PATCH 3/3] rate limiting: document the distinct-input variety bounds Ci-From: linux Ci-Session: 41113d63-a627-40ec-8655-2aae22993843 --- rate-limiting.mdx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/rate-limiting.mdx b/rate-limiting.mdx index ca52594..30b07dc 100644 --- a/rate-limiting.mdx +++ b/rate-limiting.mdx @@ -81,6 +81,10 @@ Alongside the token bucket, every account carries daily call ceilings: Intelligence endpoints (nutrition, products, inference, knowledge, AI) also carry their own daily ceiling, separate from the total. Data endpoints (your athletes, activities, organizations, webhooks) are not counted against it, so hitting the intelligence ceiling never blocks syncing your own data. +Without an agreed intelligence ceiling, your budget grows with your day: a base allowance plus a per-athlete allowance for every athlete you compute for that day. Integrations serving real athletes scale automatically; if your traffic pattern needs more than the budget provides, contact api@saturday.fit. + +Request-pattern friction (`rate_limited`) also bounds daily variety on a few surfaces: distinct product lookups, distinct search queries, and calculations that carry no athlete. Repeats always serve, so a real workload (your athletes' usual products, revisited) never feels these; enumeration does. These 429s carry no `Retry-After`; novel inputs resume at midnight UTC. + Reaching a ceiling returns `429 Too Many Requests` without a `Retry-After` header; the message names the limit, and counters reset at midnight UTC. `GET /v1/partner` reports the ceilings that apply to your account (`rate_limits.requests_per_day` and `rate_limits.ip_requests_per_day`, `null` when none applies). To raise yours, contact api@saturday.fit. ## Best practices