Paskal logo paskal.nl GPT × Garmin guide
Custom GPT × Garmin

Van GPT naar Garmin zonder trainingen overtypen.

Bouw een Custom GPT die niet alleen trainingsadvies geeft, maar ook structured workouts via Intervals.icu naar Garmin Connect kan sturen.

Custom GPT
Lambda URL
AWS Lambda
Intervals.icu
Garmin
Wat je gaat bouwen

Een veilige route van coachingadvies naar je Garmin-horloge

In deze guide zet je een kleine keten op waarmee een Custom GPT een geplande workout kan aanmaken. De GPT praat niet direct met Garmin en krijgt ook geen Intervals.icu API-key. In plaats daarvan loopt alles via een eigen backend die controleert of de aanvraag veilig en logisch is.

Je hebt nodig
  • Een Garmin Connect-account.
  • Een Intervals.icu-account.
  • Een Custom GPT met Actions.
  • Een kleine backend, bijvoorbeeld AWS Lambda.
Het eindresultaat

Je vraagt je GPT om een training te plannen. De backend valideert de aanvraag, Intervals.icu maakt de workout aan en Garmin Connect synchroniseert deze naar je horloge.

Belangrijk uitgangspunt

Laat AI niet onbeperkt in je planning schrijven. Bouw minimaal controle in op authenticatie, datum, inhoud en dubbele workouts.

Waarom deze route?

Garmin is het eindpunt. Intervals.icu is de brug.

Garmin heeft officiële API's, maar directe toegang is vooral bedoeld voor goedgekeurde integraties. Intervals.icu kan geplande workouts naar Garmin sturen en heeft een toegankelijke API. Daardoor is Intervals.icu een praktische brug tussen je eigen automatisering en Garmin Connect.

Intervals.icu koppelen

Koppel Garmin Connect in Intervals.icu en schakel het uploaden van geplande workouts in.

API bewijzen

Maak eerst buiten ChatGPT om een workout aan via de API en controleer of die in Garmin Connect verschijnt.

GPT veilig aansluiten

Laat de GPT niet rechtstreeks met Intervals.icu praten, maar via een eigen endpoint met validatie en duplicate-checks.

Architectuur

Klein genoeg om te begrijpen, nuttig genoeg om echt te gebruiken

Je hebt geen zwaar platform nodig. Eén serverless functie kan de belangrijkste regels afdwingen en daarna de Intervals.icu API aanroepen.

GPT Action
Lambda URL
Intervals.icu
Garmin Connect
Waarom niet direct vanuit GPT?

Dat zou technisch eenvoudiger zijn, maar dan ontbreekt een betrouwbare plek om regels af te dwingen. Je backend kan bijvoorbeeld weigeren een tweede workout op dezelfde dag te maken.

Waarom geen API Gateway?

Voor een persoonlijke setup kan een Lambda Function URL voldoende zijn. API Gateway kun je later toevoegen als je uitgebreidere authenticatie, throttling of routing nodig hebt.

Waar zitten de credentials?

Zet de Intervals.icu API-key niet in de GPT. Laat de GPT alleen een token gebruiken voor je eigen endpoint.

Gebruik je backend als guardrail. Controleer onder meer of er al een training op die dag staat voordat je iets richting Intervals.icu stuurt.

Stap voor stap

Van nul naar een workout op je Garmin

Bouw de koppeling in kleine stappen. Test eerst elke losse schakel en verbind ze pas daarna met je Custom GPT.

1

Koppel Garmin aan Intervals.icu

In Intervals.icu koppel je Garmin Connect en activeer je het uploaden van geplande workouts. Daarmee wordt Intervals.icu de plek waar de training wordt aangemaakt, waarna Garmin de sync verzorgt.

2

Test eerst handmatig

Zet een eenvoudige structured workout handmatig in de Intervals.icu kalender. Pas als die vanzelf in Garmin Connect verschijnt, weet je dat de Garmin-sync goed staat.

3

Test de Intervals.icu API

Maak daarna vanaf de command line of met een API-client een geplande workout aan via de Intervals.icu API. Zo houd je de test klein en zie je precies welke payload Garmin uiteindelijk bereikt.

De minimale gegevens die je later ook vanuit je GPT nodig hebt zijn:

{
  "date": "2026-09-20",
  "name": "Rustige duurloop",
  "sport": "Run",
  "description": "- Warmup 10m 6:15-6:45/km Pace\n- Run 35m 6:05-6:25/km Pace\n- Cooldown 10m 6:15-6:45/km Pace"
}
4

