Skip to main content

Overview

Provider webhook subscriptions tell a wearable provider (Polar, Oura, Strava) where to send event notifications. When an active subscription is in place, the provider pushes a lightweight notification to your Open Wearables instance whenever new data is available. Open Wearables then fetches, normalizes, and stores the data — and can forward it onward via Outgoing Webhooks.
This page covers provider → Open Wearables subscriptions (inbound). For Open Wearables → your app event delivery, see the Outgoing Webhooks guide.
All endpoints require a developer Bearer token:
Base path: /api/v1/providers/{provider}/webhooks/subscriptions Supported {provider} values: polar, oura, strava

Provider differences

Polar only: when you register or update a webhook, Polar immediately sends a PING to the configured URL. The request must respond 200 OK before Polar accepts the subscription. Use a publicly reachable URL (e.g. set up via ngrok).

Endpoints

List subscriptions

Returns all active subscriptions for a provider.
Response:

Register subscriptions

Creates a new subscription (or updates an existing one if the URL changed). Pass callback_url as a query parameter.
Provider-specific behaviour:
Polar: the signature_secret_key is returned by Polar exactly once, on creation. Open Wearables saves it automatically to the provider_settings table (webhook_secret column). If you need to rotate it, delete and recreate the webhook.

Get a subscription

Fetch a single subscription by ID.
Response:
Returns { "subscription": null } when the subscription is not found.
Get by ID is currently implemented for Oura only. Polar and Strava return 501 Not Implemented — use list subscriptions instead.

Update a subscription

Change the callback URL of an existing subscription.
Response:
On error:
Polar: updating the URL triggers a new PING from Polar to the new address. If the URL does not respond 200 OK, the update is rejected by Polar and the endpoint returns status: "error".
Possible status values: updated, patched, deleted, created, skipped, error.

Delete a subscription

Remove a webhook subscription from the provider.
Response:

Renew subscriptions (Oura only)

Oura subscriptions have an expiration_time. Call this endpoint to extend all active subscriptions before they expire.
Response:

Inbound event endpoints

These endpoints receive the actual event notifications from providers. They are not management operations — you do not call them directly. The callback URL you register with a provider must point to POST /api/v1/providers/{provider}/webhooks. For local development, use ngrok to expose that endpoint publicly.

Response schema reference

Subscription objects

Each provider returns a different subscription shape: Polar Oura Strava

Operation result

Returned by delete and update endpoints.