@0x3639/intervals-icu
    Preparing search index...

    @0x3639/intervals-icu

    @0x3639/intervals-icu

    Harness Score L1 (Documented): measures AI-assisted development harness maturity with harness-score version license TypeScript

    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):

    • You need the broadest API coverage (16 service groups including routes, gear, weather, custom items, performance, analytics, and search)
    • You prefer familiar try/catch error handling
    • You're comfortable tracking an actively-developed fork (see AUDIT.md for known gaps and CHANGELOG for breaking changes)

    When to use @kuranov/intervals-client:

    • You want runtime validation of API responses via Valibot (catches unexpected API changes at runtime)
    • You prefer the Result<T, E> pattern (no exceptions thrown)
    • You want lifecycle hooks for observability (onRequest, onResponse, onRetry)
    • You target browsers or edge runtimes (uses 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!