Rate limits and caching
| Endpoint | Cache |
|---|---|
/api/network/tapes | 60 s SWR |
/api/network/program, /api/broadcast/program | 30 s SWR |
/api/network/pulse | 300 s SWR |
/api/network/field-record/me | no-store |
| static market history | cacheable per interval |
Keys carry a tier — free · builder · pro · enterprise — and permissions: ["read","signal"]. Both are recorded today and enforced at the edge later. Design for 429: back off, keep the last good payload, render it as stale rather than empty.
Being a good client
Section titled “Being a good client”- Poll REST every 30 s; do not block first paint on a WebSocket.
- Batch Gamma reads (100 per page,
next_cursor) and filter locally. - Never hit GDELT for news; use Google News RSS.
- Keep
NEXT_PUBLIC_*values static: they are inlined at build time.