Importing from Intervals.icu¶
One-time import of chosen activities from Intervals.icu. Dinatos reads them with your API key, lists them, and imports the ones you tick. It is not a sync.
Steps¶
In Intervals.icu, open Settings -> Developer Settings and create or copy your API key.
In Dinatos, open Settings -> Import from Intervals.icu.
Paste the API key.
Leave Athlete ID at
0(the key’s owner). To use an account you were given access to, enter its ID, such asi12345.Choose the From date. The range ends today.
Press Fetch activities.
Tick the activities you want and press Import.
Your API key is used only for these two requests. It is never stored: not in your profile, a backup or a log.
Avoiding duplicates¶
Hevy can sync workouts to Intervals.icu, so a session may exist in both. The list leaves these unticked:
Label |
Meaning |
|---|---|
Possible duplicate of “…” |
One of your Dinatos activities (often from Hevy) started within 30 minutes. |
Already imported |
You imported it from Intervals.icu before. |
Cannot be imported |
Strava activities arrive from Intervals.icu as empty stubs. |
You can still tick a possible duplicate if it is a different session. All and None change the whole selection.
Importing again¶
Imports are safe to repeat. Overlapping date ranges do not create copies by accident.
If a request includes an already-imported activity, Dinatos asks “Already imported – import again anyway?”. Confirming imports everything selected, creating second copies of those.
Deleting an imported activity in Dinatos lets you import it again.
Clear all account data and Replace my data also reset what counts as imported.
New Intervals.icu activities show up as new in the next list.
What you get¶
Each activity becomes one Dinatos activity:
Dinatos field |
Source |
|---|---|
Title, description |
Activity name, description |
Start time |
Local start time shown in Intervals.icu |
End time |
Start plus elapsed time |
Exercise |
Named after the sport ( |
Set |
One set with moving time and, if present, distance |
A sport with no matching exercise creates a custom exercise. An existing one is reused.
Intervals.icu records no sets for strength sessions, so they arrive as one timed “Weight Training” entry. Log strength in Hevy and leave those out here.
Imported cardio counts as endurance training on the Personas page (about one set-equivalent per three minutes, or per distance if there is no time). A timed strength entry is classified the same way.
Scripting it¶
Both steps are plain endpoints. The key goes in the request body, so it never appears in a URL or access log. You need a login token (see Running and testing).
# 1. List activities (writes nothing)
curl -X POST http://127.0.0.1:8000/imports/intervals/preview \
-H "Authorization: Bearer $token" -H "Content-Type: application/json" \
-d '{"api_key": "'"$INTERVALS_KEY"'", "athlete_id": "0", "oldest": "2026-01-01"}'
# 2. Import the chosen ones
curl -X POST http://127.0.0.1:8000/imports/intervals/activities \
-H "Authorization: Bearer $token" -H "Content-Type: application/json" \
-d '{"api_key": "'"$INTERVALS_KEY"'", "oldest": "2026-01-01", "activity_ids": ["i123", "i124"]}'
newest defaults to today.
Status |
Meaning |
|---|---|
|
Already imported. Nothing written. Add |
|
An id is outside the window or cannot be imported. |
|
Bad API key. |
|
Intervals.icu is unreachable. |