Need help with your Suunto integration? Pop into our Discord if you have questions or want to discover how Open Wearables can solve your problems.
Overview
Suunto provides access to workout, sleep, recovery, and 24/7 activity data from Suunto watches through the Suunto Cloud API. The integration uses OAuth 2.0 for authentication and supports both pull-based syncing (historical data over REST) and real-time webhooks (Suunto pushes events as they happen). Access requires membership in the Suunto Developer Program - you must apply to become a Suunto partner and subscribe to the Developer API product. Every request also carries a subscription key (Ocp-Apim-Subscription-Key) alongside the OAuth bearer token.
Supported data types
Data delivery
Webhook payloads are signed with HMAC-SHA256 over the raw request body, delivered in the
X-HMAC-SHA256-Signature header. Open Wearables verifies this against SUUNTO_WEBHOOK_SECRET (which defaults to your app SECRET_KEY). See the configuration step below.What you need by the end
- Partner approval: an approved application to the Suunto Developer Program
- Subscription key: from your Developer API subscription
- App credentials: Client ID + Client Secret from your Suunto profile’s OAuth settings
- Redirect URI registered in your Suunto OAuth settings
Prerequisites
- A company or organization - Suunto Cloud API access is granted only to companies/organizations building tools, apps, or services (commercial or non-commercial). Suunto does not grant Cloud API access for personal use
- A Suunto account (the same one used with the Suunto app), for testing with real device data
This company requirement applies to the Suunto Cloud API used here (
cloudapi.suunto.com). It is separate from on-watch SuuntoPlus apps, which any developer can build without a partner relationship.Application walkthrough
1
Apply to the Suunto Developer Program
Suunto Cloud API access is gated behind partner approval and is granted only to companies/organizations - not for personal use. Submit an application from the Suunto Partners page using the Apply now form, describing your organization and intended integration. Select Suunto Cloud API so you are issued the API agreement to sign.
Approval is handled by Suunto and is not instant - expect a response within about two weeks. You cannot create OAuth credentials until your partner application is accepted, the API agreement is signed, and you have access to the Suunto API Zone.
2
Subscribe to the Developer API product
Sign in to the Suunto API Zone and open the Developer API product. Subscribe to it (you can name the subscription, e.g. “Open Wearables”).Once the subscription is Active, open your Profile → Your subscriptions to retrieve your subscription key. Both a primary and a secondary key are provided - either works, and the secondary key lets you rotate without downtime.
The Developer API tier allows 10 calls/minute up to a maximum of 200 calls/week. Plan your sync volume accordingly and request a higher tier from Suunto if you need more.
3
Configure OAuth settings
In your Suunto Profile, fill in the OAuth configuration fields:
- App name: The name shown to users on the consent screen (e.g. “Open Wearables”)
- Client secret: A secret value you set for your app
- Redirect URI: Your OAuth callback URL. Open Wearables derives this from your
API_BASE_URLas{API_BASE_URL}/api/v1/oauth/suunto/callback, so register that exact URL here. For local development, expose your backend with ngrok and register e.g.https://your-subdomain.ngrok-free.app/api/v1/oauth/suunto/callback. In production use your public domain.
4
Configure credentials in Open Wearables
Add the following to your Configuration details:
.env file:5
Connect a user via OAuth
With credentials configured and your Open Wearables instance running, initiate the OAuth flow.1. Get the authorization URL:Response:2. Redirect the user to the You should see a connection with
authorization_url. They will log in to Suunto and authorize your app.3. Suunto redirects back to the callback URI derived from API_BASE_URL ({API_BASE_URL}/api/v1/oauth/suunto/callback). Open Wearables automatically exchanges the authorization code for access and refresh tokens, and reads the Suunto user identity from the JWT access token (sub and user claims).4. Verify the connection:"provider": "suunto" and "status": "active".The
redirect_uri parameter in the authorize call is where the user is sent after the flow completes (e.g., back to your app). This is separate from the server-side OAuth callback ({API_BASE_URL}/api/v1/oauth/suunto/callback) that Suunto sends the authorization code to.6
Enable webhooks (optional)
Suunto delivers events in push mode - each notification carries the data inline, so no extra fetch is needed (workouts are re-fetched via REST using their Suunto signs each request body with HMAC-SHA256 and sends the result in the
workoutKey to guarantee the canonical schema).Webhooks are configured on Suunto’s side: register your notification URL with Suunto and point it at:X-HMAC-SHA256-Signature header. Open Wearables verifies it against SUUNTO_WEBHOOK_SECRET (defaulting to SECRET_KEY), so make sure the notification secret configured with Suunto matches that value.The endpoint acknowledges within Suunto’s 2-second timeout and enqueues processing in the background. If webhooks aren’t configured, periodic REST polling still keeps data current.
7
Sync data
An initial sync is triggered automatically after a successful OAuth connection. To manually sync or fetch historical data:You can also sync specific data types:
8
Verify the integration
Once data has synced, fetch it via the Open Wearables API:If data is returned, your Suunto integration is working end-to-end.
API Details
Rate Limits
The Developer API tier is capped at:
If you need more throughput, request a higher tier from Suunto through the API Zone.
Next Steps
API Reference
Explore the Open Wearables API endpoints.
Coverage Matrix
See the full data coverage comparison.
Support
Need Help?
- Join our Discord and ask a question.
- Check GitHub Discussions.
- Check the Suunto API Zone and the How to start guide.

