Skip to main content
GET
List Users

Authorizations

Authorization
string
header
required

The access token received from the authorization server in the OAuth 2.0 flow.

Headers

X-Open-Wearables-API-Key
string | null

Query Parameters

page
integer
default:1

Page number (1-based)

Required range: x >= 1
limit
integer
default:20

Number of results per page

Required range: 1 <= x <= 100
sort_by
enum<string> | null
default:created_at

Field to sort by. 'name' orders by first name, then last name, with unnamed users last

Available options:
created_at,
email,
first_name,
last_name,
name,
last_synced_at
sort_order
enum<string>
default:desc

Sort order

Available options:
asc,
desc
search
string | null

Search across first_name, last_name, and email (partial match). A term that is a valid UUID also matches that user's id exactly

email
string<email> | null

Filter by exact email

external_user_id
string | null
deprecated

Filter by external user ID. Deprecated: no data-fetching endpoint (timeseries, workouts, sleep, summaries, health-scores, etc.) accepts external_user_id - they all require the Open Wearables UUID. This field was added early in the project but never wired into those endpoints, so it only works as a filter on GET /users. Store the UUID returned by POST /users in your own system instead.

provider
enum<string>[] | null

Filter by connected provider; repeat the parameter to match any of several. Matches connections in any status unless connection_status is also given

Supported data providers.

Available options:
apple,
samsung,
garmin,
google,
polar,
suunto,
whoop,
strava,
oura,
fitbit,
ultrahuman,
sensorbio,
unknown,
internal
connection_status
enum<string> | null

Narrow the provider filter to connections in this status Status of a user connection to a provider.

Available options:
active,
revoked,
expired
has_active_connection
boolean | null

True: users with at least one active connection. False: users with none, including those who never connected a provider

last_synced_before
string<date-time> | null

Users whose connections have all been idle since this timestamp, including those that never synced

include
enum<string>[]

Optional expansions to embed in each user; repeat the parameter for several

Optional expansions for user read models, requested via the include query parameter.

Available options:
connections

Response

Successful Response

items
UserRead · object[]
required
total
integer
required

Total number of items matching the query

Required range: x >= 0
page
integer
required

Current page number (1-based)

Required range: x >= 1
limit
integer
required

Number of items per page

pages
integer
required
read-only

Total number of pages.

has_next
boolean
required
read-only

Whether there is a next page.

has_prev
boolean
required
read-only

Whether there is a previous page.