openapi: 3.0.3
info:
title: Ultrahuman Partner (UltraSignal) Metrics User API
description: 'The Ultrahuman Partner API gives approved partners read access to user-consented health metrics from the Ultrahuman Ring AIR / Ring Pro and, for users with an active M1 patch, the Ultrahuman CGM. Access is secured with OAuth 2.0 (Authorization Code Grant plus Refresh Token flow) across three scopes: profile, ring_data, and cgm_data. Access is not self-serve - partners apply to the developer program and are issued a Client ID, Client Secret, and a registered redirect URI during onboarding; end users authorize data sharing from the Ultrahuman app (Profile -> Settings -> Partner ID). Access tokens expire in ~1 day (86400 seconds); refresh tokens rotate on each exchange.
IMPORTANT: This document is MODELED by API Evangelist from Ultrahuman''s public partner developer documentation. Endpoint paths, scopes, OAuth flows, query parameters, and the documented metric families are drawn from the docs; exact request/response schemas are approximations and should be verified against the live developer portal. Ultrahuman also documents a personal-token variant at GET /api/v1/partner/daily_metrics for a developer''s own ring data.'
version: '1.0'
contact:
name: Ultrahuman Partnerships
url: https://partnerships.ultrahuman.com/
x-endpointsModeled: true
servers:
- url: https://partner.ultrahuman.com
description: Ultrahuman Partner API
tags:
- name: User
description: Basic authorized-user profile information.
paths:
/api/partners/v1/user_data/user_info:
get:
operationId: getUserInfo
tags:
- User
summary: Get the authorized user's basic profile
description: Returns basic profile info (user ID, time zone, etc.) for the authorized user. Requires the profile scope.
security:
- bearerAuth: []
responses:
'200':
description: Basic user profile.
content:
application/json:
schema:
$ref: '#/components/schemas/UserInfo'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
components:
schemas:
UserInfo:
type: object
properties:
id:
type: string
timezone:
type: string
example: Asia/Kolkata
responses:
Unauthorized:
description: Missing, invalid, or expired access token.
NotFound:
description: User not found, or the partner lacks permission for the requested data.
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: OAuth 2.0 access token in the Authorization header.