AtlasAtlasBack To Atlas
  • Getting Started
  • Coach API Reference
  • Atlas CLI
    • Install
    • Authenticate
    • Global Flags
    • Built-In Commands
    • Reading, Paging, And Writing
    • Account And Health
    • Roster
    • Athletes
    • Personal Records
    • Meets And Annual Plans
    • Meet Plans
    • Week Notes
    • Session Check-Ins
    • Wearables And Nutrition
    • Athlete Workouts
    • Programs
    • Templates
    • Template Folders
    • Exercise Library
    • Analytics And Activity
    • Coach Settings
    • Athlete Comments
    • Messaging
  • Agent Skill

Atlas CLI

atlas is a Rust command-line client for every published Coach API operation. Its 138 commands are generated from the same OpenAPI contract as the Coach API Reference, so the two always list the same endpoints. JSON responses go to stdout and diagnostics to stderr.

Install

atlas is a single binary with no other dependencies. Download the build for your computer:

PlatformDownload
macOS (Apple Silicon)atlas-macos-arm64
macOS (Intel)atlas-macos-x64
Linux (x64)atlas-linux-x64
Linux (ARM64)atlas-linux-arm64
Windows (x64)atlas-windows-x64.exe

Every release also publishes SHA-256 Checksums for these files.

On macOS or Linux, download your platform's build from a terminal, make it executable and put it on your PATH. Swap macos-arm64 for the name in the table that matches your computer:

curl -fsSL https://<your-atlas-console>/download/cli/macos-arm64 -o atlas
chmod +x atlas
sudo mv atlas /usr/local/bin/atlas
atlas --version

If macOS says it cannot verify a build you downloaded in a browser, run xattr -d com.apple.quarantine atlas before moving it. On Windows, rename the download to atlas.exe, move it to a folder on your PATH, and run atlas --version.

Then check that it runs and lists every command:

atlas --version
atlas operations

Authenticate

Log in through the browser. atlas login prints a link and a short code, and opens the browser when it can. Sign in to the console, check that the code matches your terminal, choose the club, access, and expiry, and approve. The browser may be on another computer, so this also works over SSH and for agents.

atlas login --api-url "https://graceful-tortoise-95.convex.site"
atlas auth-status
atlas get-agent-account

The token is saved on your computer, readable only by your user account, and every command uses it. Logging in again replaces it and revokes the old one; atlas logout revokes it and deletes it. Use --permissions read,write to say what access the task needs (only read and write are ever pre-selected), --name to label the token, and --no-browser to only print the link. Set ATLAS_CONFIG_DIR to keep the login somewhere else.

You can also use a personal access token from the Integrations page (see Create A Token). --token and ATLAS_API_TOKEN take precedence over a saved login. Prefer the environment variable, so the token stays out of shell history and process arguments.

export ATLAS_API_URL="https://graceful-tortoise-95.convex.site"
export ATLAS_API_TOKEN="YOUR_ATLAS_API_TOKEN"
atlas get-agent-account

ATLAS_API_URL may include /api/v1. It must use https://; plain http:// is accepted only for localhost and loopback addresses. health and openapi need no token, and dry runs never send one.

Global Flags

These flags work with every command.

FlagDetails
--api-url <URL>Convex site URL, with or without /api/v1. Reads ATLAS_API_URL.
--token <TOKEN>Atlas personal access token. Reads ATLAS_API_TOKEN.
--compactWrite compact JSON instead of pretty-printed JSON.
-i, --includeWrite the HTTP status and response headers to stderr.
--dry-runValidate and print the request without sending it.
--retries <COUNT>Retries for rate limits and safe transient failures. Defaults to 2.
--timeout <SECONDS>Per-request timeout in seconds, from 1 to 600. Defaults to 30.
-H, --header <NAME:VALUE>Add a request header; may be repeated.

Built-In Commands

  • atlas login [--permissions LIST] [--name NAME] [--no-browser]: Log in through the browser and save a token on this computer.
  • atlas logout: Revoke the saved login's token and delete it from this computer.
  • atlas auth-status: Show which token commands use, without revealing it.
  • atlas operations [--json]: List all bundled API operations.
  • atlas openapi: Fetch the server's OpenAPI document.
  • atlas request [--method METHOD] PATH [--query NAME=VALUE] [--body JSON|-] [--public]: Call an API path directly as a forward-compatible escape hatch.

atlas request reaches a route the bundled contract does not list yet. Its path is relative to /api/v1 and may not contain . or .. segments.

Reading, Paging, And Writing

Each command takes the endpoint's path, query, and header parameters as long flags. If-Match is --revision; the other protocol headers are --if-none-match and --idempotency-key. The camel-case operationId also works as the command name.

atlas list-roster --limit 100 --all
atlas get-program --program-id PROGRAM_ID --include
atlas create-athlete --body '{"name":"Alex Smith"}'
atlas create-program --idempotency-key import-2026-08-28 --body-file ./program.json
jq '{coachNotes: .note}' note.json | \
  atlas patch-program-day --program-id PROGRAM_ID \
    --week-number 1 --day-number 2 --revision 3 --body -
atlas --dry-run delete-program --program-id PROGRAM_ID --revision 7
  • --all appears on every cursor operation. It follows continueCursor, rejects repeated cursors, combines every page, and adds data.pagesFetched.
  • Bodies are JSON objects, given inline, from a file, or on stdin. The CLI rejects malformed JSON and bodies over the API's 1 MB limit before sending, and URL-encodes path and query values.
  • Output is pretty-printed JSON; --compact suits pipelines and --include writes the status and headers to stderr. API errors keep their JSON body and exit nonzero. A 304 Not Modified succeeds and may have no body.
  • Rate-limited requests honor Retry-After. Transient failures are retried only for reads and for writes with an idempotency key; other writes retry only on Atlas's own RATE_LIMITED response.
  • --header cannot override Authorization; use atlas login, --token, or ATLAS_API_TOKEN.

Account And Health

atlas get-agent-account

Inspect the authenticated token, scopes, and rate limit

atlas get-agent-account
Endpoint
GET /account
Permission
read
Alias
getAgentAccount

atlas health

Check API availability

atlas health
Endpoint
GET /health
Permission
public

Roster

atlas list-roster

Page through the complete stable coach-owned athlete roster

atlas list-roster
Endpoint
GET /roster
Permission
read
Alias
listRoster
FlagDetails
--limit <limit>query parameter: limit
--cursor <cursor>query parameter: cursor
--allFollow every cursor and combine all pages

Athletes

atlas archive-athlete-profile-by-id

Archive an athlete roster profile without deleting its history

atlas archive-athlete-profile-by-id --athlete-id <athleteId>
Endpoint
DELETE /athletes/by-id/{athleteId}
Permission
athlete_data_delete
Alias
archiveAthleteProfileById
FlagDetails
--athlete-id <athleteId>Requiredpath parameter: athleteId

atlas create-athlete

Create or adopt a stable coach-owned roster entry

atlas create-athlete --body <JSON|->
Endpoint
POST /athletes
Permission
write
Alias
createAthlete
FlagDetails
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file

atlas delete-athlete-data

Delete all programs, personal records, and meet data for an athlete

atlas delete-athlete-data --athlete-name <athleteName>
Endpoint
DELETE /athletes/{athleteName}
Permission
athlete_data_delete
Alias
deleteAthleteData
FlagDetails
--athlete-name <athleteName>Requiredpath parameter: athleteName

atlas delete-athlete-data-by-id

Delete all programs, personal records, and meet data for an athlete

atlas delete-athlete-data-by-id --athlete-id <athleteId>
Endpoint
DELETE /athletes/id/{athleteId}
Permission
athlete_data_delete
Alias
deleteAthleteDataById
FlagDetails
--athlete-id <athleteId>Requiredpath parameter: athleteId