Zet een backend tussen GPT en Intervals.icu

Voeg daarna een backend toe, bijvoorbeeld AWS Lambda. Die valideert de aanvraag, controleert of er die dag al een workout staat en doet daarna pas de call naar Intervals.icu.

Houd het endpoint bewust klein. Voor een eerste versie zijn twee routes genoeg: één om geplande workouts in een periode op te halen en één om een nieuwe workout aan te maken.

GET /workouts?start_date=YYYY-MM-DD&end_date=YYYY-MM-DD
POST /workouts

Bij een bestaande workout geeft de backend een conflict terug in plaats van stilletjes een extra training te stapelen.

5

GPT Action configureren

De Lambda Function URL wordt als OpenAPI Action toegevoegd aan de GPT. Authenticatie richting Lambda gebeurt met een aparte Bearer API-key. De Intervals.icu API-key blijft in je backend.

Authorization: Bearer <eigen-lambda-token>

Geef de Action duidelijke instructies: gebruik de create-route alleen als de gebruiker expliciet vraagt om een training te plannen en haal bij twijfel eerst de bestaande workouts op.

6

Test de volledige keten

Geef je GPT een normale opdracht en controleer daarna de hele keten: Intervals.icu, Garmin Connect en uiteindelijk je horloge.

Guardrails

Laat de GPT plannen, maar niet stapelen

Een AI-coach die zonder controle meerdere trainingen op dezelfde dag plant, is niet handig en mogelijk riskant. Leg daarom de belangrijkste regels vast in je backend, niet alleen in de instructies van je GPT.

Controleer voor iedere nieuwe workout
  • Bearer token controleren.
  • Datum, sport, naam en workoutbeschrijving valideren.
  • Bestaande workouts voor dezelfde dag ophalen.
  • Bij bestaande workout: HTTP 409 teruggeven.
  • Alleen bij een vrije dag de workout aanmaken.
Voorbeeld van de trainingssyntax
- Warmup 10m 6:15-6:45/km Pace

3x
- Interval 2m 5:00-5:15/km Pace
- Recovery 2m 6:30-7:00/km Pace

- Cooldown 10m 6:15-6:45/km Pace
Credential-scheiding

Geef de GPT geen Intervals.icu API-key. Bewaar die in je backend, zodat de Action alleen via je gecontroleerde endpoint kan plannen.

Configuratie in beeld

De belangrijkste schermen in de keten

Deze screenshots laten zien waar je de koppeling in Intervals.icu en de GPT Action vastlegt. Gevoelige waarden zijn niet zichtbaar.

Intervals.icu naar Garmin Connect
Intervals.icu — Garmin Connect
Intervals.icu instellingen met Garmin Connect koppeling en geplande workouts uploaden ingeschakeld
De Garmin Connect-koppeling in Intervals.icu. Hier staat het uploaden van geplande workouts ingeschakeld.
Intervals.icu developer settings
Intervals.icu — Developer settings
Intervals.icu ontwikkelaarsinstellingen met Athlete ID en API sleutelstatus
In de developer settings vind je de gegevens die je backend nodig heeft om workouts via Intervals.icu te plannen.
GPT Action authentication
ChatGPT — Action authentication
GPT Action authenticatie met API Key en Bearer auth type
De GPT Action gebruikt een aparte API-key als Bearer-token voor je eigen endpoint.
Resultaat

Een normale opdracht wordt een echte Garmin-workout

Als de keten goed staat, hoeft de gebruiker niets meer te weten van API calls, workout syntax of synchronisatie. Een normale opdracht is genoeg.

ChatGPT — workout gepland richting Garmin
ChatGPT bevestigt dat een rustige duurloop in de Garmin planning is gezet
Voorbeeld van het eindresultaat in ChatGPT: de coach bevestigt dat de duurloop in de Garmin-planning staat.
Workout verschijnt in Intervals.icu

Je backend maakt de geplande workout aan met de juiste datum, sport en workoutbeschrijving.

Intervals.icu synchroniseert naar Garmin

Garmin Connect haalt de geplande workout op via de bestaande Intervals.icu koppeling.

De training staat op het horloge

Na de Garmin-sync is de training als structured workout uitvoerbaar op de Forerunner.

Wil je verder gaan, sluit dan ook de andere kant van de lus aan: uitgevoerde activiteiten analyseren en op basis daarvan de volgende trainingen aanpassen. In mijn vorige artikel over Strava koppelen aan een Custom GPT staat precies beschreven hoe je die analysekant opzet. Samen vormen die twee richtingen een closed-loop persoonlijke coach.