---
title: "User Info"
method: GET
path: "/api/v1/user"
tags: ["User"]
---

# User Info

`GET /api/v1/user`

Get information about the currently authenticated user.

This is the OIDC userinfo endpoint. OAuth tokens of any product audience
are accepted as long as they carry the `user:read` scope (implied by
`data:read`).

## Response `200`

Successful Response

- UserJSON — A model for the user objects returned by the sync/REST API. This model is used purely for OpenAPI documentation generation and does not handle actual serialization (which is handled by @todoist.models.json.user.generate).
  - `id` string, required — User ID
  - `email` string, required — User's email address
  - `full_name` string, required — The user's real name formatted as Firstname Lastname
  - `has_password` boolean, required — Whether the user has a password set on the account. It will be false if they have only authenticated without a password (e.g. using Google, Facebook, etc.)
  - `verification_status` 'unverified' | 'verified' | 'blocked' | 'legacy', required — User's email verification status. unverified (just signed up), verified (verified email or social login), blocked (failed to verify in 7 days), legacy (signed up before August 2022)
  - `mfa_enabled` boolean, required — Whether multi-factor authentication is enabled
  - `token` string, nullable — The user's token that should be used to call the other API methods
  - `is_premium` boolean, required — Whether the user has a Todoist Pro subscription (a true or false value)
  - `premium_status` 'not_premium' | 'current_personal_plan' | 'legacy_personal_plan' | 'teams_business_member', nullable — Outlines why a user is premium, possible values are: not_premium, current_personal_plan, legacy_personal_plan or teams_business_member
  - `premium_until` string, nullable — The date when the user's Todoist Pro subscription ends (null if not a Todoist Pro user). This should be used for informational purposes only as this does not include the grace period upon expiration
  - `free_trial_expires` string, nullable — Date when free trial expires (ISO 8601 format)
  - `has_started_a_trial` boolean, required — Whether the user has ever started a free trial
  - `joined_at` string, nullable — Date when user joined Todoist (ISO 8601 format)
  - `is_deleted` boolean — Whether the user is deleted
  - `deleted_at` string, nullable — Date when user was deleted (ISO 8601 format)
  - `business_account_id` integer, nullable — The ID of the user's business account
  - `date_format` 0 | 1, required — Whether to use the DD-MM-YYYY date format (if set to 0), or the MM-DD-YYYY format (if set to 1)
  - `time_format` 0 | 1, nullable — Whether to use a 24h format such as 13:00 (if set to 0) when displaying time, or a 12h format such as 1:00pm (if set to 1)
  - `sort_order` 0 | 1, required — Whether to show projects in an oldest dates first order (if set to 0), or a oldest dates last order (if set to 1)
  - `theme_id` string, required — The currently selected Todoist theme (a number between 0 and 13)
  - `theme_appearance` 'light' | 'dark' | 'system', required
  - `start_day` integer, required — The first day of the week (between 1 and 7, where 1 is Monday and 7 is Sunday)
  - `weekend_start_day` integer, required — The day used when a user chooses to schedule a task for the 'Weekend' (between 1 and 7, where 1 is Monday and 7 is Sunday)
  - `next_week` integer, required — The day of the next week, that tasks will be postponed to (between 1 and 7, where 1 is Monday and 7 is Sunday)
  - `auto_reminder` integer, required — The default time in minutes for the automatic reminders set, whenever a due date has been specified for a task
  - `urgent_reminder_device` UrgentReminderDeviceView
    - `device_platform` 'ios' | 'android', required — Registered device platform.
    - `device_id` string, required — Registered device ID.
    - `device_token` string, required — Registered device token.
    - `device_name` string, nullable — Registered device name when available.
  - `start_page` string, required — The user's default view on Todoist. The start page can be one of the following: inbox, teaminbox, today, next7days, upcoming, assigned_to_me, project?id=1234 to open a project, label?name=abc to open a label, filter?id=1234 to open a filter, or workspace_filter?id=1234 to open a workspace filter
  - `inbox_project_id` string, nullable — The ID of the user's Inbox project
  - `lang` 'cs' | 'da' | 'de' | 'en' | 'es' | 'fi' | 'fr' | 'it' | 'ja' | 'ko' | 'nl' | 'pl' | 'pt_BR' | 'ru' | 'sv' | 'tr' | 'zh_CN' | 'zh_TW', required — The user's language
  - `tz_info` object, required — The user's timezone (a dictionary structure), which includes the following elements: the timezone as a string value, the hours and minutes difference from GMT, whether daylight saving time applies denoted by is_dst, and a string value of the time difference from GMT that is gmt_string
  - `karma` number, required — The user's karma score
  - `karma_trend` 'up' | 'down' | '-', nullable — The user's karma trend. Can be 'up', 'down', or '-' (no change)
  - `daily_goal` integer, required — The daily goal number of completed tasks for karma
  - `weekly_goal` integer, required — The target number of tasks to complete per week
  - `days_off` integer[], required — Array of integers representing user's days off (between 1 and 7, where 1 is Monday and 7 is Sunday)
  - `is_celebrations_enabled` boolean, required — Whether celebration animations are enabled
  - `completed_count` integer, required — Total number of tasks completed by user
  - `completed_today` integer, required — Number of tasks completed today by the user
  - `share_limit` integer, required — Maximum number of collaborators allowed in shared projects
  - `features` object, required — Feature flags and settings for the user
  - `feature_identifier` string, required — Feature identifier for feature flag evaluations
  - `joinable_workspace` object, nullable, required — Information about workspaces the user can join
  - `onboarding_completed` boolean, required — Whether the user has completed onboarding
  - `onboarding_initiated` boolean, required — Whether the user has initiated onboarding
  - `onboarding_started` boolean, required — Whether the user has started onboarding
  - `onboarding_level` 'beginner' | 'intermediate' | 'pro', nullable — User's self-reported skill level during onboarding
  - `onboarding_persona` 'analog' | 'tasks' | 'calendar' | 'organic', nullable — User's onboarding persona selection
  - `onboarding_role` 'leader' | 'founder' | 'ic', nullable — User's role selection during onboarding
  - `onboarding_team_mode` string, nullable — Whether user selected team mode during onboarding
  - `onboarding_use_cases` string[], nullable — Use cases the user selected during onboarding
  - `getting_started_guide_projects` string[], nullable — List of project IDs for getting started guide
  - `onboarded_dated_tasks_created` boolean, nullable — True once the user has created at least 1 task with a due date that includes a time component (excluding auto-seeded getting-started-guide tasks).
  - `onboarded_tasks_completed` boolean, nullable — True once the user has completed at least 3 tasks.
  - `onboarded_mobile_accessed` boolean, nullable — True once the user has synced from iOS or Android.
  - `onboarded_desktop_accessed` boolean, nullable — True once the user has synced from Web, macOS, or Windows.
  - `is_onboarded` boolean, nullable — Composite flag: true once all four onboarded_* criteria above are met.
  - `activated_user` boolean, required — Whether the user is considered activated (completed key onboarding actions)
  - `has_magic_number` boolean, required — Whether the user has reached a magic number milestone
  - `image_id` string, nullable — The ID of the user's avatar
  - `avatar_big` string, nullable — The link to a 195x195 pixels image of the user's avatar
  - `avatar_medium` string, nullable — The link to a 60x60 pixels image of the user's avatar
  - `avatar_s640` string, nullable — The link to a 640x640 pixels image of the user's avatar
  - `avatar_small` string, nullable — The link to a 35x35 pixels image of the user's avatar
  - `websocket_url` string, required — WebSocket URL for real-time updates

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found

---

[API](https://skmtc.net/todoist/apis/todoist-api.md) · [All operations](https://skmtc.net/todoist/apis/todoist-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/todoist/todoist-api/revisions/69a962f1578f/schema)