atlas get-athlete-by-id

Get an athlete profile and integration status

atlas get-athlete-by-id --athlete-id <athleteId>
Endpoint
GET /athletes/by-id/{athleteId}
Permission
read
Alias
getAthleteById
FlagDetails
--athlete-id <athleteId>Requiredpath parameter: athleteId

atlas list-athletes

List athletes belonging to the coach

atlas list-athletes
Endpoint
GET /athletes
Permission
read
Alias
listAthletes

atlas update-athlete-profile-by-id

Update an athlete name, email, or Output connection

atlas update-athlete-profile-by-id --athlete-id <athleteId> --body <JSON|->
Endpoint
PATCH /athletes/by-id/{athleteId}
Permission
write
Alias
updateAthleteProfileById
FlagDetails
--athlete-id <athleteId>Requiredpath parameter: athleteId
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file

Personal Records

atlas bulk-upsert-personal-records

Create or update up to 100 personal records

atlas bulk-upsert-personal-records --athlete-name <athleteName> --body <JSON|->
Endpoint
POST /athletes/{athleteName}/personal-records/bulk
Permission
write
Alias
bulkUpsertPersonalRecords
FlagDetails
--athlete-name <athleteName>Requiredpath parameter: athleteName
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file

atlas bulk-upsert-personal-records-by-id

Create or update up to 100 personal records

atlas bulk-upsert-personal-records-by-id --athlete-id <athleteId> --body <JSON|->
Endpoint
POST /athletes/id/{athleteId}/personal-records/bulk
Permission
write
Alias
bulkUpsertPersonalRecordsById
FlagDetails
--athlete-id <athleteId>Requiredpath parameter: athleteId
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file

atlas calculate-training-weights

Calculate rounded training weights from an athlete PR

atlas calculate-training-weights --athlete-name <athleteName> --body <JSON|->
Endpoint
POST /athletes/{athleteName}/calculate-weights
Permission
read
Alias
calculateTrainingWeights
FlagDetails
--athlete-name <athleteName>Requiredpath parameter: athleteName
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file

atlas calculate-training-weights-by-id

Calculate rounded training weights from an athlete PR

atlas calculate-training-weights-by-id --athlete-id <athleteId> --body <JSON|->
Endpoint
POST /athletes/id/{athleteId}/calculate-weights
Permission
read
Alias
calculateTrainingWeightsById
FlagDetails
--athlete-id <athleteId>Requiredpath parameter: athleteId
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file

atlas delete-all-personal-records

Delete every personal record for an athlete

atlas delete-all-personal-records --athlete-name <athleteName>
Endpoint
DELETE /athletes/{athleteName}/personal-records
Permission
athlete_data_delete
Alias
deleteAllPersonalRecords
FlagDetails
--athlete-name <athleteName>Requiredpath parameter: athleteName

atlas delete-all-personal-records-by-id

Delete every personal record for an athlete

atlas delete-all-personal-records-by-id --athlete-id <athleteId>
Endpoint
DELETE /athletes/id/{athleteId}/personal-records
Permission
athlete_data_delete
Alias
deleteAllPersonalRecordsById
FlagDetails
--athlete-id <athleteId>Requiredpath parameter: athleteId

atlas delete-personal-record

Delete one personal record

atlas delete-personal-record --athlete-name <athleteName> --personal-record-id <personalRecordId>
Endpoint
DELETE /athletes/{athleteName}/personal-records/{personalRecordId}
Permission
athlete_data_delete
Alias
deletePersonalRecord
FlagDetails
--athlete-name <athleteName>Requiredpath parameter: athleteName
--personal-record-id <personalRecordId>Requiredpath parameter: personalRecordId

atlas delete-personal-record-by-id

Delete one personal record

atlas delete-personal-record-by-id --athlete-id <athleteId> --personal-record-id <personalRecordId>
Endpoint
DELETE /athletes/id/{athleteId}/personal-records/{personalRecordId}
Permission
athlete_data_delete
Alias
deletePersonalRecordById
FlagDetails
--athlete-id <athleteId>Requiredpath parameter: athleteId
--personal-record-id <personalRecordId>Requiredpath parameter: personalRecordId

atlas get-recent-bests

Get best estimated 1RMs from completed non-miss sets in the prior three months

atlas get-recent-bests --athlete-name <athleteName> --today <today>
Endpoint
GET /athletes/{athleteName}/recent-bests
Permission
read
Alias
getRecentBests
FlagDetails
--athlete-name <athleteName>Requiredpath parameter: athleteName
--today <today>Requiredquery parameter: today

atlas get-recent-bests-by-id

Get best estimated 1RMs from completed non-miss sets in the prior three months

atlas get-recent-bests-by-id --athlete-id <athleteId> --today <today>
Endpoint
GET /athletes/id/{athleteId}/recent-bests
Permission
read
Alias
getRecentBestsById
FlagDetails
--athlete-id <athleteId>Requiredpath parameter: athleteId
--today <today>Requiredquery parameter: today

atlas list-personal-records

List an athlete's personal records

atlas list-personal-records --athlete-name <athleteName>
Endpoint
GET /athletes/{athleteName}/personal-records
Permission
read
Alias
listPersonalRecords
FlagDetails
--athlete-name <athleteName>Requiredpath parameter: athleteName
--exercise-name <exerciseName>query parameter: exerciseName

atlas list-personal-records-by-id

List an athlete's personal records

atlas list-personal-records-by-id --athlete-id <athleteId>
Endpoint
GET /athletes/id/{athleteId}/personal-records
Permission
read
Alias
listPersonalRecordsById
FlagDetails
--athlete-id <athleteId>Requiredpath parameter: athleteId
--exercise-name <exerciseName>query parameter: exerciseName

atlas upsert-personal-record

Create or update an athlete personal record

atlas upsert-personal-record --athlete-name <athleteName> --body <JSON|->
Endpoint
PUT /athletes/{athleteName}/personal-records
Permission
write
Alias
upsertPersonalRecord
FlagDetails
--athlete-name <athleteName>Requiredpath parameter: athleteName
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file

atlas upsert-personal-record-by-id

Create or update an athlete personal record

atlas upsert-personal-record-by-id --athlete-id <athleteId> --body <JSON|->
Endpoint
PUT /athletes/id/{athleteId}/personal-records
Permission
write
Alias
upsertPersonalRecordById
FlagDetails
--athlete-id <athleteId>Requiredpath parameter: athleteId
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file

Meets And Annual Plans

atlas delete-athlete-meet

Delete one upcoming meet

atlas delete-athlete-meet --athlete-name <athleteName> --meet-id <meetId>
Endpoint
DELETE /athletes/{athleteName}/meet/{meetId}
Permission
athlete_data_delete
Alias
deleteAthleteMeet
FlagDetails
--athlete-name <athleteName>Requiredpath parameter: athleteName
--meet-id <meetId>Requiredpath parameter: meetId

atlas delete-athlete-meet-by-id

Delete one upcoming meet

atlas delete-athlete-meet-by-id --athlete-id <athleteId> --meet-id <meetId>
Endpoint
DELETE /athletes/id/{athleteId}/meet/{meetId}
Permission
athlete_data_delete
Alias
deleteAthleteMeetById
FlagDetails
--athlete-id <athleteId>Requiredpath parameter: athleteId
--meet-id <meetId>Requiredpath parameter: meetId

atlas delete-meet

Delete all upcoming meets for an athlete

atlas delete-meet --athlete-name <athleteName>
Endpoint
DELETE /athletes/{athleteName}/meet
Permission
athlete_data_delete
Alias
deleteMeet
FlagDetails
--athlete-name <athleteName>Requiredpath parameter: athleteName

atlas delete-meet-by-id

