All integrations
Available in v0.1.0

Oura data, in your own stack.

Users connect their Oura account over OAuth. Open Health Sync backfills their last 30 days, pulls every 6 hours, and with webhooks picks up changes and deletions within seconds.

Source
Smart ring
How the data arrives
Cloud API v2, OAuth 2.0, scheduled pulls, optional webhooks for updates and deletions.

What it collects.

Each record maps to the same model as every other source, with the provider, source and device it came from.

  • Sleep and sleep stages
  • Sleep score and readiness
  • Daily activity
  • Stress
  • Heart rate
  • SpO2
  • VO2 max
  • Workouts
  • Meditation and breathing sessions

How it works.

  1. 01

    The user connects

    Your server asks for a consent URL and sends the user to Oura. Tokens are stored encrypted.

  2. 02

    The server pulls

    A first backfill, then scheduled pulls, and webhooks where the provider sends them. Every raw payload is kept.

  3. 03

    You read one model

    Units, time zones and duplicates handled, served over REST, the read-only MCP server and FHIR R4.

Before you start.

  • Bring your own Oura API application. Personal access tokens were retired at the end of 2025.
  • Gen3 and later rings need an active Oura Membership for API access.
  • An application needs Oura's approval past its first 10 users.
  • A sleep period, workout or session the user deletes at Oura is removed here too, when webhooks are on.

Set it up.

Register your own Oura app, set its callback to <OHS_PUBLIC_URL>/oauth/oura/callback and put its credentials in .env. The guide has every step.

Terminal
# .envOHS_OURA_CLIENT_ID=...OHS_OURA_CLIENT_SECRET=...OHS_OURA_VERIFICATION_TOKEN=...# Ask for a consent URL, then send the user to authorize_urlcurl -s -X POST $OHS/v1/users/$USER_ID/connections/oura \  -H "Authorization: Bearer $KEY" -H 'Content-Type: application/json' \  -d '{"redirect_uri":"https://app.example.org/connected"}'# Read what came incurl -s "$OHS/v1/users/$USER_ID/sleep" -H "Authorization: Bearer $KEY"

Questions.

Can I use Oura with Open Health Sync today?

Yes. The Oura connector ships in v0.1.0.

Do I need anything from Oura?

Bring your own Oura API application. Personal access tokens were retired at the end of 2025.

Where does the data go?

Only to the server you run. Open Health Sync is self-hosted software, not a service: no account with us and no call home. Each user can be deleted with one call, raw files included.