# Atlas Developer Docs > Atlas is a weightlifting coaching product. The Coach API is a versioned REST API for agents and integrations, scoped to one club and the coach who created the personal access token. The OpenAPI document is the source of truth for paths, operationIds, and schemas. - Base URL: https://graceful-tortoise-95.convex.site/api/v1 - OpenAPI document (public, no token): https://graceful-tortoise-95.convex.site/api/v1/openapi.json - Auth header on every request: Authorization: Bearer YOUR_ATLAS_API_TOKEN - Tokens are created by a coach on the Integrations page of the coach console, or by running `atlas login` and approving the code in the console. Never embed a real token. ## Docs - [Getting Started](https://atlas.meetcal.app/docs): What the Coach API exposes, how to create a token, authentication, permissions, errors, rate limits, idempotency, and revisions. - [Coach API Reference](https://atlas.meetcal.app/docs/api): Every Coach API endpoint with its parameters, request body, responses, and permission. - [Atlas CLI](https://atlas.meetcal.app/docs/cli): Install and authenticate the atlas command-line client, and every command it offers. - [Agent Skill](https://atlas.meetcal.app/docs/agent-skill): Give an AI agent the Atlas skill so it can work with your club through the Coach API. - [OpenAPI Document](https://graceful-tortoise-95.convex.site/api/v1/openapi.json): The machine-readable Coach API contract. ## Atlas CLI Downloads - macOS (Apple Silicon): https://atlas.meetcal.app/download/cli/macos-arm64 - macOS (Intel): https://atlas.meetcal.app/download/cli/macos-x64 - Linux (x64): https://atlas.meetcal.app/download/cli/linux-x64 - Linux (ARM64): https://atlas.meetcal.app/download/cli/linux-arm64 - Windows (x64): https://atlas.meetcal.app/download/cli/windows-x64 - SHA-256 checksums: https://atlas.meetcal.app/download/cli/checksums ## Rules - Start with GET /account to confirm the token, its permissions, and the rate limit. - Each token may make 120 requests per minute. A 429 carries Retry-After in seconds. - Every error returns { "error": { "code", "message" } }. 4xx means the request can be fixed; 5xx means it cannot. - Program, week, day, and exercise writes send the current revision in If-Match. A stale revision returns 412: re-read, merge, and retry. A missing one returns 428. - Send Idempotency-Key (at most 128 characters) on program create and template assign; sending a message and replying to an athlete comment require one. - Athlete comment routes act as the token owner and follow the club selected in Atlas: a token bound to another of the coach's clubs gets 409 until that club is selected. Replies need messaging_write. - Follow continueCursor until isDone is true. GET /roster?limit=100 is the complete roster; program and template pages hold at most 10 items. - Prefer athleteId over editable athlete names, and create or adopt a roster entry before writing a new program. - Completed sessions are locked; only the athlete can change them from the app. - Live Oura, WHOOP, and FatSecret reads need wearables_read. Messaging needs messaging_read or messaging_write. ## Endpoints ### Account And Health - [GET /health](https://atlas.meetcal.app/docs/api#health): Check API availability (permission: public) - [GET /account](https://atlas.meetcal.app/docs/api#getAgentAccount): Inspect the authenticated token, scopes, and rate limit (permission: read) ### Roster - [GET /roster](https://atlas.meetcal.app/docs/api#listRoster): Page through the complete stable coach-owned athlete roster (permission: read) ### Athletes - [GET /athletes](https://atlas.meetcal.app/docs/api#listAthletes): List athletes belonging to the coach (permission: read) - [POST /athletes](https://atlas.meetcal.app/docs/api#createAthlete): Create or adopt a stable coach-owned roster entry (permission: write) - [GET /athletes/by-id/{athleteId}](https://atlas.meetcal.app/docs/api#getAthleteById): Get an athlete profile and integration status (permission: read) - [PATCH /athletes/by-id/{athleteId}](https://atlas.meetcal.app/docs/api#updateAthleteProfileById): Update an athlete name, email, or Output connection (permission: write) - [DELETE /athletes/by-id/{athleteId}](https://atlas.meetcal.app/docs/api#archiveAthleteProfileById): Archive an athlete roster profile without deleting its history (permission: athlete_data_delete) - [DELETE /athletes/{athleteName}](https://atlas.meetcal.app/docs/api#deleteAthleteData): Delete all programs, personal records, and meet data for an athlete (permission: athlete_data_delete) - [DELETE /athletes/id/{athleteId}](https://atlas.meetcal.app/docs/api#deleteAthleteDataById): Delete all programs, personal records, and meet data for an athlete (permission: athlete_data_delete) ### Personal Records - [GET /athletes/{athleteName}/recent-bests](https://atlas.meetcal.app/docs/api#getRecentBests): Get best estimated 1RMs from completed non-miss sets in the prior three months (permission: read) - [POST /athletes/{athleteName}/calculate-weights](https://atlas.meetcal.app/docs/api#calculateTrainingWeights): Calculate rounded training weights from an athlete PR (permission: read) - [GET /athletes/{athleteName}/personal-records](https://atlas.meetcal.app/docs/api#listPersonalRecords): List an athlete's personal records (permission: read) - [PUT /athletes/{athleteName}/personal-records](https://atlas.meetcal.app/docs/api#upsertPersonalRecord): Create or update an athlete personal record (permission: write) - [DELETE /athletes/{athleteName}/personal-records](https://atlas.meetcal.app/docs/api#deleteAllPersonalRecords): Delete every personal record for an athlete (permission: athlete_data_delete) - [POST /athletes/{athleteName}/personal-records/bulk](https://atlas.meetcal.app/docs/api#bulkUpsertPersonalRecords): Create or update up to 100 personal records (permission: write) - [DELETE /athletes/{athleteName}/personal-records/{personalRecordId}](https://atlas.meetcal.app/docs/api#deletePersonalRecord): Delete one personal record (permission: athlete_data_delete) - [GET /athletes/id/{athleteId}/recent-bests](https://atlas.meetcal.app/docs/api#getRecentBestsById): Get best estimated 1RMs from completed non-miss sets in the prior three months (permission: read) - [POST /athletes/id/{athleteId}/calculate-weights](https://atlas.meetcal.app/docs/api#calculateTrainingWeightsById): Calculate rounded training weights from an athlete PR (permission: read) - [GET /athletes/id/{athleteId}/personal-records](https://atlas.meetcal.app/docs/api#listPersonalRecordsById): List an athlete's personal records (permission: read) - [PUT /athletes/id/{athleteId}/personal-records](https://atlas.meetcal.app/docs/api#upsertPersonalRecordById): Create or update an athlete personal record (permission: write) - [DELETE /athletes/id/{athleteId}/personal-records](https://atlas.meetcal.app/docs/api#deleteAllPersonalRecordsById): Delete every personal record for an athlete (permission: athlete_data_delete) - [POST /athletes/id/{athleteId}/personal-records/bulk](https://atlas.meetcal.app/docs/api#bulkUpsertPersonalRecordsById): Create or update up to 100 personal records (permission: write) - [DELETE /athletes/id/{athleteId}/personal-records/{personalRecordId}](https://atlas.meetcal.app/docs/api#deletePersonalRecordById): Delete one personal record (permission: athlete_data_delete) ### Meets And Annual Plans - [GET /athletes/{athleteName}/annual-plan](https://atlas.meetcal.app/docs/api#getAnnualPlan): Get meets, overlapping programs, and week notes in an athlete's date range (permission: read) - [GET /athletes/{athleteName}/meet](https://atlas.meetcal.app/docs/api#getMeet): List an athlete's meets (permission: read) - [PUT /athletes/{athleteName}/meet](https://atlas.meetcal.app/docs/api#upsertMeet): Add an upcoming meet for an athlete (permission: write) - [DELETE /athletes/{athleteName}/meet](https://atlas.meetcal.app/docs/api#deleteMeet): Delete all upcoming meets for an athlete (permission: athlete_data_delete) - [GET /athletes/{athleteName}/meet-results](https://atlas.meetcal.app/docs/api#listMeetResults): List locally managed and imported meet-result overrides (permission: read) - [PUT /athletes/{athleteName}/meet-results](https://atlas.meetcal.app/docs/api#upsertMeetResult): Create or update a local meet result or imported-result override (permission: write) - [DELETE /athletes/{athleteName}/meet-results/{sourceKey}](https://atlas.meetcal.app/docs/api#removeMeetResult): Delete a local result or hide an imported result (permission: athlete_data_delete) - [PUT /athletes/{athleteName}/meet/{meetId}](https://atlas.meetcal.app/docs/api#updateAthleteMeet): Update one upcoming meet (permission: write) - [DELETE /athletes/{athleteName}/meet/{meetId}](https://atlas.meetcal.app/docs/api#deleteAthleteMeet): Delete one upcoming meet (permission: athlete_data_delete) - [GET /athletes/id/{athleteId}/annual-plan](https://atlas.meetcal.app/docs/api#getAnnualPlanById): Get meets, overlapping programs, and week notes in an athlete's date range (permission: read) - [GET /athletes/id/{athleteId}/meet](https://atlas.meetcal.app/docs/api#getMeetById): List an athlete's meets (permission: read) - [PUT /athletes/id/{athleteId}/meet](https://atlas.meetcal.app/docs/api#upsertMeetById): Add an upcoming meet for an athlete (permission: write) - [DELETE /athletes/id/{athleteId}/meet](https://atlas.meetcal.app/docs/api#deleteMeetById): Delete all upcoming meets for an athlete (permission: athlete_data_delete) - [GET /athletes/id/{athleteId}/meet-results](https://atlas.meetcal.app/docs/api#listMeetResultsById): List locally managed and imported meet-result overrides (permission: read) - [PUT /athletes/id/{athleteId}/meet-results](https://atlas.meetcal.app/docs/api#upsertMeetResultById): Create or update a local meet result or imported-result override (permission: write) - [DELETE /athletes/id/{athleteId}/meet-results/{sourceKey}](https://atlas.meetcal.app/docs/api#removeMeetResultById): Delete a local result or hide an imported result (permission: athlete_data_delete) - [PUT /athletes/id/{athleteId}/meet/{meetId}](https://atlas.meetcal.app/docs/api#updateAthleteMeetById): Update one upcoming meet (permission: write) - [DELETE /athletes/id/{athleteId}/meet/{meetId}](https://atlas.meetcal.app/docs/api#deleteAthleteMeetById): Delete one upcoming meet (permission: athlete_data_delete) ### Meet Plans - [GET /athletes/{athleteName}/meet-plans](https://atlas.meetcal.app/docs/api#listMeetPlans): List an athlete's meet-day worksheets (permission: read) - [PUT /athletes/{athleteName}/meet-plans](https://atlas.meetcal.app/docs/api#createMeetPlan): Create a meet-day worksheet for an athlete (permission: write) - [GET /athletes/{athleteName}/meet-plans/{meetPlanId}](https://atlas.meetcal.app/docs/api#getMeetPlan): Get one meet-day worksheet (permission: read) - [PUT /athletes/{athleteName}/meet-plans/{meetPlanId}](https://atlas.meetcal.app/docs/api#updateMeetPlan): Replace one meet-day worksheet (permission: write) - [DELETE /athletes/{athleteName}/meet-plans/{meetPlanId}](https://atlas.meetcal.app/docs/api#deleteMeetPlan): Delete one meet-day worksheet (permission: athlete_data_delete) - [GET /athletes/{athleteName}/meet-plans/{meetPlanId}/export](https://atlas.meetcal.app/docs/api#exportMeetPlan): Export the full meet-plan page (worksheet plus recent lifts, check-in flags, last meet, and two-year history) as JSON or PDF (permission: read) - [GET /athletes/id/{athleteId}/meet-plans](https://atlas.meetcal.app/docs/api#listMeetPlansById): List an athlete's meet-day worksheets (permission: read) - [PUT /athletes/id/{athleteId}/meet-plans](https://atlas.meetcal.app/docs/api#createMeetPlanById): Create a meet-day worksheet for an athlete (permission: write) - [GET /athletes/id/{athleteId}/meet-plans/{meetPlanId}](https://atlas.meetcal.app/docs/api#getMeetPlanById): Get one meet-day worksheet (permission: read) - [PUT /athletes/id/{athleteId}/meet-plans/{meetPlanId}](https://atlas.meetcal.app/docs/api#updateMeetPlanById): Replace one meet-day worksheet (permission: write) - [DELETE /athletes/id/{athleteId}/meet-plans/{meetPlanId}](https://atlas.meetcal.app/docs/api#deleteMeetPlanById): Delete one meet-day worksheet (permission: athlete_data_delete) - [GET /athletes/id/{athleteId}/meet-plans/{meetPlanId}/export](https://atlas.meetcal.app/docs/api#exportMeetPlanById): Export the full meet-plan page (worksheet plus recent lifts, check-in flags, last meet, and two-year history) as JSON or PDF (permission: read) ### Week Notes - [PUT /athletes/{athleteName}/week-notes/{weekStartDate}](https://atlas.meetcal.app/docs/api#upsertAthleteWeekNote): Set the coach note for the week containing a date (permission: write) - [DELETE /athletes/{athleteName}/week-notes/{weekStartDate}](https://atlas.meetcal.app/docs/api#deleteAthleteWeekNote): Remove the coach note for the week containing a date (permission: athlete_data_delete) - [PUT /athletes/id/{athleteId}/week-notes/{weekStartDate}](https://atlas.meetcal.app/docs/api#upsertAthleteWeekNoteById): Set the coach note for the week containing a date (permission: write) - [DELETE /athletes/id/{athleteId}/week-notes/{weekStartDate}](https://atlas.meetcal.app/docs/api#deleteAthleteWeekNoteById): Remove the coach note for the week containing a date (permission: athlete_data_delete) ### Session Check-Ins - [GET /athletes/{athleteName}/session-check-ins](https://atlas.meetcal.app/docs/api#listSessionCheckIns): List pre- and post-workout check-ins for an athlete (permission: read) - [GET /athletes/id/{athleteId}/session-check-ins](https://atlas.meetcal.app/docs/api#listSessionCheckInsById): List pre- and post-workout check-ins for an athlete (permission: read) ### Wearables And Nutrition - [GET /athletes/{athleteName}/oura](https://atlas.meetcal.app/docs/api#getOuraMetrics): Fetch live Oura sleep and readiness metrics for an athlete (permission: wearables_read) - [GET /athletes/{athleteName}/whoop](https://atlas.meetcal.app/docs/api#getWhoopMetrics): Fetch live WHOOP recovery, sleep, and strain metrics for an athlete (permission: wearables_read) - [GET /athletes/{athleteName}/nutrition](https://atlas.meetcal.app/docs/api#getNutritionMetrics): Fetch live daily calorie and macronutrient totals from an athlete's connected nutrition app (permission: wearables_read) - [GET /athletes/{athleteName}/nutrition/entries](https://atlas.meetcal.app/docs/api#getNutritionFoodEntries): Fetch the individual foods an athlete logged on one day (permission: wearables_read) - [GET /athletes/id/{athleteId}/oura](https://atlas.meetcal.app/docs/api#getOuraMetricsById): Fetch live Oura sleep and readiness metrics for an athlete (permission: wearables_read) - [GET /athletes/id/{athleteId}/whoop](https://atlas.meetcal.app/docs/api#getWhoopMetricsById): Fetch live WHOOP recovery, sleep, and strain metrics for an athlete (permission: wearables_read) - [GET /athletes/id/{athleteId}/nutrition](https://atlas.meetcal.app/docs/api#getNutritionMetricsById): Fetch live daily calorie and macronutrient totals from an athlete's connected nutrition app (permission: wearables_read) - [GET /athletes/id/{athleteId}/nutrition/entries](https://atlas.meetcal.app/docs/api#getNutritionFoodEntriesById): Fetch the individual foods an athlete logged on one day (permission: wearables_read) ### Athlete Workouts - [GET /athletes/{athleteName}/workouts](https://atlas.meetcal.app/docs/api#getWorkoutsForAnalytics): Get flattened programmed workouts for an athlete (permission: read) - [GET /athletes/id/{athleteId}/workouts](https://atlas.meetcal.app/docs/api#getWorkoutsForAnalyticsById): Get flattened programmed workouts for an athlete (permission: read) ### Programs - [GET /programs](https://atlas.meetcal.app/docs/api#listPrograms): List programs, optionally filtered by athleteName (permission: read) - [POST /programs](https://atlas.meetcal.app/docs/api#createProgram): Create a normalized, idempotent program; numbering, completion flags, targets, and totals receive defaults (permission: write) - [GET /programs/{programId}](https://atlas.meetcal.app/docs/api#getProgram): Get a complete program (permission: read) - [PUT /programs/{programId}](https://atlas.meetcal.app/docs/api#updateProgram): Replace a complete program (permission: write) - [PATCH /programs/{programId}](https://atlas.meetcal.app/docs/api#patchProgramMetadata): Update athlete, name, start date, rep targets, rep target changes, or weekly totals without replacing workouts (permission: write) - [DELETE /programs/{programId}](https://atlas.meetcal.app/docs/api#deleteProgram): Delete a program (permission: program_delete) - [GET /programs/current](https://atlas.meetcal.app/docs/api#getCurrentProgram): Get the current program, optionally for one athlete (permission: read) - [GET /programs/current/summary](https://atlas.meetcal.app/docs/api#getCurrentProgramSummary): Summarize one athlete's current program as the console overview does (permission: read) - [GET /programs/exists](https://atlas.meetcal.app/docs/api#checkProgramExists): Check for a program by athlete, name, and start date (permission: read) - [POST /programs/validate](https://atlas.meetcal.app/docs/api#validateProgram): Normalize and validate a program without saving it (permission: read) - [POST /programs/{programId}/weeks](https://atlas.meetcal.app/docs/api#addProgramWeek): Add a week and update weekCount automatically (permission: write) - [PATCH /programs/{programId}/weeks/{weekNumber}](https://atlas.meetcal.app/docs/api#patchProgramWeek): Renumber a week or update its total (permission: write) - [DELETE /programs/{programId}/weeks/{weekNumber}](https://atlas.meetcal.app/docs/api#deleteProgramWeek): Delete a week (permission: workout_delete) - [POST /programs/{programId}/weeks/{weekNumber}/copy](https://atlas.meetcal.app/docs/api#copyProgramWeek): Copy a week while resetting athlete completion data (permission: write) - [POST /programs/{programId}/weeks/{weekNumber}/days](https://atlas.meetcal.app/docs/api#addProgramDay): Add a workout day to a program week (permission: write) - [PATCH /programs/{programId}/weeks/{weekNumber}/days/{dayNumber}](https://atlas.meetcal.app/docs/api#patchProgramDay): Update selected workout-day fields without replacing the program (permission: write) - [DELETE /programs/{programId}/weeks/{weekNumber}/days/{dayNumber}](https://atlas.meetcal.app/docs/api#deleteProgramDay): Delete a workout day (permission: workout_delete) - [POST /programs/{programId}/weeks/{weekNumber}/days/{dayNumber}/move](https://atlas.meetcal.app/docs/api#moveProgramDay): Move a workout day to another date, swapping with an occupied date (permission: write) - [POST /programs/{programId}/weeks/{weekNumber}/days/{dayNumber}/complete](https://atlas.meetcal.app/docs/api#completeWorkoutSession): Atomically complete a workout and save its rating and intensity (permission: write) - [POST /programs/{programId}/weeks/{weekNumber}/days/{dayNumber}/copy](https://atlas.meetcal.app/docs/api#copyProgramDay): Copy a day to any week while resetting athlete completion data (permission: write) - [POST /programs/{programId}/weeks/{weekNumber}/days/{dayNumber}/exercises](https://atlas.meetcal.app/docs/api#addProgramExercise): Add an exercise to a workout day (permission: write) - [PATCH /programs/{programId}/weeks/{weekNumber}/days/{dayNumber}/exercises/{exerciseNumber}](https://atlas.meetcal.app/docs/api#patchProgramExercise): Update selected exercise and set fields (permission: write) - [DELETE /programs/{programId}/weeks/{weekNumber}/days/{dayNumber}/exercises/{exerciseNumber}](https://atlas.meetcal.app/docs/api#deleteProgramExercise): Delete an exercise from a workout day (permission: workout_delete) ### Templates - [GET /templates](https://atlas.meetcal.app/docs/api#listTemplates): List reusable program templates (permission: read) - [POST /templates](https://atlas.meetcal.app/docs/api#saveTemplate): Create or update a reusable template by name (permission: write) - [GET /templates/{templateId}](https://atlas.meetcal.app/docs/api#getTemplate): Get a reusable template (permission: read) - [DELETE /templates/{templateId}](https://atlas.meetcal.app/docs/api#deleteTemplate): Delete a reusable template (permission: program_delete) - [GET /templates/exists](https://atlas.meetcal.app/docs/api#checkTemplateExists): Check whether a template name exists (permission: read) - [POST /templates/{templateId}/assign](https://atlas.meetcal.app/docs/api#assignTemplate): Assign a template to an athlete as a dated program (permission: write) - [PUT /templates/{templateId}/folder](https://atlas.meetcal.app/docs/api#setTemplateFolder): Move a template into a folder or to the root (permission: write) ### Template Folders - [GET /template-folders](https://atlas.meetcal.app/docs/api#listTemplateFolders): List program-library folders owned by the coach (permission: read) - [POST /template-folders](https://atlas.meetcal.app/docs/api#createTemplateFolder): Create a program-library folder (permission: write) - [PATCH /template-folders/{folderId}](https://atlas.meetcal.app/docs/api#updateTemplateFolder): Rename a program-library folder (permission: write) - [DELETE /template-folders/{folderId}](https://atlas.meetcal.app/docs/api#deleteTemplateFolder): Delete a program-library folder and move its templates to the root (permission: write) ### Exercise Library - [GET /exercises](https://atlas.meetcal.app/docs/api#listExercises): Browse or search the Atlas and club exercise libraries visible to this token (permission: read) - [POST /exercises](https://atlas.meetcal.app/docs/api#addExercise): 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. (permission: write) - [GET /exercises/{name}](https://atlas.meetcal.app/docs/api#getExerciseByName): Get an exercise from the Atlas or club library visible to this token (permission: read) - [PATCH /exercises/{name}](https://atlas.meetcal.app/docs/api#updateExercise): 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. (permission: write) - [DELETE /exercises/{name}](https://atlas.meetcal.app/docs/api#deleteExercise): Delete an exercise. The Atlas administrator deletes from the Atlas library. A club admin deletes from that club's library. (permission: write) ### Analytics And Activity - [GET /dashboard](https://atlas.meetcal.app/docs/api#getCoachDashboard): Get the latest-program summary for every athlete (permission: read) - [GET /schedule-summaries](https://atlas.meetcal.app/docs/api#getScheduleSummaries): Get each athlete's last scheduled date and days remaining (permission: read) - [GET /analytics](https://atlas.meetcal.app/docs/api#getAnalytics): Get weekly training analytics for the coach or one athlete (permission: read) - [GET /analytics/time-of-day](https://atlas.meetcal.app/docs/api#getTimeOfDayAnalytics): Compare completed sessions by the part of the athlete's day they started in (permission: read) - [GET /completed-days](https://atlas.meetcal.app/docs/api#getCompletedDays): List completed workout days (permission: read) - [GET /session-activity](https://atlas.meetcal.app/docs/api#getSessionActivity): List sessions with logged work or completion, with optional planned sessions (permission: read) ### Coach Settings - [GET /settings](https://atlas.meetcal.app/docs/api#getCoachSettings): Get coach roster display settings (permission: read) - [PATCH /settings](https://atlas.meetcal.app/docs/api#updateCoachSettings): Update coach roster display settings (permission: write) ### Athlete Comments - [GET /comments](https://atlas.meetcal.app/docs/api#listAthleteComments): List athlete comments on the token owner's roster, newest first (permission: read) - [POST /comments/read-all](https://atlas.meetcal.app/docs/api#markAllAthleteCommentsRead): Mark one batch of unread athlete comments read (permission: write) - [POST /comments/{commentKey}/read](https://atlas.meetcal.app/docs/api#markAthleteCommentRead): Mark one athlete comment read for the token owner (permission: write) - [DELETE /comments/{commentKey}/read](https://atlas.meetcal.app/docs/api#markAthleteCommentUnread): Mark one athlete comment unread for the token owner (permission: write) - [POST /comments/{commentKey}/replies](https://atlas.meetcal.app/docs/api#replyToAthleteComment): Reply to an athlete comment with a direct message (permission: messaging_write) ### Messaging - [GET /messages/conversations](https://atlas.meetcal.app/docs/api#listMessageConversations): List messaging conversations in the token's club (permission: messaging_read) - [GET /messages/conversations/{conversationId}](https://atlas.meetcal.app/docs/api#listConversationMessages): List messages in a conversation (permission: messaging_read) - [POST /messages/conversations/{conversationId}](https://atlas.meetcal.app/docs/api#sendConversationMessage): Send a message or reply in a conversation (permission: messaging_write) - [POST /messages/conversations/{conversationId}/read](https://atlas.meetcal.app/docs/api#markConversationRead): Mark a conversation read (permission: messaging_write) - [POST /messages/conversations/{conversationId}/attachments](https://atlas.meetcal.app/docs/api#createMessageAttachmentUpload): Create an authenticated upload for a photo, voice message, or file (permission: messaging_write) - [POST /messages/attachments/{uploadAuthorizationId}/finalize](https://atlas.meetcal.app/docs/api#finalizeMessageAttachment): Finalize a completed messaging attachment upload (permission: messaging_write) - [POST /messages/conversations/{conversationId}/videos](https://atlas.meetcal.app/docs/api#createMessageVideoUpload): Create presigned video and optional poster uploads (permission: messaging_write) - [POST /messages/videos/{uploadAuthorizationId}/finalize](https://atlas.meetcal.app/docs/api#finalizeMessageVideo): Finalize a completed messaging video upload (permission: messaging_write) - [GET /messages/attachments/{attachmentId}/transcript](https://atlas.meetcal.app/docs/api#getMessageAttachmentTranscript): Read a voice message's or video's transcript and summary (permission: messaging_read) - [GET /messages/attachments/{attachmentId}/playback](https://atlas.meetcal.app/docs/api#getMessageVideoPlayback): Create a short-lived video playback grant (permission: messaging_read) - [PATCH /messages/conversations/{conversationId}/state](https://atlas.meetcal.app/docs/api#updateConversationState): Mute, archive, or restore a conversation (permission: messaging_write) - [GET /messages/scheduled](https://atlas.meetcal.app/docs/api#listScheduledMessages): List this token owner's scheduled messages in the club, soonest first (permission: messaging_read) - [PATCH /messages/scheduled/{messageId}](https://atlas.meetcal.app/docs/api#updateScheduledMessage): Edit, reschedule, or send now a scheduled message created by this token owner (permission: messaging_write) - [DELETE /messages/scheduled/{messageId}](https://atlas.meetcal.app/docs/api#cancelScheduledMessage): Cancel a scheduled message created by this token owner (permission: messaging_write) - [POST /messages/dms](https://atlas.meetcal.app/docs/api#createDirectMessage): Create or find a 1-1 direct message, including a thread with yourself (permission: messaging_write) - [POST /messages/groups](https://atlas.meetcal.app/docs/api#createMessageGroup): Create a custom in-club messaging group (permission: messaging_write)