Skip to main content

Documentation Index

Fetch the complete documentation index at: https://lava.so/docs/llms.txt

Use this file to discover all available pages before exploring further.

Oura Ring v2 API for reading a user’s biometric and wellness data — sleep stages, daily readiness, activity, heart rate, SpO2, stress, resilience, workouts, and sessions. Best for agents that personalize coaching, recovery, or health context on top of the user’s own ring data. Each user connects via Oura OAuth (cloud.ouraring.com); sandbox endpoints under /v2/sandbox/usercollection/ return canned data for development without a ring. 14 example endpoints available through Lava’s AI Gateway. See the Oura API docs for full documentation.
This provider requires your own credentials — connect your API key or OAuth account before use.
This is a catch-all provider — any valid URL under https://api.ouraring.com is supported. Oura Ring v2 API. Base: https://api.ouraring.com. Auth: Bearer token (the user’s Oura OAuth access token, obtained by connecting at cloud.ouraring.com). All reads are GET under /v2/usercollection/RESOURCE; single docs at /v2/usercollection/RESOURCE/DOCUMENT_ID. Daily/aggregate resources (daily_sleep, daily_activity, daily_readiness, daily_stress, daily_spo2, daily_resilience, daily_cardiovascular_age, vO2_max, sleep, sleep_time, workout, session, tag, enhanced_tag, rest_mode_period, ring_configuration) accept start_date and end_date as YYYY-MM-DD; high-frequency timeseries (heartrate, ring_battery_level, interbeat_interval) accept start_datetime and end_datetime as ISO-8601. Pagination: pass next_token from the previous response; envelope wraps an array of data plus a next_token field. Use the fields query param to trim payloads. Sandbox copies at /v2/sandbox/usercollection/ return canned data for testing. Rate limit: 5000 requests per 5-minute window per token. Errors are RFC7807-shaped with status, title, and detail fields. See https://cloud.ouraring.com/v2/docs for full reference. The endpoints below are curated examples.

Endpoints

Get the authenticated user’s profile (id, age, weight, height, biological_sex, email). Use as an auth check after the user connects via Oura OAuth.

GET https://api.ouraring.com/v2/usercollection/personal_info — Free
const data = await lava.gateway('https://api.ouraring.com/v2/usercollection/personal_info', { method: 'GET' });

List daily sleep summary documents (overall sleep score and contributors). Filter with start_date and end_date as YYYY-MM-DD; paginate with next_token.

GET https://api.ouraring.com/v2/usercollection/daily_sleep?start_date=2026-04-01&end_date=2026-04-30 — Free
const data = await lava.gateway('https://api.ouraring.com/v2/usercollection/daily_sleep?start_date=2026-04-01&end_date=2026-04-30', { method: 'GET' });

List detailed sleep period documents (per sleep period: stages, HRV, latency, efficiency, low/high heart rate). Filter with start_date and end_date as YYYY-MM-DD.

GET https://api.ouraring.com/v2/usercollection/sleep?start_date=2026-04-01&end_date=2026-04-30 — Free
const data = await lava.gateway('https://api.ouraring.com/v2/usercollection/sleep?start_date=2026-04-01&end_date=2026-04-30', { method: 'GET' });

List daily readiness scores with contributors (resting heart rate, HRV balance, recovery index, body temperature, etc.). Filter with start_date and end_date.

GET https://api.ouraring.com/v2/usercollection/daily_readiness?start_date=2026-04-01&end_date=2026-04-30 — Free
const data = await lava.gateway('https://api.ouraring.com/v2/usercollection/daily_readiness?start_date=2026-04-01&end_date=2026-04-30', { method: 'GET' });

List daily activity summaries (steps, calories, METs, inactive/low/medium/high activity minutes, activity score). Filter with start_date and end_date.

GET https://api.ouraring.com/v2/usercollection/daily_activity?start_date=2026-04-01&end_date=2026-04-30 — Free
const data = await lava.gateway('https://api.ouraring.com/v2/usercollection/daily_activity?start_date=2026-04-01&end_date=2026-04-30', { method: 'GET' });