Delete all upcoming meets for an athlete

atlas delete-meet-by-id --athlete-id <athleteId>
Endpoint
DELETE /athletes/id/{athleteId}/meet
Permission
athlete_data_delete
Alias
deleteMeetById
FlagDetails
--athlete-id <athleteId>Requiredpath parameter: athleteId

atlas get-annual-plan

Get meets, overlapping programs, and week notes in an athlete's date range

atlas get-annual-plan --athlete-name <athleteName> --start-date <startDate> --end-date <endDate>
Endpoint
GET /athletes/{athleteName}/annual-plan
Permission
read
Alias
getAnnualPlan
FlagDetails
--athlete-name <athleteName>Requiredpath parameter: athleteName
--start-date <startDate>Requiredquery parameter: startDate
--end-date <endDate>Requiredquery parameter: endDate

atlas get-annual-plan-by-id

Get meets, overlapping programs, and week notes in an athlete's date range

atlas get-annual-plan-by-id --athlete-id <athleteId> --start-date <startDate> --end-date <endDate>
Endpoint
GET /athletes/id/{athleteId}/annual-plan
Permission
read
Alias
getAnnualPlanById
FlagDetails
--athlete-id <athleteId>Requiredpath parameter: athleteId
--start-date <startDate>Requiredquery parameter: startDate
--end-date <endDate>Requiredquery parameter: endDate

atlas get-meet

List an athlete's meets

atlas get-meet --athlete-name <athleteName>
Endpoint
GET /athletes/{athleteName}/meet
Permission
read
Alias
getMeet
FlagDetails
--athlete-name <athleteName>Requiredpath parameter: athleteName

atlas get-meet-by-id

List an athlete's meets

atlas get-meet-by-id --athlete-id <athleteId>
Endpoint
GET /athletes/id/{athleteId}/meet
Permission
read
Alias
getMeetById
FlagDetails
--athlete-id <athleteId>Requiredpath parameter: athleteId

atlas list-meet-results

List locally managed and imported meet-result overrides

atlas list-meet-results --athlete-name <athleteName>
Endpoint
GET /athletes/{athleteName}/meet-results
Permission
read
Alias
listMeetResults
FlagDetails
--athlete-name <athleteName>Requiredpath parameter: athleteName

atlas list-meet-results-by-id

List locally managed and imported meet-result overrides

atlas list-meet-results-by-id --athlete-id <athleteId>
Endpoint
GET /athletes/id/{athleteId}/meet-results
Permission
read
Alias
listMeetResultsById
FlagDetails
--athlete-id <athleteId>Requiredpath parameter: athleteId

atlas remove-meet-result

Delete a local result or hide an imported result

atlas remove-meet-result --athlete-name <athleteName> --source-key <sourceKey>
Endpoint
DELETE /athletes/{athleteName}/meet-results/{sourceKey}
Permission
athlete_data_delete
Alias
removeMeetResult
FlagDetails
--athlete-name <athleteName>Requiredpath parameter: athleteName
--source-key <sourceKey>Requiredpath parameter: sourceKey

atlas remove-meet-result-by-id

Delete a local result or hide an imported result

atlas remove-meet-result-by-id --athlete-id <athleteId> --source-key <sourceKey>
Endpoint
DELETE /athletes/id/{athleteId}/meet-results/{sourceKey}
Permission
athlete_data_delete
Alias
removeMeetResultById
FlagDetails
--athlete-id <athleteId>Requiredpath parameter: athleteId
--source-key <sourceKey>Requiredpath parameter: sourceKey

atlas update-athlete-meet

Update one upcoming meet

atlas update-athlete-meet --athlete-name <athleteName> --meet-id <meetId> --body <JSON|->
Endpoint
PUT /athletes/{athleteName}/meet/{meetId}
Permission
write
Alias
updateAthleteMeet
FlagDetails
--athlete-name <athleteName>Requiredpath parameter: athleteName
--meet-id <meetId>Requiredpath parameter: meetId
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file

atlas update-athlete-meet-by-id

Update one upcoming meet

atlas update-athlete-meet-by-id --athlete-id <athleteId> --meet-id <meetId> --body <JSON|->
Endpoint
PUT /athletes/id/{athleteId}/meet/{meetId}
Permission
write
Alias
updateAthleteMeetById
FlagDetails
--athlete-id <athleteId>Requiredpath parameter: athleteId
--meet-id <meetId>Requiredpath parameter: meetId
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file

atlas upsert-meet

Add an upcoming meet for an athlete

atlas upsert-meet --athlete-name <athleteName> --body <JSON|->
Endpoint
PUT /athletes/{athleteName}/meet
Permission
write
Alias
upsertMeet
FlagDetails
--athlete-name <athleteName>Requiredpath parameter: athleteName
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file

atlas upsert-meet-by-id

Add an upcoming meet for an athlete

atlas upsert-meet-by-id --athlete-id <athleteId> --body <JSON|->
Endpoint
PUT /athletes/id/{athleteId}/meet
Permission
write
Alias
upsertMeetById
FlagDetails
--athlete-id <athleteId>Requiredpath parameter: athleteId
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file

atlas upsert-meet-result

Create or update a local meet result or imported-result override

atlas upsert-meet-result --athlete-name <athleteName> --body <JSON|->
Endpoint
PUT /athletes/{athleteName}/meet-results
Permission
write
Alias
upsertMeetResult
FlagDetails
--athlete-name <athleteName>Requiredpath parameter: athleteName
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file

atlas upsert-meet-result-by-id

Create or update a local meet result or imported-result override

atlas upsert-meet-result-by-id --athlete-id <athleteId> --body <JSON|->
Endpoint
PUT /athletes/id/{athleteId}/meet-results
Permission
write
Alias
upsertMeetResultById
FlagDetails
--athlete-id <athleteId>Requiredpath parameter: athleteId
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file

Meet Plans

atlas create-meet-plan

Create a meet-day worksheet for an athlete

atlas create-meet-plan --athlete-name <athleteName> --body <JSON|->
Endpoint
PUT /athletes/{athleteName}/meet-plans
Permission
write
Alias
createMeetPlan
FlagDetails
--athlete-name <athleteName>Requiredpath parameter: athleteName
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file

atlas create-meet-plan-by-id

Create a meet-day worksheet for an athlete

atlas create-meet-plan-by-id --athlete-id <athleteId> --body <JSON|->
Endpoint
PUT /athletes/id/{athleteId}/meet-plans
Permission
write
Alias
createMeetPlanById
FlagDetails
--athlete-id <athleteId>Requiredpath parameter: athleteId
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file

atlas delete-meet-plan

Delete one meet-day worksheet

atlas delete-meet-plan --athlete-name <athleteName> --meet-plan-id <meetPlanId>
Endpoint
DELETE /athletes/{athleteName}/meet-plans/{meetPlanId}
Permission
athlete_data_delete
Alias
deleteMeetPlan
FlagDetails
--athlete-name <athleteName>Requiredpath parameter: athleteName
--meet-plan-id <meetPlanId>Requiredpath parameter: meetPlanId

atlas delete-meet-plan-by-id

Delete one meet-day worksheet

atlas delete-meet-plan-by-id --athlete-id <athleteId> --meet-plan-id <meetPlanId>
Endpoint
DELETE /athletes/id/{athleteId}/meet-plans/{meetPlanId}
Permission
athlete_data_delete
Alias
deleteMeetPlanById
FlagDetails
--athlete-id <athleteId>Requiredpath parameter: athleteId
--meet-plan-id <meetPlanId>Requiredpath parameter: meetPlanId

atlas export-meet-plan

Export the full meet-plan page (worksheet plus recent lifts, check-in flags, last meet, and two-year history) as JSON or PDF

