Skip to main content
Astral keeps coaches and athletes connected through a layered notification system. You receive in-app notifications when athletes join or leave your organization, and you can proactively reach athletes through direct push notifications and broadcast campaigns.

Notification center

The notification center collects all notifications for your account in one place. Categories include:
CategoryWhat it covers
trainingAI insights, weekly summaries, activity feedback
teamMember joined / member left events
socialGroup posts and leaderboard updates
achievementsPersonal records and milestones
remindersScheduled workout reminders
Click the bell icon in the top navigation bar to open the notification center. You can filter by category, mark individual notifications as read, or mark all as read at once.

AI-generated summaries

Astral’s AI coach Rex generates summaries for individual activities and weekly training blocks. These appear in each athlete’s profile and in your notification center.

Weekly summaries

Weekly summaries include:
  • summary_text — Rex’s narrative overview of the athlete’s week
  • total_distance — total km for the week
  • total_activities — number of completed runs
  • average_pace — average pace in min/km (display format: M:SS)
  • runner_score — overall performance score for the week
Fetch the most recent weekly summaries for the authenticated user (up to 12 weeks):
GET /api/v1/notifications/ai-summary/weekly?limit=4
Filter to a specific week:
GET /api/v1/notifications/ai-summary/weekly?week_start=2026-04-14
Fetch AI summaries for a specific activity:
GET /api/v1/notifications/ai-summary?activity_id={activity_id}

Sending push notifications

Direct push to a single athlete

Send a push notification directly to one athlete by their user ID. The notification delivers to all valid devices registered to that athlete.
POST /api/v1/notifications/direct-push
{
  "user_id": "usr_abc123",
  "title": "Time to run!",
  "message": "Your tempo run is scheduled for today. You've got this.",
  "data": {
    "type": "training_reminder",
    "plan_id": "plan_xyz789"
  }
}
The data object is optional and is passed through to the mobile app for deep-linking or custom handling. The response includes tokens_sent and failed_tokens counts.
A push notification can only be delivered if the athlete has a valid device token registered. You can check whether an athlete has push enabled by looking at the has_push_token field in the coach_athletes_metrics response.

Broadcast push to a topic

Broadcast push sends a notification to all subscribers of a topic channel.
POST /api/v1/notifications/push
{
  "topic": "general",
  "title": "Race day update",
  "message": "Check the app for updated logistics for this weekend's race."
}
The topic defaults to "general" if omitted. Use this for platform-wide announcements.

Broadcast campaigns

Broadcasts are targeted message campaigns sent to a defined audience of athletes. They support push notifications, email, and LINE channels, and can be sent immediately or scheduled for a future time.
Navigate to Broadcasts in the left sidebar to create and manage campaigns. The campaign builder lets you:
  1. Choose a channel (push, email, or LINE)
  2. Write your message content
  3. Define your audience — all athletes, a segment, or a manually selected list
  4. Schedule for immediate delivery or set a future date and time

Registering a device for push notifications

Athletes register their device tokens through the mobile app automatically. If you are building an integration or testing push delivery, you can register a token directly.
POST /api/v1/notifications/tokens/device
{
  "user_id": "usr_abc123",
  "token": "fcm_token_string_here",
  "platform": "ios",
  "device_id": "device-uuid-here",
  "app_version": "2.4.1",
  "metadata": {
    "device_model": "iPhone 15",
    "os_version": "17.4",
    "timezone": "Asia/Taipei"
  }
}
Supported platform values: ios, android, web.

Checking token status for an athlete

GET /api/v1/notifications/tokens/info/{user_id}
The response shows the number of registered tokens, their platforms, validity status, and the last activity timestamp.