Skip to main content

Official Python SDK for the Saturday Nutrition Intelligence API

Project description

Saturday Python SDK

PyPI License: MIT

Official Python SDK for the Saturday Nutrition Intelligence API.

Personalized fuel, hydration, and electrolyte prescriptions for endurance athletes.

Install

pip install saturday

Quick Start

from saturday import Saturday

client = Saturday(api_key="sk_live_...")

# Calculate a nutrition prescription
prescription = client.nutrition.calculate(
    activity_type="bike",
    duration_min=180,
    athlete_weight_kg=75,
    thermal_stress_level=7,
    is_race=True,
)

# Safety metadata is ALWAYS included — athlete safety is never paywalled
print(prescription["safety"]["warnings"])
print(f"Carbs: {prescription['carb_g_per_hr']} g/hr")
print(f"Sodium: {prescription['sodium_mg_per_hr']} mg/hr")
print(f"Fluid: {prescription['fluid_ml_per_hr']} mL/hr")

Features

  • Fully typed with py.typed marker (PEP 561)
  • Automatic retry with exponential backoff (429s and 5xx)
  • Typed errors (AuthenticationError, RateLimitError, ValidationError, NotFoundError)
  • API key and OAuth2 Bearer token authentication
  • Context manager support for clean connection handling
  • Safety types prominently surfaced (not_instructions documented)

Authentication

# API key (server-to-server)
client = Saturday(api_key="sk_live_...")

# OAuth2 Bearer token (athlete-delegated access)
client = Saturday(api_key="sk_live_...", bearer_token="eyJ...")

# Context manager for automatic cleanup
with Saturday(api_key="sk_live_...") as client:
    rx = client.nutrition.calculate(activity_type="run", duration_min=60)

Error Handling

from saturday import Saturday, RateLimitError, ValidationError, NotFoundError

client = Saturday(api_key="sk_live_...")

try:
    rx = client.nutrition.calculate(activity_type="swim", duration_min=60)
except ValidationError as e:
    print(f"Invalid request: {e} (param: {e.param})")
except RateLimitError as e:
    print(f"Rate limited. Retry after {e.retry_after}s")
except NotFoundError:
    print("Resource not found")

Resources

Resource Description
client.nutrition Calculate prescriptions, batch calculate
client.athletes Athlete CRUD, settings, batch create, GDPR export
client.activities Activity CRUD, prescription calculation, feedback
client.products Product search, barcode lookup, curated list
client.ai AI coaching conversations
client.webhooks Webhook registration and management
client.organizations Team/org management with members
client.gear Athlete gear inventory
client.knowledge Sports nutrition knowledge base search

Documentation

Full API documentation: docs.saturday.fit

Requirements

  • Python 3.9+
  • httpx 0.25+

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

saturday-0.3.0.tar.gz (10.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

saturday-0.3.0-py3-none-any.whl (10.8 kB view details)

Uploaded Python 3

File details

Details for the file saturday-0.3.0.tar.gz.

File metadata

  • Download URL: saturday-0.3.0.tar.gz
  • Upload date:
  • Size: 10.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for saturday-0.3.0.tar.gz
Algorithm Hash digest
SHA256 982820d8f6e9ac68206ef6fd4b482c7b6367c8f80f597cfb0e4e4a4ff9d8ba9c
MD5 86aed7304bb70d4fd8dc3bb386b78d1e
BLAKE2b-256 be74e0f18bb4a072aa15a91067cc13b303ee6383c8eb9164da9ada1a515ca1b1

See more details on using hashes here.

File details

Details for the file saturday-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: saturday-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 10.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for saturday-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8db6d6bd1c2d5fa85ede64ad618a51eebe2379b141a0bf0c8e86e8d10a35bbf3
MD5 a3d4ecde529c3e8b294c4154bac26502
BLAKE2b-256 6fd5d56acd87e95b5df4814004b0163d0b8894e7c038b02237966ec53cc532fc

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page