Skip to content
AF
Integration Guides

How to Integrate the Withings API (2026)

Last verified October 17, 2026 · 7 min read

Sources checked (13) · October 17, 2026
The Withings Public API gives your app the measurements from a user's Withings scales, blood pressure monitors, sleep sensors and trackers after they authorize you over OAuth 2.0. Setup is free with no prerequisites: create an application, send users to Withings' authorization URL, exchange the code within 30 seconds using a signed requesttoken call, then fetch data with getmeas and the other services, ideally after Withings notifies your callback URL. Access tokens last 3 hours, the standard API allows 120 requests per minute per application, and Withings announced that from October 12, 2026 newly created accounts would need Withings+ to share data with a free-plan app, a notice that was gone from its developer home page by October 22, 2026.

Withings makes scales, blood pressure monitors, sleep sensors, trackers and thermometers, and its cloud API returns what those devices measure. This guide covers the Public API, which Withings describes as "designed for individuals and partners without a formal contract", from Withings' developer site as read on October 17, 2026. Withings' other solutions (Cellular, Withings RPM and Logistics Services) are out of scope here.

One change dominates 2026 planning. Withings' developer home page, as the Internet Archive captured it on October 16, 2026, said Withings+ becomes required on the Start for Free API plan from October 12, 2026: Withings accounts created after that date need a membership to share health data with a free-plan app, including apps that are already live. Accounts created before that date are unaffected, and Withings said Enterprise lifts the requirement for specific use cases. That notice was no longer on the home page when we read it on October 22, 2026, and Withings' plans page did not render for us, so we could not confirm whether the requirement still stands; ask Withings before you plan around it. If you are still choosing a provider, start with wearable data APIs.

Access and approval#

QuestionWhat Withings' pages say
What does it cost to start?"There are no prerequisites, and free access is provided" on the EU Medical Cloud
Is there a review?None is described for the Public API: you create an application and get a client_id and client_secret
What do users need?A Withings device set up in the Withings app; Withings announced that from October 12, 2026 new accounts need Withings+ to share with a free-plan app (see above)
Any limits on a new app?An app whose callback URL misses Withings' requirements stays in restricted mode, limited to 10 linked users
Where does data live?The EU Medical Cloud in France by default; a US Medical Cloud for HIPAA-covered entities, by request

Withings recommends creating the developer account with a shared professional email rather than a personal Withings account. Its developer dashboard has teams with three roles: Admin, Developer and Support Agent, and only an Admin can manage production applications. The cloud is fixed for good: Withings says your cloud is set when your access contract is created and cannot be switched afterwards.

Auth and scopes#

Withings uses OAuth 2.0 with the authorization-code flow. Send the user to its authorization URL:

GET https://account.withings.com/oauth2_user/authorize2
  ?response_type=code
  &client_id=YOUR_CLIENT_ID
  &scope=user.info,user.metrics,user.activity
  &redirect_uri=https://yourapp.example.com/callback
  &state=RANDOM_ANTI_CSRF_STRING

Scopes are comma-separated:

ScopeWhat Withings says it allows
user.activityPhysical activity and sleep data; also required for notification management
user.metricsHealth measurements, heart recordings, stethoscope data and goals; also required for notification management
user.infoAccount information, linked devices and goals, and device linking
user.sleepeventsNotifications when sleep events happen: bed in, bed out, inflate done

Two details are unusual. First, the authorization code is only valid for 30 seconds, so exchange it in the callback handler, not in a queue. Second, Withings signs some requests: you call getnonce on the signature service with an HMAC SHA-256 signature keyed by your client secret, then sign the token request with that nonce. The exchange itself is the requesttoken action on https://wbsapi.withings.net/v2/oauth2, sent with your client_id, redirect_uri, the code, grant_type=authorization_code, the nonce and the signature.

Token lifetimes are short at the front and long at the back:

TokenLifetime Withings documents
access_token3 hours
refresh_token1 year
The previous refresh_token8 hours after a new one is issued, or once the new access token is used

Every refresh returns a new refresh token, and Withings warns that failing to store it can lose you access once the old one expires. For testing, add mode=demo to the authorization request to log in as Withings' demo user.

Data: measures, activity, sleep and heart#

Withings says that once a user authorizes your application, "you will have access not only to new data but also to all historical health data collected by the devices", so a new connection can backfill the user's history. Calls are POST requests to https://wbsapi.withings.net services with an action parameter:

Service and actionReturns
Measure getmeasMeasures by meastype, for example weight (1), fat ratio (6) and bone mass (88); blood pressure, SpO2, temperature, glucose and more
Measure v2 getactivity, getintradayactivity, getworkoutsDaily activity, intraday activity and workouts
Sleep v2 get, getsummarySleep data and nightly summaries
Heart v2 list, getECG recordings
User v2 getdeviceThe user's linked devices
curl -s -X POST "https://wbsapi.withings.net/measure" \
  -H "Authorization: Bearer USER_ACCESS_TOKEN" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "action=getmeas" \
  -d "meastypes=1,6,88" \
  -d "lastupdate=1760000000"

Use lastupdate for ongoing sync: Withings says it returns everything created or modified since that timestamp, including updates you missed if a notification was lost. Withings' catalogue lists 96 biomarkers across 9 device families, and marks some as requiring the Advanced Biomarkers plan, so check the catalogue before you promise a metric.

Webhooks: data notifications#

Withings pushes notifications rather than data. Subscribe a callback URL to a category (appli) with the subscribe action on the notify service, using the user's access token. Categories include 1 (weight and body composition), 4 (blood pressure and heart rate), 16 (activity), 44 (sleep summary) and 54 (ECG); the notification carries userid, appli and a startdate and enddate window, and you fetch the data yourself.

Withings' rules for the callback URL are strict:

  • HTTPS only, a domain name rather than an IP address or localhost, ports 80 or 443 only, and at most 255 characters.
  • It must answer HTTP HEAD with a 2xx, because Withings checks the URL before registering it.
  • A URL that misses these leaves the app in restricted mode, limited to 10 linked users, which Withings intends for development only.

Reliability is documented in detail. If your endpoint does not answer with a status below 400, Withings retries on a schedule of 10 seconds, 1 minute, 1 hour and 4 hours, two attempts per cycle and 10 in total. After 4 failed notifications in a row it sends a warning email for each, and after 20 days of unresolved failures it cancels the subscription. Missed notifications are not redelivered, so backfill with lastupdate once you are back. Typical delivery is under 2 minutes, with no real-time commitment on the standard plan.

To secure the endpoint, Withings publishes its notification IP ranges as DNS TXT records (ipblock-notify.withings.net for the EU cloud) and suggests adding a secret query parameter to the callback URL that you check on every request.

Rate limits#

Withings says the standard API enforces a limit of 120 requests per minute across your application, and that polling hits it quickly, which is why it points everyone to notifications. The Enterprise plan unlocks higher limits and dedicated support; Withings' plans page did not render for us, so this guide does not quote its prices.

What changed recently#

WhenChange (Withings' pages)
October 12, 2026Withings+ required on the Start for Free API plan for accounts created after that date, including for apps already live, per a home-page notice captured October 16, 2026 and gone by October 22, 2026
Standing policyMajor changes get one month's notice, up to three months for business-critical ones; emergency changes up to two weeks or none; normal changes without notice

Withings publishes breaking changes and deprecations on a developer updates portal and a mailing list, and adds the contact email of every developer application to that list automatically.

Gotchas and production notes#

  • The 30-second code. Exchange the authorization code immediately; a slow callback fails silently from the user's point of view.
  • Sign before you ask. Token requests need a fresh nonce and an HMAC signature; every request needs a new nonce.
  • Store the newest refresh token every time. The previous one dies 8 hours after a new one is issued.
  • Budget for Withings+. Withings announced that users who create a Withings account after October 12, 2026 need a membership to share data with a free-plan app; confirm it still applies, since the notice had left the developer home page by October 22, 2026.
  • Pick the cloud once. EU or US is fixed when your access contract is created.
  • Notifications are pointers. Fetch the data after each notification, answer within a few seconds, and reconcile with lastupdate after any outage.

The withings-api Python package is reviewed at withings-api. The rest of the cluster is at how to integrate a fitness or health API.

Frequently asked questions

Is the Withings API free?
Getting started is. Withings' setup page says there are no prerequisites and free access is provided on its EU Medical Cloud. Withings also announced that accounts created after October 12, 2026 need a Withings+ membership to share data with an app on the Start for Free plan, with Enterprise lifting that requirement for specific use cases; that notice was no longer on its developer home page on October 22, 2026, so confirm it with Withings.
How does Withings OAuth work?
Send the user to https://account.withings.com/oauth2_user/authorize2 with your client_id, scopes such as user.metrics and user.activity, a redirect_uri and a state value. The code that comes back is valid for only 30 seconds; exchange it with the requesttoken action, signed with HMAC SHA-256 and a fresh nonce from Withings' signature service.
How long do Withings access tokens last?
Withings documents 3 hours for an access token and 1 year for a refresh token. Every refresh issues a new refresh token, and the previous one expires 8 hours later or as soon as the new access token is used, so store the newest pair every time or you can lose access.
Does the Withings API have webhooks?
Yes, as data notifications. You subscribe an HTTPS callback URL per category, such as weight or sleep, and Withings POSTs the user ID, category and time window, typically within 2 minutes. It retries failed deliveries for about 5 hours, cancels a subscription after 20 days of failures, and never redelivers a missed notification.
What is the Withings API rate limit?
Withings says the standard API enforces 120 requests per minute across your application, which is why it recommends notifications over polling. The Enterprise plan unlocks higher limits and dedicated support; Withings' plans page did not render when we read the site, so we do not quote its prices.

All 113 questions in Integration Guides →

Keep reading

Elsewhere on the site

Pages that share this one’s concepts and sources, from other sections.

Next steps

Was this page useful?

Independent comparison, last reviewed October 17, 2026. Pricing, rate limits, and feature availability change often — confirm current details in each provider’s official documentation before you commit. Product and company names are trademarks of their respective owners; AIFitnessAPI is not affiliated with, endorsed by, or sponsored by any product listed here.

← All integration guides · by AIFitnessAPI