atlas export-meet-plan --athlete-name <athleteName> --meet-plan-id <meetPlanId> --today <today>
Endpoint
GET /athletes/{athleteName}/meet-plans/{meetPlanId}/export
Permission
read
Alias
exportMeetPlan
FlagDetails
--athlete-name <athleteName>Requiredpath parameter: athleteName
--meet-plan-id <meetPlanId>Requiredpath parameter: meetPlanId
--today <today>RequiredAnchor date for recent-lift and meet-history windows
--format <format>Use pdf or send Accept: application/pdf for a binary PDF download One of "json", "pdf".

atlas export-meet-plan-by-id

Export the full meet-plan page (worksheet plus recent lifts, check-in flags, last meet, and two-year history) as JSON or PDF

atlas export-meet-plan-by-id --athlete-id <athleteId> --meet-plan-id <meetPlanId> --today <today>
Endpoint
GET /athletes/id/{athleteId}/meet-plans/{meetPlanId}/export
Permission
read
Alias
exportMeetPlanById
FlagDetails
--athlete-id <athleteId>Requiredpath parameter: athleteId
--meet-plan-id <meetPlanId>Requiredpath parameter: meetPlanId
--today <today>RequiredAnchor date for recent-lift and meet-history windows
--format <format>Use pdf or send Accept: application/pdf for a binary PDF download One of "json", "pdf".

atlas get-meet-plan

Get one meet-day worksheet

atlas get-meet-plan --athlete-name <athleteName> --meet-plan-id <meetPlanId>
Endpoint
GET /athletes/{athleteName}/meet-plans/{meetPlanId}
Permission
read
Alias
getMeetPlan
FlagDetails
--athlete-name <athleteName>Requiredpath parameter: athleteName
--meet-plan-id <meetPlanId>Requiredpath parameter: meetPlanId

atlas get-meet-plan-by-id

Get one meet-day worksheet

atlas get-meet-plan-by-id --athlete-id <athleteId> --meet-plan-id <meetPlanId>
Endpoint
GET /athletes/id/{athleteId}/meet-plans/{meetPlanId}
Permission
read
Alias
getMeetPlanById
FlagDetails
--athlete-id <athleteId>Requiredpath parameter: athleteId
--meet-plan-id <meetPlanId>Requiredpath parameter: meetPlanId

atlas list-meet-plans

List an athlete's meet-day worksheets

atlas list-meet-plans --athlete-name <athleteName>
Endpoint
GET /athletes/{athleteName}/meet-plans
Permission
read
Alias
listMeetPlans
FlagDetails
--athlete-name <athleteName>Requiredpath parameter: athleteName

atlas list-meet-plans-by-id

List an athlete's meet-day worksheets

atlas list-meet-plans-by-id --athlete-id <athleteId>
Endpoint
GET /athletes/id/{athleteId}/meet-plans
Permission
read
Alias
listMeetPlansById
FlagDetails
--athlete-id <athleteId>Requiredpath parameter: athleteId

atlas update-meet-plan

Replace one meet-day worksheet

atlas update-meet-plan --athlete-name <athleteName> --meet-plan-id <meetPlanId> --body <JSON|->
Endpoint
PUT /athletes/{athleteName}/meet-plans/{meetPlanId}
Permission
write
Alias
updateMeetPlan
FlagDetails
--athlete-name <athleteName>Requiredpath parameter: athleteName
--meet-plan-id <meetPlanId>Requiredpath parameter: meetPlanId
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file

atlas update-meet-plan-by-id

Replace one meet-day worksheet

atlas update-meet-plan-by-id --athlete-id <athleteId> --meet-plan-id <meetPlanId> --body <JSON|->
Endpoint
PUT /athletes/id/{athleteId}/meet-plans/{meetPlanId}
Permission
write
Alias
updateMeetPlanById
FlagDetails
--athlete-id <athleteId>Requiredpath parameter: athleteId
--meet-plan-id <meetPlanId>Requiredpath parameter: meetPlanId
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file

Week Notes

atlas delete-athlete-week-note

Remove the coach note for the week containing a date

atlas delete-athlete-week-note --athlete-name <athleteName> --week-start-date <weekStartDate>
Endpoint
DELETE /athletes/{athleteName}/week-notes/{weekStartDate}
Permission
athlete_data_delete
Alias
deleteAthleteWeekNote
FlagDetails
--athlete-name <athleteName>Requiredpath parameter: athleteName
--week-start-date <weekStartDate>Requiredpath parameter: weekStartDate

atlas delete-athlete-week-note-by-id

Remove the coach note for the week containing a date

atlas delete-athlete-week-note-by-id --athlete-id <athleteId> --week-start-date <weekStartDate>
Endpoint
DELETE /athletes/id/{athleteId}/week-notes/{weekStartDate}
Permission
athlete_data_delete
Alias
deleteAthleteWeekNoteById
FlagDetails
--athlete-id <athleteId>Requiredpath parameter: athleteId
--week-start-date <weekStartDate>Requiredpath parameter: weekStartDate

atlas upsert-athlete-week-note

Set the coach note for the week containing a date

atlas upsert-athlete-week-note --athlete-name <athleteName> --week-start-date <weekStartDate> --body <JSON|->
Endpoint
PUT /athletes/{athleteName}/week-notes/{weekStartDate}
Permission
write
Alias
upsertAthleteWeekNote
FlagDetails
--athlete-name <athleteName>Requiredpath parameter: athleteName
--week-start-date <weekStartDate>Requiredpath parameter: weekStartDate
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file

atlas upsert-athlete-week-note-by-id

Set the coach note for the week containing a date

atlas upsert-athlete-week-note-by-id --athlete-id <athleteId> --week-start-date <weekStartDate> --body <JSON|->
Endpoint
PUT /athletes/id/{athleteId}/week-notes/{weekStartDate}
Permission
write
Alias
upsertAthleteWeekNoteById
FlagDetails
--athlete-id <athleteId>Requiredpath parameter: athleteId
--week-start-date <weekStartDate>Requiredpath parameter: weekStartDate
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file

Session Check-Ins

atlas list-session-check-ins

List pre- and post-workout check-ins for an athlete

atlas list-session-check-ins --athlete-name <athleteName>
Endpoint
GET /athletes/{athleteName}/session-check-ins
Permission
read
Alias
listSessionCheckIns
FlagDetails
--athlete-name <athleteName>Requiredpath parameter: athleteName
--from <from>query parameter: from
--to <to>query parameter: to
--limit <limit>query parameter: limit

atlas list-session-check-ins-by-id

List pre- and post-workout check-ins for an athlete

atlas list-session-check-ins-by-id --athlete-id <athleteId>
Endpoint
GET /athletes/id/{athleteId}/session-check-ins
Permission
read
Alias
listSessionCheckInsById
FlagDetails
--athlete-id <athleteId>Requiredpath parameter: athleteId
--from <from>query parameter: from
--to <to>query parameter: to
--limit <limit>query parameter: limit

Wearables And Nutrition

atlas get-nutrition-food-entries

Fetch the individual foods an athlete logged on one day

atlas get-nutrition-food-entries --athlete-name <athleteName> --date <date>
Endpoint
GET /athletes/{athleteName}/nutrition/entries
Permission
wearables_read
Alias
getNutritionFoodEntries
FlagDetails
--athlete-name <athleteName>Requiredpath parameter: athleteName
--date <date>Requiredquery parameter: date

atlas get-nutrition-food-entries-by-id

Fetch the individual foods an athlete logged on one day

atlas get-nutrition-food-entries-by-id --athlete-id <athleteId> --date <date>
Endpoint
GET /athletes/id/{athleteId}/nutrition/entries
Permission
wearables_read
Alias
getNutritionFoodEntriesById
FlagDetails
--athlete-id <athleteId>Requiredpath parameter: athleteId
--date <date>Requiredquery parameter: date

