Polar AccessLink API integration

Onboarding

The adapter is implemented; the OAuth application is awaiting provider approval.

Polar's AccessLink API serves a smaller but committed base — endurance athletes, coaching platforms and sports-science teams. Heart rate quality is the reason people choose it; Polar's chest straps remain a reference standard.

The API's defining quirk is its transactional model. You do not simply GET a resource: you open a transaction, read its contents, and commit it, at which point the data is considered delivered and will not be offered again. Forget to commit and you re-read forever; commit before you have durably stored the data and it is gone.

WearLink wraps the transaction lifecycle so the commit only happens after the records are persisted and normalised on our side.

How the Polar integration works

Authentication
OAuth 2.0 authorisation code
Sync model
Pull + push. Polar webhooks are notify-only.
API base
https://www.polaraccesslink.com
Integration type
Cloud OAuth

Polar data available through WearLink

Everything below arrives in the shared normalised schema. The same field names and units apply whether the record came from Polar or from any other provider, so your scoring, charting and storage code is written once.

  • Training sessions
  • Heart rate
  • Steps
  • Calories
  • Sleep

Webhook events you can subscribe to

workout.createdheart_rate.createdsteps.createdsleep.created

Connect a Polar user

Two calls: create a connect session for your end user, then read their normalised data. You never handle Polar OAuth credentials, token refresh or webhook registration.

# 1. Create a connect session for your end-user
curl -X POST https://wearlink.io/api/v1/connections/session \
  -H "Authorization: Bearer $WEARLINK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"user_id": "'"$USER_ID"'", "provider": "polar"}'

# → { "connect_url": "https://wearlink.io/widget/connect?token=..." }
# Redirect the user there; they authorise polar and land back on your redirect_uri.

# 2. Pull normalised data whenever you want
curl -H "Authorization: Bearer $WEARLINK_API_KEY" \
  "https://wearlink.io/api/v1/users/$USER_ID/summaries?provider=polar&days=7"

What makes the Polar API hard to integrate directly

These are the things that turn an estimated one-week integration into a one-month one. They are worth knowing whether you use WearLink or build it yourself.

Transactions are commit-once

Committing a Polar transaction is destructive from your perspective — that data will not be re-offered. Storing before committing is not optional.

No transaction means no data

If there is nothing new, Polar returns an empty transaction rather than an error. Treating that as a failure produces noisy alerting.

Sleep coverage depends on the device

Not every Polar device records sleep, and the sleep model differs between generations.

Polar API — frequently asked questions

What is a Polar AccessLink transaction?
A server-side snapshot of pending data. You create it, read from it, then commit it to acknowledge receipt. Uncommitted transactions expire and the data is offered again; committed data is not.
Is Polar available on WearLink now?
The adapter is implemented but the OAuth application is still in onboarding. Check /providers for the live status, which reads from the runtime configuration.
Does Polar give raw R-R intervals?
Some Polar devices expose beat-to-beat data in exercise files. Availability depends on the device and the recording mode, not on WearLink.

Other integrations

Start with Polar — free for up to 3 users

No credit card. Create an account, add your provider credentials once, and your users connect through a hosted widget or our mobile SDK.