oauth2_token: OAuth 2.0 access token, received by
application from user.

Optional parameters:

auto_signup: If set to "1" and user with this email
and Google Account doesn't exist yet, then automatically
register a new account

full_name: User's full name if user is about to be registered.
If not set, a user email nickname will be used.

timezone: User's timezone if user is about to be registered (check /API/getTimezones).
If not set, we guess the timezone from client IP address.
In case of failure "UTC" timezone will be set up for a newly created account.

timezone: User's timezone (check API call /API/getTimezones). As default we use the user's IP address to determine the timezone.

Successful return:

HTTP 200 OK with a JSON object with user data:

{"email": "...", "token": ..., ...}

Error returns:

"ALREADY_REGISTRED"

"TOO_SHORT_PASSWORD"

"INVALID_EMAIL"

"INVALID_TIMEZONE"

"INVALID_FULL_NAME"

"UNKNOWN_ERROR"

/API/delete_user should be HTTPS

Required parameters:

token: User's token

current_password: User's current password

Optional parameters:

reason_for_delete: Reason for deletion (used for feedback)

in_background: Default is 1. Set it to 0 if you want the user deleted instantly (and not in a background worker).

Successful return:

HTTP 200 OK with text:
"ok"

Error returns:

HTTP 403 Forbidden if the password does not match.

/API/updateUser should be HTTPS

Required parameters:

token: The user's token (received on login)

Optional parameters:

email: User's email

full_name: User's full name

password: User's password, should be at least 5 characters long

timezone: User's timezone (check /API/getTimezones)

date_format: How should dates be formatted? If 0 DD-MM-YYYY will be used, if 1 MM-DD-YYYY will be used

time_format: How should times be formatted? If 0 '13:00' will be used, if 1 '1:00pm' will be used

start_day: First day of week. 1 for Monday, 7 for Sunday

next_week: When postponing what day should we choose? 1 for Monday, 7 for Sunday

start_page: Can be following values:

_blank to show blank page,

_info_page to show info page,

_project_$PROJECT_ID, where $PROJECT_ID is the id of the project to show

$ANY_QUERY to query after anything (for example tod,tom,!!1)

default_reminder: Can be following values:

email to send reminders by email

mobile to send reminders to mobile devices via SMS

push to send reminders to smart devices using
push notifications (one of Android or iOS official client must be
installed on the client side to receive these notifications)

no_default to turn off sending default reminders

Successful return:

HTTP 200 OK with a JSON object with user data:

{"email": "...", "token": ..., ...}

Error returns:

"ERROR_PASSWORD_TOO_SHORT"

"ERROR_EMAIL_FOUND"

/API/updateAvatar should be HTTPS

Required parameters:

token: The user's token (received on login)

Optional parameters:

image: Avatar image. The request must be encoded
with multipart/form-data. Maximum avatar
size is 2 Mb.

delete: If this flag is set to true, then current
avatar will be removed, and a default one will be used
instead.

Successful return:

HTTP 200 OK with a JSON object with user data:

{"email": "...", "token": ..., ...}

If user avatar is uploaded, every user-related response
will have three avatar-related fields: avatar_big,
avatar_medium and avatar_small, containing URLs for user
avatars in different resolution. Also there is
an image_id field, containing the unique
part of the avatar URL, or null if avatar is not uploaded.

Error returns:

"UNKNOWN_IMAGE_FORMAT"

"UNABLE_TO_RESIZE_IMAGE"

"IMAGE_TOO_BIG"

"UNABLE_TO_RESIZE_IMAGE"

/API/getRedirectLink should be HTTPS

Required parameters:

token: The user's token (received on login)

Optional parameters:

path: The path to redirect user's browser (default is "/app")

hash: The hash part of the path to redirect user's browser.

Successful return:

It returns a HTTP 200 OK response with a JSON-encoded
object, containing the absolute URL to redirect or to open in a
browser. For the first time the link logs in the user
automatically and performs a redirect to a given page, but once
used, the link keeps working as a plain redirect. The link
keeps working as a login link for as long as one week after
it's been issued.

priority:
The priority of the task (a number between 1 and 4, 4 for very urgent and 1 for natural).

indent:
The indent of the item (a number between 1 and 4 where 1 is top-level).

item_order: The order of the task

children:
The tasks child tasks (a list of task ids such as [13134,232345])

labels:
The tasks labels (a list of label ids such as [2324,2525])

assigned_by_uid:
The id of user who assigns current task. Makes sense for shared projects only.
Accepts 0 or any user id from the list of project collaborators. If value is unset
or invalid it will automatically be set up by your uid.

responsible_uid:
The id of user who is responsible for accomplishing current task. Makes sense
for shared projects only. Accepts 0 or any user id from the list of project
collaborators. If value is unset or invalid it will automatically be set up by null.

note: Add a note directly to the task, note is a string of the content

priority:
The priority of the task (a number between 1 and 4, 4 for very urgent and 1 for natural).

indent:
The indent of the item (a number between 1 and 4 where 1 is top-level).

item_order: The order of the task

collapsed: 1 if the item should be collapsed, 0 if it should not be collapsed

children:
The tasks child tasks (a list of task ids such as [13134,232345])

labels:
The tasks labels (a list of label ids such as [2324,2525])

assigned_by_uid:
The id of user who assigns current task. Makes sense for shared projects only.
Accepts 0 or any user id from the list of project collaborators. If value is unset
or invalid it will automatically be set up by your uid.

responsible_uid:
The id of user who is responsible for accomplishing current task. Makes sense
for shared projects only. Accepts 0 or any user id from the list of project
collaborators. If value is unset or invalid it will automatically be set up by null.

/API/moveItems

Move items from one project to another.

Required parameters:

project_items: A JSON mapping telling Todoist where the items are currently found.
From project_ids to item ids, could be like this
{"1523":["9637423"]}, where 1523 is project_id and 9637423 is item_id.

to_project: A project_id that the items should be moved to. Could be 1245

token: The user's token (received on login)

Successful return:

HTTP 200 OK with the new counts of the projects involved, could be:

{"counts": {"1523": 0, "1245": 1}}

/API/updateRecurringDate

Update recurring dates and set them to next date regarding an item's date_string.

This notification is sent to user who assigned the task
when the task is completed.
Optionally it's also sent to the user who
is responsible for this task, if the responsible and the user
who completed the task is not the same person.

This notification is sent to user who assigned the task
when the task is uncompleted.
Optionally it's also sent to the user who
is responsible for this task, if the responsible and the user
who completed the task is not the same person.

The notification is sent to all business account
administrators whenever an invoice attempts to be paid, and
the payment fails. This can occur either due to a declined
payment, or because the customer has no active card. A
particular case of note is that if a customer with no
active card reaches the end of its free trial.

The notification is sent to an invitee, when one of business
account administrators invites this user to the business account.

state

Invitation state. Initially "invited", can change the state to "accepted" or "rejected"

invitation_secret

Invitation secret. Should be used to accept or reject invitation.
The acceptance URL is "https://todoist.com/API/Business/Users/acceptInvitation?secret=invitation_secret". To reject the invitation, follow the URL "https://todoist.com/API/Business/Users/rejectInvitation?secret=invitation_secret"