Reference · Tools

Oura

Retrieve personal health and wellness data from the Oura Ring API, including profile, activity, readiness, and sleep summaries.

Action Productivity v1

The Oura node retrieves personal health and wellness data from the Oura Ring API — profile details plus activity, readiness and sleep summaries. A typical build is logging each night's sleep and readiness scores into a personal dashboard automatically.

Node type
Action
Parameters
7
Outputs
Output, Error
Credentials
Oura API

Oura

Retrieve health data from the Oura Ring API

Overview

Oura is a health and wellness ring that tracks sleep, activity, and readiness. This tool retrieves data from the Oura Ring API v2, providing access to the user’s personal profile information and daily summaries for activity, readiness, and sleep. All operations are read-only GET requests. Uses Bearer Token authentication with a Personal Access Token obtained from the Oura developer portal.

Category: Productivity
Tool Name: oura
Version: 1

Appearance: Icon: lucide-Activity | Color: #2D2D2D

Node Type

Action — processes input items and produces output

Input / Output

DirectionPort(s)
InputInput
OutputOutput, Error

Credentials

This tool requires Oura API credentials. See the Credentials Guide for setup instructions.

Resources

ResourceValue
Profileprofile
Summarysummary

Operations

Profile (profile)

OperationValueDescription
GetgetGet the user’s personal information

Summary (summary)

OperationValueDescription
Get Activity SummarygetActivityGet the user’s activity summary
Get Readiness SummarygetReadinessGet the user’s readiness summary
Get Sleep PeriodsgetSleepGet the user’s sleep summary

Parameters

Profile: Get takes no parameters of its own — see All Operations.

Summary: Get Activity Summary

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo5Max number of results to return. Accepts values from 1 to 10. (shown when Return All is false)
FilterscollectionNo{}Optional date range applied to the summary request.
— End DatedateTimeNoEnd date for the summary retrieval. If omitted, it defaults to the current day.
— Start DatedateTimeNoStart date for the summary retrieval. If omitted, it defaults to a week ago.

Summary: Get Readiness Summary

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo5Max number of results to return. Accepts values from 1 to 10. (shown when Return All is false)
FilterscollectionNo{}Optional date range applied to the summary request.
— End DatedateTimeNoEnd date for the summary retrieval. If omitted, it defaults to the current day.
— Start DatedateTimeNoStart date for the summary retrieval. If omitted, it defaults to a week ago.

Summary: Get Sleep Periods

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo5Max number of results to return. Accepts values from 1 to 10. (shown when Return All is false)
FilterscollectionNo{}Optional date range applied to the summary request.
— End DatedateTimeNoEnd date for the summary retrieval. If omitted, it defaults to the current day.
— Start DatedateTimeNoStart date for the summary retrieval. If omitted, it defaults to a week ago.

All Operations

ParameterTypeRequiredDefaultDescription
Max ConcurrencynumberNo10Maximum number of items to process concurrently.

Output Data

Each returned record is merged into the item JSON at the top level, so the incoming item’s own fields pass through alongside the health data and binary data on the input item is forwarded unchanged.

  • Profile: Get returns a single record, so one input item produces exactly one output item.
  • The three Summary operations fan outgetActivity, getReadiness and getSleep each return a collection of daily records, and the node emits one output item per daily record. Ten days of sleep summaries from a single input item become ten output items.
  • Empty ranges are not silently dropped. When a Summary operation matches no records at all, the node still emits one item: the input item’s JSON with _ouraNoResults: true added. Check for that flag before treating a downstream item as real health data.

Return All and Limit only affect the Summary operations. With Return All on, every record in the requested range is emitted; with it off, the records are trimmed to Limit (at most 10) before they are turned into items. Start Date and End Date narrow the range that is requested in the first place.

Reference a returned field downstream by expression — the daily record’s fields sit directly on the item, so {{ $json.fieldName }} addresses them, and {{ $json._ouraNoResults }} tells you the range came back empty.

Usage Examples

  • Get the user’s Oura Ring profile information
  • Get the last 7 days of sleep summaries
  • Retrieve all activity data for a specific date range
  • Get readiness scores from January 2024
  • Fetch daily sleep data from the Oura Ring

Example Configuration

Read the ring owner’s profile:

{
  "type": "oura",
  "parameters": {
    "resource": "profile",
    "operation": "get"
  }
}

Pull every activity summary in a date range:

{
  "type": "oura",
  "parameters": {
    "resource": "summary",
    "operation": "getActivity",
    "returnAll": true,
    "filters": {
      "start": "2024-01-01T00:00:00Z",
      "end": "2024-01-31T23:59:59Z"
    }
  }
}

Cap a sleep query to a fixed number of days:

{
  "type": "oura",
  "parameters": {
    "resource": "summary",
    "operation": "getSleep",
    "returnAll": false,
    "limit": 10,
    "filters": {
      "start": "2024-01-01T00:00:00Z",
      "end": "2024-01-31T23:59:59Z"
    }
  }
}

Fetch readiness scores without a date filter, letting the API pick the default window:

{
  "type": "oura",
  "parameters": {
    "resource": "summary",
    "operation": "getReadiness",
    "returnAll": true
  }
}

Retrieve the last seven days of sleep data:

{
  "type": "oura",
  "parameters": {
    "resource": "summary",
    "operation": "getSleep",
    "returnAll": false,
    "limit": 7,
    "filters": {
      "start": "2024-01-24T00:00:00Z",
      "end": "2024-01-31T23:59:59Z"
    }
  }
}

Build a monthly activity report, throttling how many input items are handled at once:

{
  "type": "oura",
  "parameters": {
    "resource": "summary",
    "operation": "getActivity",
    "returnAll": true,
    "filters": {
      "start": "2024-01-01T00:00:00Z",
      "end": "2024-01-31T23:59:59Z"
    },
    "maxConcurrency": 5
  }
}

Run a single profile check with concurrency pinned to one:

{
  "type": "oura",
  "parameters": {
    "resource": "profile",
    "operation": "get",
    "maxConcurrency": 1
  }
}

Error Handling

ModeBehavior
stopHalts workflow on first error
continueSkips failed items, passes successful ones through
errorPortRoutes failed items to Error output port

Tips

Retrieve health data (profile, activity, readiness, sleep) from the Oura Ring API.

Frequently asked questions

What data can it retrieve?

Profile information along with activity, readiness and sleep summaries — the daily summary data rather than raw sensor streams.

Is this read-only?

Yes. It retrieves data from the Oura API; it does not write anything back to the ring or the account.

What is a good use for it?

Feeding personal metrics into a dashboard or journal automatically, or correlating sleep and readiness with data from other systems.

Which credential does it need?

An Oura API credential for the account whose data you are retrieving.

Build with the Oura node

Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need Oura API credentials first.

Open BusyBot

Last updated . Spotted something wrong? Tell us.