Skip to content

docs(api-keys): revise rate limit copy#371

Open
n-xlkt wants to merge 3 commits into
mainfrom
docs/int2-929-api-key-rate-limit-copy
Open

docs(api-keys): revise rate limit copy#371
n-xlkt wants to merge 3 commits into
mainfrom
docs/int2-929-api-key-rate-limit-copy

Conversation

@n-xlkt

@n-xlkt n-xlkt commented Jul 17, 2026

Copy link
Copy Markdown
Collaborator

What Changed

Reframes the API key rate-limit docs so a key reads as self-minted in the Relay Dashboard, with the default limits applying to those keys and higher limits available on request through the Dashboard support widget. Renames the two rate-limit sections on references/api/api-keys.mdx to Default Rate Limits and Elevated Rate Limits (limit values unchanged), and drops the same "raise your rate limits" / "available to anyone" framing from the quickstart, the shared GetAnApiKey snippet, and the websockets guide.

Why

The copy implied any API key inherently grants higher limits, and that the API is usable unauthenticated at a baseline rate. In reality a newly self-minted key starts on the default limits — the same numbers previously labeled "no API key" — and higher limits are granted on request. Pedro flagged this after the developer-dashboard docs shipped in #369.

Impact

Documentation only — no API or SDK behavior changes. Anchor slugs on the API keys page change (#default-rate-limits-no-api-key#default-rate-limits, #api-key-rate-limits#elevated-rate-limits); a repo-wide check found no internal links to the old anchors.

Related Context

Testing

Static review plus a grep sweep confirming no residual "to raise your rate limits" / "available for anyone" / "(no API key)" / "generally not required" phrasing remains. The Mintlify CLI isn't installed in this environment, so the rendered page was not previewed live; MDX structure (tables, <Tip>/<Warning>/<Callout> tags, frontmatter) was verified by inspection.

The rate-limit docs implied the API was usable unauthenticated at a
baseline limit and that a key merely "raised" it. Keys are self-minted in
the Dashboard and the default limits apply to those keys, so state that
directly and route higher-limit requests to the Dashboard support widget.

Also scrubs the same "raise your rate limits" / "available to anyone"
framing from the quickstart, the shared GetAnApiKey snippet, and the
websockets guide. Limit values are unchanged; two section headings and
their anchors are renamed.

Refs: INT2-929
Refs: https://relayprotocol.slack.com/archives/C04EBEGJV2M/p1784297558289219

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@n-xlkt n-xlkt self-assigned this Jul 17, 2026
@github-actions

github-actions Bot commented Jul 17, 2026

Copy link
Copy Markdown

Claude finished @n-xlkt's task in 1m 22s —— View job


Review: docs(api-keys): revise rate limit copy

Nice, focused copy change. The reframing is coherent and consistently applied across all four files, the anchor-slug migration claim checks out (a repo-wide grep for the old #default-rate-limits-no-api-key / #api-key-rate-limits anchors and for the removed phrasing returns nothing), and the changes respect the style guide (API key casing, paragraph length, <Tip>/<Warning> usage). One substantive inconsistency and a couple of minor notes below.


🟡 Residual "elevated limits" wording contradicts the new model

The whole point of this PR is that a self-minted key starts on the default limits, and elevated limits are a separate tier granted only on request (now the ## Elevated Rate Limits heading at api-keys.mdx:42). But two spots in the same file still tell the reader that simply passing their key gets them elevated limits:

  • references/api/api-keys.mdx:59 — "Pass the key in the request headers on every call where you want elevated limits:"
  • references/api/api-keys.mdx:98 — "This keeps the key out of client bundles while preserving elevated limits."

Under the old framing (key = higher limits) this was correct; under the new framing it's not — a freshly minted key carries default limits, so "where you want elevated limits" now overpromises exactly what the PR set out to correct. Suggest neutral phrasing like "on every call you want attributed to your account / counted against your key's limits" and "while preserving your key's rate limits."

Fix this →

🔵 Minor: "self-minted"

api-keys.mdx:6 introduces the term "self-minted API keys," which isn't used anywhere else in the docs. The page already says keys are "self-serve" (api-keys.mdx:10). Consider "self-serve API keys" for consistency, or just "the API keys you create," since "minted" is slightly jargon-y for a first-line definition.

🔵 Minor: default-tier /quote limit reads oddly per-key

Not introduced by this PR, but the reframe makes it more visible: the default ## Default Rate Limits table now says these apply "per API key," yet /quote is 50 requests per minute while the elevated tier is 10 requests per second. That's a real jump and fine — just flagging that since defaults are now explicitly per-key (not "no API key"), it's worth a sanity check with the team that 50/min is the intended starting point for a newly created key.


Testing note from the PR body is fair — Mintlify wasn't run locally. The MDX structure looks valid by inspection (tables well-formed, <Callout>/<Tip>/<Warning> tags balanced, frontmatter intact). Nothing blocking beyond the wording fix above.

  • Read changed files and full context
  • Check against AGENTS.md style guide
  • Verify anchor-slug / cross-link claims
  • Post review

@mintlify

mintlify Bot commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated (UTC)
unevenlabs 🟢 Ready View Preview Jul 17, 2026, 9:22 PM

💡 Tip: Enable Workflows to automatically generate PRs for you.

@n-xlkt
n-xlkt requested review from pedromcunha and ted-palmer July 17, 2026 21:24
pedromcunha
pedromcunha previously approved these changes Jul 17, 2026
@mintlify

mintlify Bot commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated (UTC)
unevenlabs 🟡 Building Jul 17, 2026, 9:21 PM

💡 Tip: Enable Workflows to automatically generate PRs for you.

The "How to Use" and "Proxy API" sections still told readers that
passing their key gets them elevated limits. Under the new model a
self-minted key carries the default limits and elevated limits are a
separate tier granted on request, so this overpromised the exact thing
the reframe corrected. Reword to refer to the key's own limits.

Refs: INT2-929
@github-actions

github-actions Bot commented Jul 17, 2026

Copy link
Copy Markdown

Claude finished @n-xlkt's task in 1m 25s —— View job


Code Review: docs(api-keys): revise rate limit copy

  • Read changed files and full diff
  • Check against AGENTS.md style guide
  • Verify anchor-slug / cross-link claims
  • Post review

Clean, well-scoped copy change. The reframe (self-created key → default limits, elevated on request) is applied consistently across all four files, and the residual "elevated limits" wording that the earlier review flagged at api-keys.mdx:59/:98 has since been fixed in aaa7fb5 — line 59 now reads "on every request" and line 98 "preserving your key's rate limits." Nothing blocking.

✅ Verified

  • Anchor migration — repo-wide grep for the old (#default-rate-limits-no-api-key, #api-key-rate-limits) and new (#default-rate-limits, #elevated-rate-limits) slugs returns no internal links anywhere, so no cross-links break. The only in-page anchor link (#proxy-api, line 122) is untouched.
  • Residual phrasing — grep for "raise your rate limits" / "available for anyone" / "generally not required" / "(no API key)" / "elevated limits" comes back empty (except "self-minted" — see below).
  • Style guideAPI key casing (§5), 2–3-sentence paragraphs (§2.10), and <Tip>/<Warning>/<Callout> usage all conform.

🔵 Minor: terminology consistency — "self-minted"

api-keys.mdx:6 introduces "self-minted API keys," but line 10 already establishes the term "self-serve" ("API keys are self-serve"). Two coinages for the same idea on the same page reads slightly off, and "minted" is a touch jargon-y for the lead paragraph. Suggest aligning on "self-serve" or plain "the API keys you create."

Fix this →

🔵 Minor: page no longer documents the no-key path

The old copy stated default limits applied to unauthenticated traffic; the reframe now says the Default table applies "per API key" and drops any mention of calling without a key. If the API is still reachable without a key, that behavior is now undocumented; if a key is effectively required, the page reads correctly. Worth a one-line confirmation with the team on which is intended — no change needed if keys are the expected entry point.

🔵 Minor (pre-existing, more visible now): default /quote limit

Now that the Default table is explicitly "per API key" rather than "no API key," the jump from /quote 50/min (default) to 10/s (elevated) is a larger step than the other endpoints. Not introduced here, but since defaults now describe a freshly created key, worth a sanity check that 50/min is the intended starting point.


MDX structure verified by inspection (tables well-formed, callout tags balanced, frontmatter intact). Mintlify's own preview built green (View Preview).

Match the "API keys are self-serve" phrasing already on the page;
"self-minted" wasn't used anywhere else in the docs.

Refs: INT2-929
@github-actions

github-actions Bot commented Jul 17, 2026

Copy link
Copy Markdown

Claude finished @n-xlkt's task in 56s —— View job


Code Review: docs(api-keys): revise rate limit copy

  • Read changed files and full diff
  • Check against AGENTS.md style guide
  • Verify anchor-slug / cross-link claims
  • Post review

Clean, well-scoped copy change. The reframe (self-serve key → default limits, elevated on request) is applied consistently across all four files, and every issue raised in the earlier review rounds has since been resolved on-branch:

  • "elevated limits" residuals (api-keys.mdx:59/:98) — fixed in aaa7fb5; line 59 now reads "on every request" and line 98 "preserving your key's rate limits."
  • "self-minted" (api-keys.mdx:6) — fixed in 82a41ec; the lead paragraph now uses "self-serve API keys," matching line 10.

Nothing blocking.

✅ Verified

  • Anchor migration — grep for the old (#default-rate-limits-no-api-key, #api-key-rate-limits) and new (#default-rate-limits, #elevated-rate-limits) slugs finds no internal links anywhere in the repo, so no cross-links break. The only in-page anchor (#proxy-api, api-keys.mdx:122) is untouched.
  • Residual phrasing — grep for "raise your rate limits" / "available for anyone" / "generally not required" / "(no API key)" / "elevated limits" / "self-minted" all come back empty.
  • Style guideAPI key casing (§5), 2–3-sentence paragraphs (§2.10), and <Tip>/<Warning>/<Callout> usage all conform. references/api/quickstart.mdx is the §3.7 exception, and this one-line edit is a faithful copy trim, not a rewrite.

🔵 Minor (non-blocking): the no-key path is now undocumented

The old copy stated default limits applied to unauthenticated traffic. The reframe now says the Default table applies "per API key" (api-keys.mdx:33) and the websockets guide drops "available for anyone with strict rate limits" (websockets.mdx:34). If the API/websocket is still reachable without a key, that behavior is now undocumented; if a key is effectively required, the page reads correctly. Worth a one-line confirmation with the team on which is intended — no change needed if a key is the expected entry point.

🔵 Minor (pre-existing, more visible now): default /quote limit

Now that the Default table is explicitly "per API key" rather than "no API key," the jump from /quote 50/min (default) to 10/s (elevated) is a larger step than the other endpoints. Not introduced here, but since defaults now describe a freshly created key, worth a sanity check that 50/min is the intended starting point.


MDX structure verified by inspection (tables well-formed, callout tags balanced, frontmatter intact), and Mintlify's own preview built green. LGTM.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants