Skip to main content

Stats & profile

Authenticated read APIs used by dashboards, account tools, and SDK integrations. All routes accept either a session JWT or a personal API token through Bearer authentication.

These summaries describe purpose, not every nested JSON field. Response shapes can gain additive properties over time.

Profile

GET /main/api/v1/get/my/profile/info

Returns the complete account response used by the application: identity and provider data, account state, subscription flags, account roles, team roles, active subscription records, and team dashboard memberships.

Response fieldContents
old_id, uuidLegacy numeric ID and stable public UUID
name, email, avatarPublic-facing account identity
created_at, updated_atAccount timestamps
provider, provider_idAuthentication provider metadata
is_activeAccount activity state
stripe_customer_idCustomer identifier associated with billing
has_solo_plus, has_solo_plus_plusProduct entitlement flags
has_active_subscriptionCombined active-subscription flag
rolesAccount roles with roleId and name
team_rolesTeam role, role name, and team UUID
subscriptionsActive subscription and billing-period records
team_dashboardTeam dashboard membership and ownership records

Python SDK:

profile = await profile_api.main_api_v1_get_my_profile_info_get()
print(profile.to_json())

Go SDK:

profile, _, err := client.ProfileAPI.
MainApiV1GetMyProfileInfoGet(ctx).
Execute()

Profile edits (name, avatar upload) are available to the first-party web app. Integrators that only sync activity usually do not need write profile routes.

Coding statistics

Common reads:

Method & pathPurpose
GET /main/api/v1/get/my/language/statsTime broken down by language
GET /main/api/v1/get/my/activity/historyHistorical activity slices
GET /main/api/v1/get/my/dashboard/statsDashboard aggregate cards (IDE activity)
GET /main/api/v1/get/my/dashboard/stats/desktopDashboard aggregates for desktop-agent activity
GET /main/api/v1/get/my/project/statsPer-project breakdown
GET /main/api/v1/get/my/profile/activity/heatmapHeatmap-oriented activity series

Use these when building a custom dashboard client. Prefer the hosted UI at analogwakatime.com/dashboard for end users.

History access by plan

The period query accepts day, week, month, year, and all where documented.

Account accessAvailable history
Freemost recent seven days (week)
Active paid personal planup to one year (month and year)
Unlimited-history planall history (all)

Free accounts should request period=week. Requests for month, year, or all outside the account entitlement return 403 with code: subscription-required.

dashboard = await statistics_api.main_api_v1_get_my_dashboard_stats_get()
projects = await statistics_api.main_api_v1_get_my_project_stats_get(period="week")

The main dashboard aggregate has no period argument. The server automatically limits it to seven days for Free accounts, one year for eligible paid accounts, or all history for unlimited-history accounts.

See Python SDK statistics and Go SDK statistics for complete examples.

Exports

Users can download their own data:

PathPurpose
GET /main/api/v1/export/my/profile-dataProfile-oriented export JSON
GET /main/api/v1/export/my/activity-dataActivity history export JSON

Treat export files as sensitive (they can include identifiers and tokens depending on export type). See the site Export Data Policy.

Teams & leaderboards (high level)

Authenticated team and personal leaderboard reads exist for product features (for example “my top” leaderboard entries and team role listing). Exact team-administration and invitation workflows are owned by the web app and are not fully enumerated here.

What is not covered

For safety and product integrity, this public docs set does not expand on:

  • billing provider webhooks and subscription mutation internals
  • two-factor setup/backup material beyond “2FA exists in the product”
  • account deletion state machines
  • operator / metrics / internal service routes
  • privileged device-authorize helpers beyond the plugin poll flow

Contact support if you need a partner integration beyond the documented client surface.