Skip to main content

Quickstart

1. Get your API key

Self-serve: sign up at saturday.fit/api for $5.39/month, no contract. Your key is revealed once after checkout and emailed to you. An AI agent can do this for you: POST /v1/signup (no auth) returns a hosted checkout link. Not sure self-serve is your lane? See Getting Access. Platform partners: keys come with your agreement. Contact api@saturday.fit. Keys carry an environment prefix. Production keys start with sk_live_, sandbox keys with sk_test_. Each environment keeps separate key records, so a key issued by the sandbox does not authenticate against production. See Authentication for what each environment does and which base URL it uses.
Treat your key like a password. It authenticates every request and spends your daily call allowance.
The examples below use the production base URL and read a production key from SATURDAY_API_KEY. For sandbox work, replace the base URL with the one issued with your sk_test_ key:

2. Make your first calculation

The prescription endpoint takes activity parameters and returns fuel, hydration, and sodium targets. Only activity_type and duration_min are required; everything else sharpens the result.

Install an SDK (optional)

Saturday publishes SDKs for Python and TypeScript:
Both SDKs default to https://api.saturday.fit and accept a base URL override (base_url in Python, baseUrl in TypeScript) for sandbox work. SDK 0.6.0 aligns prescription, batch, import, pagination, and athlete-settings types with the API while preserving raw response objects. Activity calculations return a tiered envelope; stored-prescription reads return {prescription, safety}, not the flat nutrition response above. Safety warnings may be null. Existing typed callers should read the migration notes in the TypeScript SDK or Python SDK. AI-to-AI conversations, where your AI talks with Saturday’s assistant, remain feature-gated. With ai_to_ai_conversations access, use ai.createConversationStream / ai.sendMessageStream in TypeScript, or the async context-managed ai.create_conversation_stream / ai.send_message_stream methods in Python. Consume all events, including safety warnings and errors. These writes are never automatically replayed, and a partial stream is not a complete answer. Legacy AI JSON-write methods fail locally with migration guidance; conversation metadata/history reads remain JSON. The SDK READMEs include executable stream examples and cancellation guidance.

3. Read the response

A successful response returns a prescription with safety metadata. The request above has no athlete_id, so a partner-key request returns teaser ranges. The following illustrates an exact response for an entitled athlete with complete profile and activity inputs:
A response may also carry a precision object describing which profile fields are still missing and how much they widen the answer. See Onboarding for how to collect them.
Safety data is never gated. Every response carries full safety metadata regardless of subscription status, because overdrinking can cause hyponatremia, a potentially fatal condition.

4. Teaser and full responses

tier reflects the athlete’s subscription and trial status, not your key’s environment. A partner-key request with no athlete attached returns teaser ranges. A full-tier response can also contain ranges when profile or activity inputs are incomplete; check the returned fields and precision, not tier alone. Teaser responses carry a subscription_cta field, and their attribution.required is true:
See Freemium Model for how the tiers are decided and how the subscribe loop pays you.

5. Next steps

1

Create an athlete profile

Athletes stores athlete settings (weight, sweat level, preferences) so calculations stop relying on defaults.
2

Understand safety

Safety covers the safety model and the ceilings above.
3

Track activities

Activities creates activities, attaches prescriptions, and collects post-session feedback.
4

Go to production

Authentication covers swapping a sk_test_ key and its sandbox base URL for a sk_live_ key against api.saturday.fit.