Observed since 20 Oct, 22:35 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Comprehensive TypeScript client library for the Intervals.icu API — 100+ endpoints, full type safety, OAuth & API key auth
Maintained fork of paladini/node-intervals-icu with a vendored spec snapshot and CI-enforced coverage — all 149 spec operations covered, 0 phantom routes; 3 verified-but-undocumented routes allowlisted (see spec/undocumented-routes.json and AUDIT.md). See CHANGELOG for what changed in v3.
The most comprehensive TypeScript client for the Intervals.icu API — the training platform used by cyclists, runners, triathletes, and coaches worldwide.
130+ typed methods across 16 service groups. Dual auth (API key + OAuth), file uploads, auto-retry with jitter, and rate-limit tracking. One dependency (axios), ~27 KB minified.
Documentation: 0x3639.github.io/node-intervals-icu — guides, every method, and live-verified API behaviour.
npm install @0x3639/intervals-icu
export INTERVALS_API_KEY=your-api-key # Settings → Developer settings on intervals.icu
import { IntervalsClient } from '@0x3639/intervals-icu';
const client = new IntervalsClient({ apiKey: process.env.INTERVALS_API_KEY! });
const athlete = await client.athletes.getAthlete();
console.log(`${athlete.name} — FTP: ${athlete.ftp}`);
const activities = await client.activities.listActivities({ oldest: '2024-01-01', newest: '2024-01-31' });
console.log(`${activities.length} activities in January`);
| Service | Accessor | Key Methods |
|---|---|---|
| Athletes | client.athletes | getAthlete, updateAthlete, getTrainingPlan, updateTrainingPlan, getProfile, getSummary, listAthletes, getConnections, getSettings, disconnectApp |
| Activities | client.activities | listActivities, getActivity, updateActivity, deleteActivity, uploadActivity, getStreams, getIntervals, getWeatherSummary, getPowerCurve, listMessages, getActivities, listActivitiesAround, searchActivitiesFull, searchIntervals, listActivityTags, downloadActivitiesCSV, downloadGPX, deleteTombstone |
| Events | client.events | listEvents, getEvent, createEvent, updateEvent, deleteEvent, createEventsBulk, markEventAsDone, duplicateEvents, downloadWorkout, listEventTags, listFitnessModelEvents, downloadWorkoutsZip |
| Wellness | client.wellness | listWellness, getWellnessByDate, createWellness, updateWellness, updateWellnessBulk |
| Workouts | client.workouts | listWorkouts, getWorkout, createWorkout, updateWorkout, deleteWorkout, createWorkoutsBulk, duplicateWorkouts, convertWorkout, listWorkoutTags |
| Sport Settings | client.sportSettings | list, get, create, update, delete, applyToActivities, listMatchingActivities, getPaceDistances |
| Folders | client.folders | list, create, update, delete, getSharedWith, importWorkout, applyPlanChanges |
| Gear | client.gear | list, downloadCSV, calc, create, update, delete, replace, createReminder, updateReminder, deleteReminder |
| Chats | client.chats | listChats, listMessages, sendMessage, markSeen, getChat, listGroups, blockChat, updateMessage, deleteMessage |
| Weather | client.weather | getForecast, getWeatherConfig, updateWeatherConfig |
| Routes | client.routes | list, get, update, getSimilarity |
| Custom Items | client.customItems | list, get, create, update, delete, reorder, uploadImage |
| Shared Events | client.sharedEvents | get, create, update, delete |
| Performance | client.performance | getPowerCurves, getPaceCurves, getHRCurves, getPowerHRCurve, getActivityPowerCurves, getActivityPaceCurves, getActivityPaceCurvesCSV |
| Analytics | client.analytics | getPowerHistogram, getHRHistogram, getPaceHistogram, getGAPHistogram, getTimeAtHR, getIntervalStats, getPowerSpikeModel, getCurves, getCurvesCSV, getMMPModel |
| Search | client.search | searchActivities |
The TypeScript/Node.js ecosystem has a few Intervals.icu API clients worth knowing about:
| Library | npm | Approach | Coverage | Error handling |
|---|---|---|---|---|
| @0x3639/intervals-icu (this library) | @0x3639/intervals-icu | axios, TypeScript types | 16 services, 149 spec operations | throws IntervalsAPIError |
| @kuranov/intervals-client | @kuranov/intervals-client | ky + Valibot runtime validation | 6 resources (~64 endpoints) | Result<T, E> — never throws |
When to use @0x3639/intervals-icu (this library):
try/catch error handlingWhen to use @kuranov/intervals-client:
Result<T, E> pattern (no exceptions thrown)onRequest, onResponse, onRetry)ky which is runtime-agnostic)Both libraries serve the same core purpose and share similar design goals (TypeScript-first, dual ESM+CJS output, auto-retry, OAuth + API key auth). They differ mainly in HTTP client choice, error-handling philosophy, validation strategy, and endpoint coverage.
MIT © 0x3639. Original library © Fernando Paladini.
Special thanks to Filipe for the inspiration and the initial idea that led to the creation of this library. Your project was the spark that made this happen!
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 3.0.0-rc.1Registry latest | 24 Sept 2026 | 10 |
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 22:35 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:1327d88e6ffefff995fee4667455ccd69be6b6f50fcc5902b7ff72c0e76ed6cf