Search all guides

Reference · Tools

Oura integration

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.

Works as
Action
Tool name
oura
Operations
1 — Get
Parameters
7
Outputs
Output, Error
Credentials
Oura API
Official docs
Oura docs cloud.ouraring.com

What you can build with Oura

  • 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.

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.

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 DatedateTimeNo—End date for the summary retrieval. If omitted, it defaults to the current day.
— Start DatedateTimeNo—Start 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 DatedateTimeNo—End date for the summary retrieval. If omitted, it defaults to the current day.
— Start DatedateTimeNo—Start 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 DatedateTimeNo—End date for the summary retrieval. If omitted, it defaults to the current day.
— Start DatedateTimeNo—Start 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 out — getActivity, 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.

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

This tool retrieves personal health and wellness data from the Oura Ring API, including profile, activity, readiness, and sleep summaries. It is ideal for fetching daily summaries or personal information when a user specifically mentions Oura Ring data. The tool produces structured data containing the requested health and wellness information.

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 Oura

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 reviewed . Spotted something wrong? Tell us.