
Company News
Free Business Plan Upgrades for Open Source Maintainers
Open source maintainers are under more pressure than ever. We're raising our open source program from the Team plan to the Business plan, free.
@kaiord/garmin-connect
Advanced tools
Garmin Connect API client for the Kaiord health & fitness data framework
Garmin Connect API client for the Kaiord health & fitness data framework. Provides authentication, workout listing, and workout pushing via the Garmin Connect API.
pnpm add @kaiord/garmin-connect
import { createGarminConnectClient } from "@kaiord/garmin-connect";
const client = createGarminConnectClient();
// Login
await client.auth.login("email@example.com", "password");
// List workouts
const workouts = await client.service.list({ limit: 10 });
// Push a KRD workout to Garmin Connect
const result = await client.service.push(krd);
console.log(`Pushed workout: ${result.name} (id: ${result.id})`);
import {
createGarminConnectClient,
createFileTokenStore,
} from "@kaiord/garmin-connect";
const client = createGarminConnectClient({
tokenStore: createFileTokenStore("./tokens.json"),
});
// Auto-restore tokens from store (login not needed if tokens are valid)
const { restored } = await client.init();
if (!restored) {
await client.auth.login("email@example.com", "password");
}
import { createGarminConnectClient } from "@kaiord/garmin-connect";
const client = createGarminConnectClient({
retry: { maxRetries: 3, baseDelay: 1000, maxDelay: 10000 },
});
import {
createGarminConnectClient,
createCookieFetch,
} from "@kaiord/garmin-connect";
const client = createGarminConnectClient({
fetchFn: createCookieFetch(),
});
createGarminConnectClient(options?): GarminConnectClientCreates a Garmin Connect client with authentication and workout service.
Options:
fetchFn - Custom fetch function (defaults to cookie-aware fetch)tokenStore - Token persistence storelogger - Custom loggerretry - Retry options: { maxRetries?, baseDelay?, maxDelay? }Returns: { auth, service, init }
client.init(): Promise<{ restored: boolean }>Auto-restores tokens from the token store. Returns { restored: true } if valid tokens were found. Idempotent: no-op if tokens are already in memory.
client.auth.login(email, password): Promise<void>Authenticates with Garmin Connect via SSO.
client.auth.is_authenticated(): booleanChecks if the client has valid (non-expired) authentication tokens.
client.auth.export_tokens(): Promise<TokenData>Exports current tokens for external storage.
client.auth.restore_tokens(tokens): Promise<void>Restores previously exported tokens.
client.auth.logout(): Promise<void>Clears all tokens from memory and token store.
client.service.list(options?): Promise<WorkoutSummary[]>Lists workouts from Garmin Connect.
client.service.push(krd): Promise<PushResult>Pushes a KRD-structured workout to Garmin Connect.
createFileTokenStore(path?): TokenStoreCreates a file-based token store. Defaults to ~/.kaiord/garmin-tokens.json.
createMemoryTokenStore(): TokenStoreCreates an in-memory token store (tokens lost on process exit).
createCookieFetch(): typeof fetchCreates a cookie-aware fetch wrapper for SSO authentication flows.
// Before (v5.x)
const { auth, service } = createGarminConnectClient();
await auth.login(email, password);
// After (v6.x)
const client = createGarminConnectClient({ tokenStore });
const { restored } = await client.init();
if (!restored) await client.auth.login(email, password);
See the design document for the full migration guide.
createFileTokenStore(path) persists Garmin OAuth tokens as plaintext JSON with file mode 0600 (owner read/write only).
What this protects against:
What this does not protect against:
Recommendations:
client.auth.logout() clears them.TokenStore port backed by your OS keychain and pass it as tokenStore — the port is the supported extension point.Passwords and CSRF tokens are never logged; SSO logging records only status codes and byte counts.
MIT
FAQs
Garmin Connect API client for the Kaiord health & fitness data framework
We found that @kaiord/garmin-connect demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Company News
Open source maintainers are under more pressure than ever. We're raising our open source program from the Team plan to the Business plan, free.

Security News
The supply chain control that delays freshly published gems now covers lockfile generation and gem vendoring in Ruby projects.

Security News
During a UK cyber test, a Mythos 5 agent used sockpuppets, social engineering, and prompt injection to try to get a maintainer to merge malware.