Stripe for data.
Connect.
Relax.

Universal User API (UU API) gets data straight from your users, with their consent, from any platform they use. No partner API in the middle, so nothing to get switched off.

ConnectRead the docsFree sandbox, no card.
lib/odl.tstest mode
import { createConnectController }
  from "@opendatalabs/connect-js/server";

export const odl = createConnectController({
  apiKey: process.env.ODL_API_KEY!,        // uu_test_sk_…
  appId: process.env.ODL_APP_ID!,
  defaultOrigin: process.env.APP_URL!,
  source: "strava",
  scopes: ["read:activities"],
});

// Your user approves once. Then:
const data = await odl.readAllWhenReady(connectionId);
$ npm install @opendatalabs/connect-js64 connectors and growing · one schema · open source · PDPP v0.1.0
// direct from users, so never switched off

Eleven platform API changes announced since June.
Apps on UU API kept reading.

The data comes from the user, not the platform API. Platforms change. Users don't.

dateplatform APIwhat changedlive on uu api
  • 30 Oct 2026Fitbit Web APIShut down. Successor requires new OAuth; every user re-authorises.fitbit.activities
  • 31 Oct 2026Reddit Data APIPublic Data API requests stop; RSS ends 13 Nov; migration by registration.reddit.saved
  • 13 Oct 2026WithingsNew accounts need Withings+ (USD 99.50 a year) to sync to Apple Health.coming soon
  • 1 Oct 2026Exchange Web ServicesBlocked for non-Microsoft apps; every EWS calendar integration must migrate.ical.events
  • Sep to Oct 2026Garmin ConnectNew developer applications paused; undocumented FIT fields stripped.garmin.activities
  • 24 Sep 2026Instagram Graph APIv20 retired; 47 Commerce endpoints blocked; legacy Page fields removed.instagram.posts
  • 1 Sep 2026StravaStandard tier now a subscription; 10-athlete cap before review; intermediaries unsupported.strava.activities
  • 1 Sep 2026X APILegacy Pro moved to pay-per-use.x.posts
  • 26 Aug 2026OpenAI AssistantsFull shutdown; threads, runs and file search removed.coming soon
  • 23 Jul 2026Spotify Web APIPer-developer quota; dev mode capped at 5 users.spotify.top_tracks
  • 8 Jun 2026OuraNew API agreement: no sending data to AI models; aggregators may not feed AI systems.oura.sleep
… and 9 more.
// what you get

Built on consent, not goodwill.

You get data direct from your users, with their consent, instead of through a platform API that can be shut off at any time. The user is the source, so the only person who can turn off your access is the user. Platforms are bypassed.

user-owned Personal ServerSolid-style architecture, from MIT CSAILVana, built at MIT Media Lab

Integrate once. Never again.

One SDK and one schema give you every source a user has connected, across every platform in the registry, 64 and growing, not just one. You do one integration and you are done. New platforms, and changes to existing ones, land as connector updates, with no change to your code.

strava.activitiesgarmin.sleepspotify.top_trackschatgpt.memoriesgmail.threadsreddit.saved

Built with compliance in mind.

UU API runs on PDPP, an open standard for personal data developed by the PDP-Connect lab at Linux Foundation Decentralized Trust. It has been reviewed in the EUSAiR regulatory sandbox against Article 10 of the EU AI Act and found consistent with its obligations. Every row you read carries its consent record.

// how a connection happens

Your user approves once.
You keep reading.

You connect. Your user approves once, on any source they own. You keep reading for as long as they keep authorising.

acmerun.app · your tab
Your training planConnect your workouts and we build it around your real week.
Connect data
const connect = useTwoTabConnect({
  createSession, getStatus, readResult
});
// state: "idle" → "opened" → "ready"
connect.uu-api.io · the tab we host
AR
Acme Run wants to see your workouts
Strava · activities · until you revoke
StStrava
GaGarmin
AHApple Health
OuOura
WHWHOOP
+59 more
Connect Strava
POST /connect/sessionsyour server, with your key
consent.grantedthe user, in our tab
GET /connect/datatyped rows, in the schema from the docs
// pricing

Free sandbox that never expires.
Then pay per read.

$0Basic. 50 reads a month, every connector, unlimited test mode.
$99Plus. 500 reads, then $0.010 each.
$499Enterprise. 3,500 reads, then $0.009 each.
CustomEnterprise Plus. SLA, account manager, $0.006 a read.