atlas get-nutrition-metrics

Fetch live daily calorie and macronutrient totals from an athlete's connected nutrition app

atlas get-nutrition-metrics --athlete-name <athleteName> --from <from> --to <to>
Endpoint
GET /athletes/{athleteName}/nutrition
Permission
wearables_read
Alias
getNutritionMetrics
FlagDetails
--athlete-name <athleteName>Requiredpath parameter: athleteName
--from <from>RequiredInclusive start date; the range may not exceed 366 days
--to <to>Requiredquery parameter: to

atlas get-nutrition-metrics-by-id

Fetch live daily calorie and macronutrient totals from an athlete's connected nutrition app

atlas get-nutrition-metrics-by-id --athlete-id <athleteId> --from <from> --to <to>
Endpoint
GET /athletes/id/{athleteId}/nutrition
Permission
wearables_read
Alias
getNutritionMetricsById
FlagDetails
--athlete-id <athleteId>Requiredpath parameter: athleteId
--from <from>RequiredInclusive start date; the range may not exceed 366 days
--to <to>Requiredquery parameter: to

atlas get-oura-metrics

Fetch live Oura sleep and readiness metrics for an athlete

atlas get-oura-metrics --athlete-name <athleteName> --from <from> --to <to>
Endpoint
GET /athletes/{athleteName}/oura
Permission
wearables_read
Alias
getOuraMetrics
FlagDetails
--athlete-name <athleteName>Requiredpath parameter: athleteName
--from <from>Requiredquery parameter: from
--to <to>Requiredquery parameter: to

atlas get-oura-metrics-by-id

Fetch live Oura sleep and readiness metrics for an athlete

atlas get-oura-metrics-by-id --athlete-id <athleteId> --from <from> --to <to>
Endpoint
GET /athletes/id/{athleteId}/oura
Permission
wearables_read
Alias
getOuraMetricsById
FlagDetails
--athlete-id <athleteId>Requiredpath parameter: athleteId
--from <from>Requiredquery parameter: from
--to <to>Requiredquery parameter: to

atlas get-whoop-metrics

Fetch live WHOOP recovery, sleep, and strain metrics for an athlete

atlas get-whoop-metrics --athlete-name <athleteName> --from <from> --to <to>
Endpoint
GET /athletes/{athleteName}/whoop
Permission
wearables_read
Alias
getWhoopMetrics
FlagDetails
--athlete-name <athleteName>Requiredpath parameter: athleteName
--from <from>RequiredInclusive start date; the WHOOP range may not exceed 90 days
--to <to>Requiredquery parameter: to

atlas get-whoop-metrics-by-id

Fetch live WHOOP recovery, sleep, and strain metrics for an athlete

atlas get-whoop-metrics-by-id --athlete-id <athleteId> --from <from> --to <to>
Endpoint
GET /athletes/id/{athleteId}/whoop
Permission
wearables_read
Alias
getWhoopMetricsById
FlagDetails
--athlete-id <athleteId>Requiredpath parameter: athleteId
--from <from>RequiredInclusive start date; the WHOOP range may not exceed 90 days
--to <to>Requiredquery parameter: to

Athlete Workouts

atlas get-workouts-for-analytics

Get flattened programmed workouts for an athlete

atlas get-workouts-for-analytics --athlete-name <athleteName>
Endpoint
GET /athletes/{athleteName}/workouts
Permission
read
Alias
getWorkoutsForAnalytics
FlagDetails
--athlete-name <athleteName>Requiredpath parameter: athleteName
--program-name <programName>query parameter: programName

atlas get-workouts-for-analytics-by-id

Get flattened programmed workouts for an athlete

atlas get-workouts-for-analytics-by-id --athlete-id <athleteId>
Endpoint
GET /athletes/id/{athleteId}/workouts
Permission
read
Alias
getWorkoutsForAnalyticsById
FlagDetails
--athlete-id <athleteId>Requiredpath parameter: athleteId
--program-name <programName>query parameter: programName

Programs

atlas add-program-day

Add a workout day to a program week

atlas add-program-day --program-id <programId> --week-number <weekNumber> --revision <If-Match> --body <JSON|->
Endpoint
POST /programs/{programId}/weeks/{weekNumber}/days
Permission
write
Alias
addProgramDay
FlagDetails
--program-id <programId>Requiredpath parameter: programId
--week-number <weekNumber>Requiredpath parameter: weekNumber
--revision <If-Match>RequiredRevision returned by GET /programs/{programId}
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file

atlas add-program-exercise

Add an exercise to a workout day

atlas add-program-exercise --program-id <programId> --week-number <weekNumber> --day-number <dayNumber> --revision <If-Match> --body <JSON|->
Endpoint
POST /programs/{programId}/weeks/{weekNumber}/days/{dayNumber}/exercises
Permission
write
Alias
addProgramExercise
FlagDetails
--program-id <programId>Requiredpath parameter: programId
--week-number <weekNumber>Requiredpath parameter: weekNumber
--day-number <dayNumber>Requiredpath parameter: dayNumber
--revision <If-Match>RequiredRevision returned by GET /programs/{programId}
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file

atlas add-program-week

Add a week and update weekCount automatically

atlas add-program-week --program-id <programId> --revision <If-Match> --body <JSON|->
Endpoint
POST /programs/{programId}/weeks
Permission
write
Alias
addProgramWeek
FlagDetails
--program-id <programId>Requiredpath parameter: programId
--revision <If-Match>RequiredRevision returned by GET /programs/{programId}
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file

atlas check-program-exists

Check for a program by athlete, name, and start date

atlas check-program-exists --program-name <programName> --start-date <startDate>
Endpoint
GET /programs/exists
Permission
read
Alias
checkProgramExists
FlagDetails
--athlete-name <athleteName>query parameter: athleteName
--athlete-id <athleteId>query parameter: athleteId
--program-name <programName>Requiredquery parameter: programName
--start-date <startDate>Requiredquery parameter: startDate

atlas complete-workout-session

Atomically complete a workout and save its rating and intensity

atlas complete-workout-session --program-id <programId> --week-number <weekNumber> --day-number <dayNumber> --revision <If-Match> --body <JSON|->
Endpoint
POST /programs/{programId}/weeks/{weekNumber}/days/{dayNumber}/complete
Permission
write
Alias
completeWorkoutSession
FlagDetails
--program-id <programId>Requiredpath parameter: programId
--week-number <weekNumber>Requiredpath parameter: weekNumber
--day-number <dayNumber>Requiredpath parameter: dayNumber
--revision <If-Match>RequiredRevision returned by GET /programs/{programId}
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file

atlas copy-program-day

Copy a day to any week while resetting athlete completion data

atlas copy-program-day --program-id <programId> --week-number <weekNumber> --day-number <dayNumber> --revision <If-Match> --body <JSON|->
Endpoint
POST /programs/{programId}/weeks/{weekNumber}/days/{dayNumber}/copy
Permission
write
Alias
copyProgramDay
FlagDetails
--program-id <programId>Requiredpath parameter: programId
--week-number <weekNumber>Requiredpath parameter: weekNumber
--day-number <dayNumber>Requiredpath parameter: dayNumber
--revision <If-Match>RequiredRevision returned by GET /programs/{programId}
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file

atlas copy-program-week

Copy a week while resetting athlete completion data

atlas copy-program-week --program-id <programId> --week-number <weekNumber> --revision <If-Match> --body <JSON|->
Endpoint
POST /programs/{programId}/weeks/{weekNumber}/copy
Permission
write
Alias
copyProgramWeek
FlagDetails
--program-id <programId>Requiredpath parameter: programId
--week-number <weekNumber>Requiredpath parameter: weekNumber
--revision <If-Match>RequiredRevision returned by GET /programs/{programId}
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file

atlas create-program

Create a normalized, idempotent program; numbering, completion flags, targets, and totals receive defaults

atlas create-program --body <JSON|->
Endpoint
POST /programs
Permission
write
Alias
createProgram
FlagDetails
--idempotency-key <Idempotency-Key>header parameter: Idempotency-Key
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file

atlas delete-program

Delete a program

atlas delete-program --program-id <programId> --revision <If-Match>
Endpoint
DELETE /programs/{programId}
Permission
program_delete
Alias
deleteProgram
FlagDetails
--program-id <programId>Requiredpath parameter: programId
--revision <If-Match>RequiredRevision returned by GET /programs/{programId}

atlas delete-program-day

Delete a workout day

atlas delete-program-day --program-id <programId> --week-number <weekNumber> --day-number <dayNumber> --revision <If-Match>
Endpoint
DELETE /programs/{programId}/weeks/{weekNumber}/days/{dayNumber}
Permission
workout_delete
Alias
deleteProgramDay
FlagDetails
--program-id <programId>Requiredpath parameter: programId
--week-number <weekNumber>Requiredpath parameter: weekNumber
--day-number <dayNumber>Requiredpath parameter: dayNumber
--revision <If-Match>RequiredRevision returned by GET /programs/{programId}

atlas delete-program-exercise

Delete an exercise from a workout day

atlas delete-program-exercise --program-id <programId> --week-number <weekNumber> --day-number <dayNumber> --exercise-number <exerciseNumber> --revision <If-Match>
Endpoint
DELETE /programs/{programId}/weeks/{weekNumber}/days/{dayNumber}/exercises/{exerciseNumber}
Permission
workout_delete
Alias
deleteProgramExercise
FlagDetails
--program-id <programId>Requiredpath parameter: programId
--week-number <weekNumber>Requiredpath parameter: weekNumber
--day-number <dayNumber>Requiredpath parameter: dayNumber
--exercise-number <exerciseNumber>Requiredpath parameter: exerciseNumber
--revision <If-Match>RequiredRevision returned by GET /programs/{programId}

atlas delete-program-week

Delete a week

atlas delete-program-week --program-id <programId> --week-number <weekNumber> --revision <If-Match>
Endpoint
DELETE /programs/{programId}/weeks/{weekNumber}
Permission
workout_delete
Alias
deleteProgramWeek
FlagDetails
--program-id <programId>Requiredpath parameter: programId
--week-number <weekNumber>Requiredpath parameter: weekNumber
--revision <If-Match>RequiredRevision returned by GET /programs/{programId}

atlas get-current-program

Get the current program, optionally for one athlete

atlas get-current-program --today <today>
Endpoint
GET /programs/current
Permission
read
Alias
getCurrentProgram
FlagDetails
--today <today>Requiredquery parameter: today
--athlete-name <athleteName>query parameter: athleteName
--athlete-id <athleteId>query parameter: athleteId

atlas get-current-program-summary

Summarize one athlete's current program as the console overview does

atlas get-current-program-summary --today <today>
Endpoint
GET /programs/current/summary
Permission
read
Alias
getCurrentProgramSummary
FlagDetails
--today <today>Requiredquery parameter: today
--athlete-id <athleteId>query parameter: athleteId
--athlete-name <athleteName>query parameter: athleteName

atlas get-program

Get a complete program

atlas get-program --program-id <programId>
Endpoint
GET /programs/{programId}
Permission
read
Alias
getProgram
FlagDetails
--program-id <programId>Requiredpath parameter: programId
--if-none-match <If-None-Match>Return 304 when this revision ETag is still current

atlas list-programs

List programs, optionally filtered by athleteName

atlas list-programs
Endpoint
GET /programs
Permission
read
Alias
listPrograms
FlagDetails
--athlete-name <athleteName>query parameter: athleteName
--athlete-id <athleteId>query parameter: athleteId
--limit <limit>query parameter: limit
--cursor <cursor>query parameter: cursor
--allFollow every cursor and combine all pages

atlas move-program-day

Move a workout day to another date, swapping with an occupied date

atlas move-program-day --program-id <programId> --week-number <weekNumber> --day-number <dayNumber> --revision <If-Match> --body <JSON|->
Endpoint
POST /programs/{programId}/weeks/{weekNumber}/days/{dayNumber}/move
Permission
write
Alias
moveProgramDay
FlagDetails
--program-id <programId>Requiredpath parameter: programId
--week-number <weekNumber>Requiredpath parameter: weekNumber
--day-number <dayNumber>Requiredpath parameter: dayNumber
--revision <If-Match>RequiredRevision returned by GET /programs/{programId}
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file

atlas patch-program-day

Update selected workout-day fields without replacing the program

atlas patch-program-day --program-id <programId> --week-number <weekNumber> --day-number <dayNumber> --revision <If-Match> --body <JSON|->
Endpoint
PATCH /programs/{programId}/weeks/{weekNumber}/days/{dayNumber}
Permission
write
Alias
patchProgramDay
FlagDetails
--program-id <programId>Requiredpath parameter: programId
--week-number <weekNumber>Requiredpath parameter: weekNumber
--day-number <dayNumber>Requiredpath parameter: dayNumber
--revision <If-Match>RequiredRevision returned by GET /programs/{programId}
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file

atlas patch-program-exercise

Update selected exercise and set fields

atlas patch-program-exercise --program-id <programId> --week-number <weekNumber> --day-number <dayNumber> --exercise-number <exerciseNumber> --revision <If-Match> --body <JSON|->
Endpoint
PATCH /programs/{programId}/weeks/{weekNumber}/days/{dayNumber}/exercises/{exerciseNumber}
Permission
write
Alias
patchProgramExercise
FlagDetails
--program-id <programId>Requiredpath parameter: programId
--week-number <weekNumber>Requiredpath parameter: weekNumber
--day-number <dayNumber>Requiredpath parameter: dayNumber
--exercise-number <exerciseNumber>Requiredpath parameter: exerciseNumber
--revision <If-Match>RequiredRevision returned by GET /programs/{programId}
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file

atlas patch-program-metadata

Update athlete, name, start date, rep targets, rep target changes, or weekly totals without replacing workouts

atlas patch-program-metadata --program-id <programId> --revision <If-Match> --body <JSON|->
Endpoint
PATCH /programs/{programId}
Permission
write
Alias
patchProgramMetadata
FlagDetails
--program-id <programId>Requiredpath parameter: programId
--revision <If-Match>RequiredRevision returned by GET /programs/{programId}
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file

atlas patch-program-week

Renumber a week or update its total

atlas patch-program-week --program-id <programId> --week-number <weekNumber> --revision <If-Match> --body <JSON|->
Endpoint
PATCH /programs/{programId}/weeks/{weekNumber}
Permission
write
Alias
patchProgramWeek
FlagDetails
--program-id <programId>Requiredpath parameter: programId
--week-number <weekNumber>Requiredpath parameter: weekNumber
--revision <If-Match>RequiredRevision returned by GET /programs/{programId}
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file

atlas update-program

Replace a complete program

atlas update-program --program-id <programId> --revision <If-Match> --body <JSON|->
Endpoint
PUT /programs/{programId}
Permission
write
Alias
updateProgram
FlagDetails
--program-id <programId>Requiredpath parameter: programId
--revision <If-Match>RequiredRevision returned by GET /programs/{programId}
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file

atlas validate-program

Normalize and validate a program without saving it

atlas validate-program --body <JSON|->
Endpoint
POST /programs/validate
Permission
read
Alias
validateProgram
FlagDetails
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file

Templates

atlas assign-template

Assign a template to an athlete as a dated program

atlas assign-template --template-id <templateId> --body <JSON|->
Endpoint
POST /templates/{templateId}/assign
Permission
write
Alias
assignTemplate
FlagDetails
--template-id <templateId>Requiredpath parameter: templateId
--idempotency-key <Idempotency-Key>header parameter: Idempotency-Key
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file

atlas check-template-exists

Check whether a template name exists

atlas check-template-exists --program-name <programName>
Endpoint
GET /templates/exists
Permission
read
Alias
checkTemplateExists
FlagDetails
--program-name <programName>Requiredquery parameter: programName

atlas delete-template

Delete a reusable template

atlas delete-template --template-id <templateId> --revision <If-Match>
Endpoint
DELETE /templates/{templateId}
Permission
program_delete
Alias
deleteTemplate
FlagDetails
--template-id <templateId>Requiredpath parameter: templateId
--revision <If-Match>RequiredRequired when replacing, moving, or deleting an existing template

atlas get-template

Get a reusable template

atlas get-template --template-id <templateId>
Endpoint
GET /templates/{templateId}
Permission
read
Alias
getTemplate
FlagDetails
--template-id <templateId>Requiredpath parameter: templateId
--if-none-match <If-None-Match>Return 304 when this revision ETag is still current

atlas list-templates

List reusable program templates

atlas list-templates
Endpoint
GET /templates
Permission
read
Alias
listTemplates
FlagDetails
--limit <limit>query parameter: limit
--cursor <cursor>query parameter: cursor
--allFollow every cursor and combine all pages

atlas save-template

Create or update a reusable template by name

atlas save-template --body <JSON|->
Endpoint
POST /templates
Permission
write
Alias
saveTemplate
FlagDetails
--revision <If-Match>Required when replacing, moving, or deleting an existing template
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file

atlas set-template-folder

Move a template into a folder or to the root

atlas set-template-folder --template-id <templateId> --revision <If-Match> --body <JSON|->
Endpoint
PUT /templates/{templateId}/folder
Permission
write
Alias
setTemplateFolder
FlagDetails
--template-id <templateId>Requiredpath parameter: templateId
--revision <If-Match>RequiredRequired when replacing, moving, or deleting an existing template
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file

Template Folders

atlas create-template-folder

Create a program-library folder

atlas create-template-folder --body <JSON|->
Endpoint
POST /template-folders
Permission
write
Alias
createTemplateFolder
FlagDetails
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file

atlas delete-template-folder

Delete a program-library folder and move its templates to the root

atlas delete-template-folder --folder-id <folderId>
Endpoint
DELETE /template-folders/{folderId}
Permission
write
Alias
deleteTemplateFolder
FlagDetails
--folder-id <folderId>Requiredpath parameter: folderId

atlas list-template-folders

List program-library folders owned by the coach

atlas list-template-folders
Endpoint
GET /template-folders
Permission
read
Alias
listTemplateFolders

atlas update-template-folder

Rename a program-library folder

atlas update-template-folder --folder-id <folderId> --body <JSON|->
Endpoint
PATCH /template-folders/{folderId}
Permission
write
Alias
updateTemplateFolder
FlagDetails
--folder-id <folderId>Requiredpath parameter: folderId
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file

Exercise Library

atlas add-exercise

Add an exercise. The Atlas administrator writes the Atlas library. A club admin or assistant writes that club's library. A YouTube video URL is required.

atlas add-exercise --body <JSON|->
Endpoint
POST /exercises
Permission
write
Alias
addExercise
FlagDetails
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file

atlas delete-exercise

Delete an exercise. The Atlas administrator deletes from the Atlas library. A club admin deletes from that club's library.

atlas delete-exercise --name <name>
Endpoint
DELETE /exercises/{name}
Permission
write
Alias
deleteExercise
FlagDetails
--name <name>Requiredpath parameter: name

atlas get-exercise-by-name

Get an exercise from the Atlas or club library visible to this token

atlas get-exercise-by-name --name <name>
Endpoint
GET /exercises/{name}
Permission
read
Alias
getExerciseByName
FlagDetails
--name <name>Requiredpath parameter: name

atlas list-exercises

Browse or search the Atlas and club exercise libraries visible to this token

atlas list-exercises
Endpoint
GET /exercises
Permission
read
Alias
listExercises
FlagDetails
--search <search>query parameter: search
--limit <limit>query parameter: limit
--cursor <cursor>query parameter: cursor
--allFollow every cursor and combine all pages

atlas update-exercise

Update an exercise. The Atlas administrator updates the Atlas library. A club admin updates that club's library. An assistant updates only exercises they added.

atlas update-exercise --name <name> --body <JSON|->
Endpoint
PATCH /exercises/{name}
Permission
write
Alias
updateExercise
FlagDetails
--name <name>Requiredpath parameter: name
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file

Analytics And Activity

atlas get-analytics

Get weekly training analytics for the coach or one athlete

atlas get-analytics --range <range> --today <today>
Endpoint
GET /analytics
Permission
read
Alias
getAnalytics
FlagDetails
--range <range>Requiredquery parameter: range One of "1mo", "3mo", "6mo", "1yr", "All".
--today <today>Requiredquery parameter: today
--athlete-name <athleteName>query parameter: athleteName
--athlete-id <athleteId>query parameter: athleteId

atlas get-coach-dashboard

Get the latest-program summary for every athlete

atlas get-coach-dashboard
Endpoint
GET /dashboard
Permission
read
Alias
getCoachDashboard

atlas get-completed-days

List completed workout days

atlas get-completed-days
Endpoint
GET /completed-days
Permission
read
Alias
getCompletedDays
FlagDetails
--athlete-name <athleteName>query parameter: athleteName
--athlete-id <athleteId>query parameter: athleteId
--limit <limit>query parameter: limit
--time-of-day <timeOfDay>query parameter: timeOfDay One of "morning", "afternoon", "evening".

atlas get-schedule-summaries

Get each athlete's last scheduled date and days remaining

atlas get-schedule-summaries --today <today>
Endpoint
GET /schedule-summaries
Permission
read
Alias
getScheduleSummaries
FlagDetails
--today <today>Requiredquery parameter: today

atlas get-session-activity

List sessions with logged work or completion, with optional planned sessions

atlas get-session-activity
Endpoint
GET /session-activity
Permission
read
Alias
getSessionActivity
FlagDetails
--athlete-name <athleteName>query parameter: athleteName
--athlete-id <athleteId>query parameter: athleteId
--limit <limit>query parameter: limit
--include-planned <includePlanned>query parameter: includePlanned

atlas get-time-of-day-analytics

Compare completed sessions by the part of the athlete's day they started in

atlas get-time-of-day-analytics --range <range> --today <today>
Endpoint
GET /analytics/time-of-day
Permission
read
Alias
getTimeOfDayAnalytics
FlagDetails
--range <range>Requiredquery parameter: range One of "1mo", "3mo", "6mo", "1yr", "All".
--today <today>Requiredquery parameter: today
--athlete-name <athleteName>query parameter: athleteName
--athlete-id <athleteId>query parameter: athleteId

Coach Settings

atlas get-coach-settings

Get coach roster display settings

atlas get-coach-settings
Endpoint
GET /settings
Permission
read
Alias
getCoachSettings

atlas update-coach-settings

Update coach roster display settings

atlas update-coach-settings --body <JSON|->
Endpoint
PATCH /settings
Permission
write
Alias
updateCoachSettings
FlagDetails
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file

Athlete Comments

atlas list-athlete-comments

List athlete comments on the token owner's roster, newest first

atlas list-athlete-comments
Endpoint
GET /comments
Permission
read
Alias
listAthleteComments
FlagDetails
--athlete-id <athleteId>query parameter: athleteId
--since-date <sinceDate>Only sessions on or after this date
--limit <limit>query parameter: limit
--unread-only <unreadOnly>query parameter: unreadOnly

atlas mark-all-athlete-comments-read

Mark one batch of unread athlete comments read

atlas mark-all-athlete-comments-read
Endpoint
POST /comments/read-all
Permission
write
Alias
markAllAthleteCommentsRead
FlagDetails
--body <JSON|->JSON object request body, or - to read stdin
--body-file <PATH>Read the JSON object request body from a file

atlas mark-athlete-comment-read

Mark one athlete comment read for the token owner

atlas mark-athlete-comment-read --comment-key <commentKey>
Endpoint
POST /comments/{commentKey}/read
Permission
write
Alias
markAthleteCommentRead
FlagDetails
--comment-key <commentKey>RequiredA comment key from GET /comments, percent-encoded

atlas mark-athlete-comment-unread

Mark one athlete comment unread for the token owner

atlas mark-athlete-comment-unread --comment-key <commentKey>
Endpoint
DELETE /comments/{commentKey}/read
Permission
write
Alias
markAthleteCommentUnread
FlagDetails
--comment-key <commentKey>RequiredA comment key from GET /comments, percent-encoded

atlas reply-to-athlete-comment

Reply to an athlete comment with a direct message

atlas reply-to-athlete-comment --comment-key <commentKey> --idempotency-key <Idempotency-Key> --body <JSON|->
Endpoint
POST /comments/{commentKey}/replies
Permission
messaging_write
Alias
replyToAthleteComment
FlagDetails
--comment-key <commentKey>RequiredA comment key from GET /comments, percent-encoded
--idempotency-key <Idempotency-Key>RequiredStable caller-generated key; retries return the original message
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file

Messaging

atlas cancel-scheduled-message

Cancel a scheduled message created by this token owner

atlas cancel-scheduled-message --message-id <messageId>
Endpoint
DELETE /messages/scheduled/{messageId}
Permission
messaging_write
Alias
cancelScheduledMessage
FlagDetails
--message-id <messageId>Requiredpath parameter: messageId

atlas create-direct-message

Create or find a 1-1 direct message, including a thread with yourself

atlas create-direct-message --body <JSON|->
Endpoint
POST /messages/dms
Permission
messaging_write
Alias
createDirectMessage
FlagDetails
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file

atlas create-message-attachment-upload

Create an authenticated upload for a photo, voice message, or file

atlas create-message-attachment-upload --conversation-id <conversationId> --body <JSON|->
Endpoint
POST /messages/conversations/{conversationId}/attachments
Permission
messaging_write
Alias
createMessageAttachmentUpload
FlagDetails
--conversation-id <conversationId>Requiredpath parameter: conversationId
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file

atlas create-message-group

Create a custom in-club messaging group

atlas create-message-group --body <JSON|->
Endpoint
POST /messages/groups
Permission
messaging_write
Alias
createMessageGroup
FlagDetails
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file

atlas create-message-video-upload

Create presigned video and optional poster uploads

atlas create-message-video-upload --conversation-id <conversationId> --body <JSON|->
Endpoint
POST /messages/conversations/{conversationId}/videos
Permission
messaging_write
Alias
createMessageVideoUpload
FlagDetails
--conversation-id <conversationId>Requiredpath parameter: conversationId
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file

atlas finalize-message-attachment

Finalize a completed messaging attachment upload

atlas finalize-message-attachment --upload-authorization-id <uploadAuthorizationId> --body <JSON|->
Endpoint
POST /messages/attachments/{uploadAuthorizationId}/finalize
Permission
messaging_write
Alias
finalizeMessageAttachment
FlagDetails
--upload-authorization-id <uploadAuthorizationId>Requiredpath parameter: uploadAuthorizationId
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file

atlas finalize-message-video

Finalize a completed messaging video upload

atlas finalize-message-video --upload-authorization-id <uploadAuthorizationId> --body <JSON|->
Endpoint
POST /messages/videos/{uploadAuthorizationId}/finalize
Permission
messaging_write
Alias
finalizeMessageVideo
FlagDetails
--upload-authorization-id <uploadAuthorizationId>Requiredpath parameter: uploadAuthorizationId
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file

atlas get-message-attachment-transcript

Read a voice message's or video's transcript and summary

atlas get-message-attachment-transcript --attachment-id <attachmentId>
Endpoint
GET /messages/attachments/{attachmentId}/transcript
Permission
messaging_read
Alias
getMessageAttachmentTranscript
FlagDetails
--attachment-id <attachmentId>Requiredpath parameter: attachmentId

atlas get-message-video-playback

Create a short-lived video playback grant

atlas get-message-video-playback --attachment-id <attachmentId>
Endpoint
GET /messages/attachments/{attachmentId}/playback
Permission
messaging_read
Alias
getMessageVideoPlayback
FlagDetails
--attachment-id <attachmentId>Requiredpath parameter: attachmentId

atlas list-conversation-messages

List messages in a conversation

atlas list-conversation-messages --conversation-id <conversationId>
Endpoint
GET /messages/conversations/{conversationId}
Permission
messaging_read
Alias
listConversationMessages
FlagDetails
--conversation-id <conversationId>Requiredpath parameter: conversationId
--cursor <cursor>query parameter: cursor
--limit <limit>query parameter: limit
--allFollow every cursor and combine all pages

atlas list-message-conversations

List messaging conversations in the token's club

atlas list-message-conversations
Endpoint
GET /messages/conversations
Permission
messaging_read
Alias
listMessageConversations
FlagDetails
--cursor <cursor>query parameter: cursor
--limit <limit>query parameter: limit
--archived <archived>query parameter: archived
--allFollow every cursor and combine all pages

atlas list-scheduled-messages

List this token owner's scheduled messages in the club, soonest first

atlas list-scheduled-messages
Endpoint
GET /messages/scheduled
Permission
messaging_read
Alias
listScheduledMessages

atlas mark-conversation-read

Mark a conversation read

atlas mark-conversation-read --conversation-id <conversationId>
Endpoint
POST /messages/conversations/{conversationId}/read
Permission
messaging_write
Alias
markConversationRead
FlagDetails
--conversation-id <conversationId>Requiredpath parameter: conversationId
--body <JSON|->JSON object request body, or - to read stdin
--body-file <PATH>Read the JSON object request body from a file

atlas send-conversation-message

Send a message or reply in a conversation

atlas send-conversation-message --conversation-id <conversationId> --idempotency-key <Idempotency-Key> --body <JSON|->
Endpoint
POST /messages/conversations/{conversationId}
Permission
messaging_write
Alias
sendConversationMessage
FlagDetails
--conversation-id <conversationId>Requiredpath parameter: conversationId
--idempotency-key <Idempotency-Key>RequiredStable caller-generated key; retries return the original message
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file

atlas update-conversation-state

Mute, archive, or restore a conversation

atlas update-conversation-state --conversation-id <conversationId> --body <JSON|->
Endpoint
PATCH /messages/conversations/{conversationId}/state
Permission
messaging_write
Alias
updateConversationState
FlagDetails
--conversation-id <conversationId>Requiredpath parameter: conversationId
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file

atlas update-scheduled-message

Edit, reschedule, or send now a scheduled message created by this token owner

atlas update-scheduled-message --message-id <messageId> --body <JSON|->
Endpoint
PATCH /messages/scheduled/{messageId}
Permission
messaging_write
Alias
updateScheduledMessage
FlagDetails
--message-id <messageId>Requiredpath parameter: messageId
--idempotency-key <Idempotency-Key>Required when text is given; a retry with the same key applies the edit once
--body <JSON|->This or the other body flagJSON object request body, or - to read stdin
--body-file <PATH>This or the other body flagRead the JSON object request body from a file