List daily stress summaries (stress_high, recovery_high, day_summary). Filter with start_date and end_date.

GET https://api.ouraring.com/v2/usercollection/daily_stress?start_date=2026-04-01&end_date=2026-04-30 — Free
const data = await lava.gateway('https://api.ouraring.com/v2/usercollection/daily_stress?start_date=2026-04-01&end_date=2026-04-30', { method: 'GET' });

List daily SpO2 (blood oxygen) summaries derived from sleep. Filter with start_date and end_date.

GET https://api.ouraring.com/v2/usercollection/daily_spo2?start_date=2026-04-01&end_date=2026-04-30 — Free
const data = await lava.gateway('https://api.ouraring.com/v2/usercollection/daily_spo2?start_date=2026-04-01&end_date=2026-04-30', { method: 'GET' });

List daily resilience scores (Oura’s longer-term stress-load metric). Filter with start_date and end_date.

GET https://api.ouraring.com/v2/usercollection/daily_resilience?start_date=2026-04-01&end_date=2026-04-30 — Free
const data = await lava.gateway('https://api.ouraring.com/v2/usercollection/daily_resilience?start_date=2026-04-01&end_date=2026-04-30', { method: 'GET' });

List heart rate timeseries samples (BPM with ISO-8601 timestamp and source label). Use start_datetime and end_datetime (ISO-8601). Pass latest=true for the most recent sample only.

GET https://api.ouraring.com/v2/usercollection/heartrate?start_datetime=2026-04-29T00:00:00Z&end_datetime=2026-04-30T00:00:00Z — Free
const data = await lava.gateway('https://api.ouraring.com/v2/usercollection/heartrate?start_datetime=2026-04-29T00:00:00Z&end_datetime=2026-04-30T00:00:00Z', { method: 'GET' });

List workout documents (activity type, intensity, calories, distance, start/end times). Filter with start_date and end_date.

GET https://api.ouraring.com/v2/usercollection/workout?start_date=2026-04-01&end_date=2026-04-30 — Free
const data = await lava.gateway('https://api.ouraring.com/v2/usercollection/workout?start_date=2026-04-01&end_date=2026-04-30', { method: 'GET' });

List session documents (meditation, breathing, relaxation sessions logged in the Oura app). Filter with start_date and end_date.

GET https://api.ouraring.com/v2/usercollection/session?start_date=2026-04-01&end_date=2026-04-30 — Free
const data = await lava.gateway('https://api.ouraring.com/v2/usercollection/session?start_date=2026-04-01&end_date=2026-04-30', { method: 'GET' });
GET https://api.ouraring.com/v2/usercollection/sleep_time?start_date=2026-04-01&end_date=2026-04-30 — Free
const data = await lava.gateway('https://api.ouraring.com/v2/usercollection/sleep_time?start_date=2026-04-01&end_date=2026-04-30', { method: 'GET' });

List VO2 max estimates (cardiorespiratory fitness). Filter with start_date and end_date.

GET https://api.ouraring.com/v2/usercollection/vO2_max?start_date=2026-04-01&end_date=2026-04-30 — Free
const data = await lava.gateway('https://api.ouraring.com/v2/usercollection/vO2_max?start_date=2026-04-01&end_date=2026-04-30', { method: 'GET' });

List user-applied tags from the Oura app (e.g., caffeine, alcohol, late meal). Use the enhanced_tag collection (the legacy /tag endpoint is deprecated). Filter with start_date and end_date.

GET https://api.ouraring.com/v2/usercollection/enhanced_tag?start_date=2026-04-01&end_date=2026-04-30 — Free
const data = await lava.gateway('https://api.ouraring.com/v2/usercollection/enhanced_tag?start_date=2026-04-01&end_date=2026-04-30', { method: 'GET' });

Next Steps

All Providers

Browse all supported AI providers

Forward Proxy

Learn how to construct proxy URLs and authenticate requests