NAV Navbar
shell python

Overview

This is the official documentation for Todoist REST API. Our original API, named Sync API, provides an easy way to deal with full and partial syncs, but it’s not so simple for individual calls. REST API aims to provide API developers a friendly way to deal with the most basic features of Todoist API.

Request and response format

API endpoints accept arguments either as url-encoded values for non-POST requests or as json-encoded objects encoded in POST request body with application/json Content-Type.

Each modification request may provide additional X-Request-Id HTTP header that could be used as an unique string to ensure modifications are applied only once — request having the same id as previously seen would be discarded.

It’s is not required but can be handy if you need to implement any request re-trying logic. This header value should not exceed 36 bytes. We will be generating them with uuidgen for shell and uuid.uuid4 for Python in the code examples.

This API relies on standard HTTP response codes to indicate operation result. The table below is a simple reference about the most used status codes:

Status code Description
200 The request was processed successfully.
204 The request was processed successfully without any data to return.
4xx The request was processed with an error and should not be retried unmodified as they won’t be processed any different by an API.
5xx The request failed due to a server error, it’s safe to retry later.

All 200 OK responses have the Content-type: application/json and contain a JSON-encoded representation of one or more objects.

Payload of POST requests has to be JSON-encoded and accompanied with application/json Content-Type header.

Authorization

Authenticated request and response examples

$ curl -X GET \
  https://beta.todoist.com/API/v8/projects \
  -H "Authorization: Bearer $token"

[
    {
        "id": 1234,
        "name": "Inbox",
        "comment_count": 0
    }
]
import requests  
requests.get("https://beta.todoist.com/API/v8/projects", headers={"Authorization": "Bearer %s" % your_token}).json()

[{u'comment_count': 0, u'id': 1234, u'name': u'Inbox'}]

API endpoints accept GET arguments as url-encoded values. Every endpoint requires an authorization header with the appropriate Bearer $token that holds the Todoist personal API token or OAuth API token.

Note that we’re using $token on all of our curl examples, so you can define a temporary environment variable containing your token and easily copy & paste curl commands into your terminal.

Projects

An example project object

{
    "comment_count": 10,
    "id": 1234,
    "indent": 1,
    "name": "My project",
    "order": 1
}
{
    "comment_count": 10,
    "id": 1234,
    "indent": 1,
    "name": "My project",
    "order": 1
}

Properties

Property Description
id Integer Project id.
name String Project name.
order Integer Project position in the list of projects/Project order (read-only).
indent Integer Value from 1 to 4 for the Project indentation level (read-only).
comment_count Integer Number of project comments.

Get all projects

Get all projects

$ curl -X GET \
  https://beta.todoist.com/API/v8/projects \
  -H "Authorization: Bearer $token"

[
    {
        "id": 1234,
        "name": "Inbox",
        "comment_count": 10,
        "order": 1,
        "indent": 1
    }
]
import requests
requests.get("https://beta.todoist.com/API/v8/projects", headers={"Authorization": "Bearer %s" % your_token}).json()

[
    {
        "id": 1234,
        "name": "Inbox",
        "comment_count": 10,
        "order": 1,
        "indent": 1
    }
]

Returns JSON-encoded array containing all user projects.

Create a new project

Create a new project

$ curl "https://beta.todoist.com/API/v8/projects" \
    -X POST \
    --data '{"name": "Movies to watch"}' \
    -H "Content-Type: application/json" \
    -H "X-Request-Id: $(uuidgen)" \
    -H "Authorization: Bearer $token"

{
    "id": 1234,
    "name": "Movies to watch",
    "comment_count": 0,
    "order": 1,
    "indent": 1
}
import uuid, requests, json
requests.post(
    "https://beta.todoist.com/API/v8/projects",
    data=json.dumps({
        "name": "Movies to watch"
    }),
    headers={
        "Content-Type": "application/json",
        "X-Request-Id": str(uuid.uuid4()),
        "Authorization": "Bearer %s" % your_token
    }).json()


{
    "id": 1234,
    "name": "Movies to watch",
    "comment_count": 0,
    "order": 1,
    "indent": 1
}

Creates a new project and return its value in a JSON format.

Parameters

Parameter Required Description
name String Yes Name of the project.

Get a project

Get a project

$ curl "https://beta.todoist.com/API/v8/projects/1234” \
  -H "Authorization: Bearer $token{
    "id": 1234,
    "name": "Movies to watch",
    "comment_count": 0,
    "order": 1,
    "indent": 1
}
import uuid, requests, json
requests.get("https://beta.todoist.com/API/v8/projects/1234", headers={"Authorization": "Bearer %s" % your_token})

{
    "id": 1234,
    "name": "Movies to watch",
    "comment_count": 0,
    "order": 1,
    "indent": 1
}

Returns a JSON object containing a project object related to the given id.

Update a project

Update a project

$ curl "https://beta.todoist.com/API/v8/projects/1234" \
    -X POST \
    --data '{"name": "Movies to review"}' \
    -H "Content-Type: application/json" \
    -H "X-Request-Id: $(uuidgen)" \
    -H "Authorization: Bearer $token"
import uuid, requests, json
requests.post(
    "https://beta.todoist.com/API/v8/projects/1234",
    data=json.dumps({
        "name": "Movies to review"
    }),
    headers={
        "Content-Type": "application/json",
        "X-Request-Id": str(uuid.uuid4()),
        "Authorization": "Bearer %s" % your_token
    })

Updates the project for the given id and returns HTTP status code 204 with an empty body.

Parameters

Parameter Required Description
name String Yes Name of the project.

Delete a project

Delete a project

$ curl -X DELETE "https://beta.todoist.com/API/v8/projects/1234" \
    -H "Authorization: Bearer $token"
import requests, json
requests.delete("https://beta.todoist.com/API/v8/projects/2176857441", headers={"Authorization": "Bearer %s" % your_token})

Deletes a project and returns an empty response.

Tasks

Task object sample

{
    "comment_count": 10,
    "completed": true,
    "content": "My task",
    "due": {
        "date": "2016-09-01",
        "recurring": true,
        "datetime": "2016-09-01T09:00:00Z",
        "string": "tomorrow at 12",
        "timezone": "Europe/Moscow"
    },
    "id": 1234,
    "indent": 1,
    "label_ids": [
        124,
        125,
        128
    ],
    "order": 123,
    "priority": 1,
    "project_id": 2345,
    "url": "https://todoist.com/showTask?id=12345&sync_id=56789"
}
{
    "comment_count": 10,
    "completed": true,
    "content": "My task",
    "due": {
        "date": "2016-09-01",
        "recurring": true,
        "datetime": "2016-09-01T09:00:00Z",
        "string": "tomorrow at 12",
        "timezone": "Europe/Moscow"
    },
    "id": 1234,
    "indent": 1,
    "label_ids": [
        124,
        125,
        128
    ],
    "order": 123,
    "priority": 1,
    "project_id": 2345,
    "url": "https://todoist.com/showTask?id=12345&sync_id=56789"
}

Properties

Property Description
id Integer Task id.
project_id Integer Task’s project id (read-only).
content String Task content.
completed Boolean Flag to mark completed tasks.
label_ids Array of Integers Array of label ids, associated with a task.
order Integer Position in the project (read-only).
indent Integer Task indentation level from 1 to 5 (read-only).
priority Integer Task priority from 1 (normal, default value) to 4 (urgent).
due Object object representing task due date/time (described below).
url String URL to access this task in Todoist web interface.
comment_count Integer Number of task comments.

Due object

Parameter Required Description
string String Yes Human defined date in arbitrary format.
date String Yes Date in format YYYY-MM-DD corrected to user’s timezone.
datetime String No Only returned if exact due time set (i.e. it’s not a whole-day task), date and time in RFC3339 format in UTC.
timezone String No Only returned if exact due time set, user’s timezone definition either in tzdata-compatible format (“Europe/Berlin”) or as a string specifying east of UTC offset as “UTC±HH:MM” (i.e. “UTC-01:00”).

Get tasks

Get tasks

$ curl -X GET \
  https://beta.todoist.com/API/v8/tasks \
  -H "Authorization: Bearer $token”

[
    {
        "id": 123,
        "project_id": 234,
        "content": "Inbox",
        "comment_count": 10,
        "order": 1,
        "indent": 1,
        "priority": 1,
        "url": "https://todoist.com/showTask?id=123"
    },
    ...
]
import requests
requests.get(
    "https://beta.todoist.com/API/v8/tasks",
    params={
        "project_id": 123
    },
    headers={
        "Authorization": "Bearer %s" % your_token
    }).json()


[
    {
        "id": 123,
        "project_id": 234,
        "content": "Inbox",
        "comment_count": 10,
        "order": 1,
        "indent": 1,
        "priority": 1,
        "url": "https://todoist.com/showTask?id=123"
    },
    ...
]

Returns a JSON-encoded array containing all user tasks.

Parameters

Parameter Required Description
project_id Integer No Filter tasks by project id.
label_id Integer No Filter tasks by label.
filter String No Filter by any supported filter.
lang String No IETF language tag defining what language filter is written in, if differs from default English.

Note that filters are premium-only feature, if used for non-premium users, server would return 402 Payment Required.

Create a new task

Create a new task

$ curl "https://beta.todoist.com/API/v8/tasks" \
    -X POST \
    --data '{"content": "Appointment with Maria", "due_string": "tomorrow at 12:00", "due_lang": "en", "priority": 4}' \
    -H "Content-Type: application/json" \
    -H "X-Request-Id: $(uuidgen)" \
    -H "Authorization: Bearer $token"

{
    "comment_count": 0,
    "completed": false,
    "content": "Appointment with Maria",
    "due": {
        "date": "2016-09-01",
        "datetime": "2016-09-01T11:00:00Z",
        "string": "2017-07-01 12:00",
        "timezone": "Europe/Lisbon"
    },
    "id": 123,
    "order": 20,
    "priority": 4,
    "project_id": 234,
    "url": "https://todoist.com/showTask?id=123"
}
import uuid, requests, json
requests.post(
    "https://beta.todoist.com/API/v8/tasks",
    data=json.dumps({
        "content": "Appointment with Maria",
        "due_string": "tomorrow at 12:00",
        "due_lang": "en",
        "priority": 4
    }),
    headers={
        "Content-Type": "application/json",
        "X-Request-Id": str(uuid.uuid4()),
        "Authorization": "Bearer %s" % your_token
    }).json()


{
    "comment_count": 0,
    "completed": false,
    "content": "Appointment with Maria",
    "due": {
        "date": "2016-09-01",
        "datetime": "2016-09-01T11:00:00Z",
        "string": "2017-07-01 12:00",
        "timezone": "Europe/Lisbon"
    },
    "id": 123,
    "order": 20,
    "priority": 4,
    "project_id": 234,
    "url": "https://todoist.com/showTask?id=123"
}

Creates a new task and returns the JSON object according for it.

JSON body parameters

Parameter Required Description
content String Yes Task content.
project_id Integer No Task project id. If not set, task is put to user’s Inbox.
order Integer No Non-zero integer value used by clients to sort tasks inside project.
label_ids Array of Integers No Ids of labels associated with the task.
priority Integer No Task priority from 1 (normal) to 4 (urgent).
due_string String No Human defined task due date (ex.: “next Monday”, “Tomorrow”). Value is set using local (not UTC) time.
due_date String No Specific date in YYYY-MM-DD format relative to user’s timezone.
due_datetime String No Specific date and time in RFC3339 format in UTC.
due_lang String No 2-letter code specifying language in case due_string is not written in English.

Please note that only one of the due_* fields can be used at the same time (due_lang is a special case).

Get a task

Get a task

$ curl "https://beta.todoist.com/API/v8/tasks/1234" \
    -H "Authorization: Bearer $token"

{
    "comment_count": 0,
    "completed": false,
    "content": "Appointment with Maria",
    "due": {
        "date": "2016-09-01",
        "datetime": "2016-09-01T11:00:00Z",
        "string": "2017-07-01 12:00",
        "timezone": "Europe/Lisbon"
    },
    "id": 1234,
    "order": 20,
    "indent": 1,
    "priority": 4,
    "project_id": 234,
    "url": "https://todoist.com/showTask?id=123"
}
import requests
requests.get("https://beta.todoist.com/API/v8/tasks/1234",headers={"Authorization": "Bearer %s" % your_token}).json()


{
    "comment_count": 0,
    "completed": false,
    "content": "Appointment with Maria",
    "due": {
        "date": "2016-09-01",
        "datetime": "2016-09-01T11:00:00Z",
        "string": "2017-07-01 12:00",
        "timezone": "Europe/Lisbon"
    },
    "id": 1234,
    "order": 20,
    "indent": 1,
    "priority": 4,
    "project_id": 234,
    "url": "https://todoist.com/showTask?id=123"
}

Returns a task by id

Update a task

Update a task

$ curl "https://beta.todoist.com/API/v8/tasks/1234" \
    -X POST \
    --data '{"content": "Movies to watch"}' \
    -H "Content-Type: application/json" \
    -H "X-Request-Id: $(uuidgen)" \
    -H "Authorization: Bearer $token"
import uuid, requests, json
requests.post(
    "https://beta.todoist.com/API/v8/tasks/1234",
    data=json.dumps({
        "content": "Movies to watch"
    }),
    headers={
        "Content-Type": "application/json",
        "X-Request-Id": str(uuid.uuid4()),
        "Authorization": "Bearer %s" % your_token
    })

Updates a task and returns an empty body with the HTTP status code 204.

JSON body parameters

Parameter Required Description
content String Yes Task content.
project_id Integer No Task project id (read-only).
label_ids Array of Integers No Ids of labels associated with the task.
priority Integer No Task priority from 1 (normal) to 4 (urgent).
due_string String No Human defined task due date (ex.: “next Monday”, “Tomorrow”). Value is set using local (not UTC) time.
due_date String No Specific date in YYYY-MM-DD format relative to user’s timezone.
due_datetime String No Specific date and time in RFC3339 format in UTC.
due_lang String No 2-letter code specifying language in case due_string is not written in English.

Please note that only one of the due_* fields can be used at the same time (due_lang is a special case).

Close a task

Close a task

$ curl -X POST "https://beta.todoist.com/API/v8/tasks/1234/close" \
    -H "Authorization: Bearer $token"
import requests
requests.post("https://beta.todoist.com/API/v8/tasks/1234/close", headers={"Authorization": "Bearer %s" % your_token})

Closes a task and returns an empty body with a HTTP status code 204.

The command does exactly what official clients do when you close a task. Regular tasks are completed and moved to history, subtasks are checked (marked as done, but not moved to history), recurring tasks are moved forward (due date is updated).

Reopen a task

Reopen a task

$ curl -X POST "https://beta.todoist.com/API/v8/tasks/1234/reopen" \
    -H "Authorization: Bearer $token"
import requests
requests.post("https://beta.todoist.com/API/v8/tasks/1234/reopen", headers={"Authorization": "Bearer %s" % your_token})

Reopens a task and returns an empty body with a HTTP status code 204.

This command reopens a previously closed task. Works both with checked tasks in the user’s workspace and tasks moved to history. The behaviour varies for different types of tasks (the command follows the behaviour of official clients when tasks are uncompleted or extracted from the history).

Delete a task

Delete a task

$ curl -X DELETE "https://beta.todoist.com/API/v8/tasks/1234" \
    -H "Authorization: Bearer $token"
import requests
requests.delete("https://beta.todoist.com/API/v8/tasks/1234", headers={"Authorization": "Bearer %s" % your_token})

Deletes a task and returns an empty body with a HTTP status 204.

Comments

Comment object sample

{
    "attachment": {
        "file_name": "File.pdf",
        "file_type": "application/pdf",
        "file_url": "https://cdn-domain.tld/path/to/file.pdf",
        "resource_type": "file"
    },
    "content": "Hello world",
    "id": 1234,
    "posted": "2016-09-22T07:00:00Z",
    "project_id": 2345,
    "task_id": 2345
}
{
    "attachment": {
        "file_name": "File.pdf",
        "file_type": "application/pdf",
        "file_url": "https://cdn-domain.tld/path/to/file.pdf",
        "resource_type": "file"
    },
    "content": "Hello world",
    "id": 1234,
    "posted": "2016-09-22T07:00:00Z",
    "project_id": 2345,
    "task_id": 2345
}

Properties

Property Description
id Integer Comment id.
task_id Integer Comment’s task id (for task comments).
project_id Integer Comment’s project id (for project comments).
posted String Date and time when comment was added, RFC3339 format in UTC.
content String Comment content.
attachment Object Attachment file (optional).

The optional attachment attribute describes object with attachment metadata. Format of this object depends on the kind of attachment it describes, see sync API documentation for format details.

Get all comments

Get all comments

$ curl "https://beta.todoist.com/API/v8/comments?task_id=2345" \
  -H "Authorization: Bearer $token”

[
    {
        "id": 123,
        "task_id": 2345,
        "content": "Hello world",
        "posted": "2016-09-22T07:00:00Z",
        "attachment": {
            "resource_type": "file",
            "file_url": "https://cdn-domain.tld/path/to/file.pdf",
            "file_type": "application/pdf",
            "file_name": "File.pdf"
        }
    }
]
import requests
requests.get(
    "https://beta.todoist.com/API/v8/comments",
    params={
        "task_id": 2345
    },
    headers={
        "Authorization": "Bearer %s" % your_token
    }).json()

[
    {
        "id": 123,
        "task_id": 2345,
        "content": "Hello world",
        "posted": "2016-09-22T07:00:00Z",
        "attachment": {
            "resource_type": "file",
            "file_url": "https://cdn-domain.tld/path/to/file.pdf",
            "file_type": "application/pdf",
            "file_name": "File.pdf"
        }
    }
]

Returns JSON-encoded array of all comments for a given task_id or project_id. Note that one of task_id or project_id arguments is required.

Parameters

Parameter Required Description
project_id Integer Yes (or task_id) Id of the project used to filter comments.
task_id Integer Yes (or project_id) Id of the task used to filter comments.

Note: You must use at least one of them.

Create a new comment

Create a new comment

$ cat > /tmp/note.json
{
    "task_id": 2345,
    "content": "Hello world",
    "attachment": {
        "resource_type": "file",
        "file_url": "https://s3.amazonaws.com/domorebetter/Todoist+Setup+Guide.pdf",
        "file_type": "application/pdf",
        "file_name": "File.pdf"
    }
}
^C

$ curl "https://beta.todoist.com/API/v8/comments" \
    -X POST \
    --data @/tmp/note.json \
    -H "Content-Type: application/json" \
    -H "X-Request-Id: $(uuidgen)" \
    -H "Authorization: Bearer $token”

{
    "id": 123,
    "content": "Hello world",
    "task_id": 2345,
    "posted": "2016-09-22T07:00:00Z",
    "attachment": {
        "resource_type": "file",
        "file_url": "https://s3.amazonaws.com/domorebetter/Todoist+Setup+Guide.pdf",
        "file_type": "application/pdf",
        "file_name": "File.pdf"
    }
}
import requests
requests.post(
    "https://beta.todoist.com/API/v8/comments",
    data=json.dumps({
        "task_id": 2248549994,
        "content": "Hello world",
        "attachment": {
            "resource_type":
            "file",
            "file_url":"https://s3.amazonaws.com/domorebetter/Todoist+Setup+Guide.pdf",
            "file_type":
            "application/pdf",
            "file_name":
            "File.pdf"
        }
    }),
    headers={
        "Content-Type": "application/json",
        "X-Request-Id": str(uuid.uuid4()),
        "Authorization": "Bearer %s" % your_token
    }).json()

{
    "id": 123,
    "content": "Hello world",
    "task_id": 2345,
    "posted": "2016-09-22T07:00:00Z",
    "attachment": {
        "resource_type": "file",
        "file_url": "https://s3.amazonaws.com/domorebetter/Todoist+Setup+Guide.pdf",
        "file_type": "application/pdf",
        "file_name": "File.pdf"
    }
}

Creates a new comment on a project or task and returns its object.

JSON body parameters

Parameter Required Description
task_id Integer Yes (or project_id) Comment’s task id (for task comments).
project_id Integer Yes (or task_id) Comment’s project id (for project comments).
content String Yes Comment content.
attachment Object No Object for attachment object.

Get a comment

Get a comment

$ curl "https://beta.todoist.com/API/v8/comments/1234" \
  -H "Authorization: Bearer $token”

{
    "id": 1234,
    "content": "Hello world",
    "task_id": 2345,
    "posted": "2016-09-22T07:00:00Z",
    "attachment": {
        "resource_type": "file",
        "file_url": "https://cdn-domain.tld/path/to/file.pdf",
        "file_type": "application/pdf",
        "file_name": "File.pdf"
    }
}
import requests
requests.get("https://beta.todoist.com/API/v8/comments/1234", headers={"Authorization": "Bearer %s" % your_token}).json()

{
    "id": 1234,
    "content": "Hello world",
    "task_id": 2345,
    "posted": "2016-09-22T07:00:00Z",
    "attachment": {
        "resource_type": "file",
        "file_url": "https://cdn-domain.tld/path/to/file.pdf",
        "file_type": "application/pdf",
        "file_name": "File.pdf"
    }
}

Returns a comment by id

Update a comment

Update a comment

$ curl "https://beta.todoist.com/API/v8/comments/1234" \
    -X POST \
    --data '{"content": "Goodbye world"}' \
    -H "Content-Type: application/json" \
    -H "X-Request-Id: $(uuidgen)" \
    -H "Authorization: Bearer $token
import requests
requests.post(
    "https://beta.todoist.com/API/v8/comments/1234",
    data=json.dumps({
        "content": "Goodbye world"
    }),
    headers={
        "Content-Type": "application/json",
        "X-Request-Id": str(uuid.uuid4()),
        "Authorization": "Bearer %s" % your_token
    })

Updates a comment and returns an empty body with a HTTP status code 204.

JSON body parameters

Parameter Required Description
content String Yes New content for the comment.

Delete a comment

Delete a comment

$ curl -X DELETE "https://beta.todoist.com/API/v8/comments/1234" \
    -H "Authorization: Bearer $token
import requests
requests.delete("https://beta.todoist.com/API/v8/comments/1234", headers={"Authorization": "Bearer %s" % your_token})

Deletes a comment and returns an empty body with a HTTP status code 204.

Labels

Label object sample

{
    "id": 1234,
    "name": "Project X",
    "order": 10
}
{
    "id": 1234,
    "name": "Project X",
    "order": 10
}

Properties

Property Description
id Integer Label id.
name String Label name.
order Integer Number used by clients to sort list of labels.

Get all labels

Get all labels

$ curl "https://beta.todoist.com/API/v8/labels" \
    -H "Authorization: Bearer $token”

[
    {
        "id": 1234,
        "name": "Project X",
        "order": 10
    }
]
import requests
requests.get("https://beta.todoist.com/API/v8/labels", headers={"Authorization": "Bearer %s" % your_token}).json()

[
    {
        "id": 1234,
        "name": "Project X",
        "order": 10
    }
]

Returns a JSON-encoded array containing all user labels

Create a new label

Create a new label

$ curl "https://beta.todoist.com/API/v8/labels" \
    -X POST \
    --data '{"name": "Movies to watch"}' \
    -H "Content-Type: application/json" \
    -H "X-Request-Id: $(uuidgen)" \
    -H "Authorization: Bearer $token”

{
    "id": 1234,
    "name": "Project X",
    "order": 10
}
import requests
requests.post(
    "https://beta.todoist.com/API/v8/labels",
    data=json.dumps({
        "name": "Movies to watch"
    }),
    headers={
        "Content-Type": "application/json",
        "X-Request-Id": str(uuid.uuid4()),
        "Authorization": "Bearer %s" % your_token
    }).json()


{
  "id": 1234,
  "name": "Project X",
  "order": 10
}

Creates a new label and returns its object as JSON.

JSON body parameters

Parameter Required Description
name String Yes Name of the label.
order Integer No Label order.

Get a label

Get a label

$ curl "https://beta.todoist.com/API/v8/labels/1234" \
    -H "Authorization: Bearer $token”

{
    "id": 1234,
    "name": "Project X",
    "order": 10
}
import requests
requests.get("https://beta.todoist.com/API/v8/labels/1234", headers={"Authorization": "Bearer %s" % your_token}).json()

{
    "id": 1234,
    "name": "Project X",
    "order": 10
}

Returns a label by id

Update a label

Update a label

$ curl "https://beta.todoist.com/API/v8/labels/1234" \
    -X POST \
    --data '{"name": "Project Y"}' \
    -H "Content-Type: application/json" \
    -H "X-Request-Id: $(uuidgen)" \
    -H "Authorization: Bearer $token
import requests
requests.post(
    "https://beta.todoist.com/API/v8/labels/1234",
    data=json.dumps({
        "name": "Project Z"
    }),
    headers={
        "Content-Type": "application/json",
        "X-Request-Id": str(uuid.uuid4()),
        "Authorization": "Bearer %s" % your_token
    })

Updates a label and returns an empty body with a HTTP status code 204.

JSON body parameters

Parameter Required Description
name String No New name of the label.
order Integer No Number that is used by clients to sort list of labels.

Delete a label

Delete a label

$ curl -X DELETE "https://beta.todoist.com/API/v8/labels/1234" \
    -H "Authorization: Bearer $token
import requests
requests.delete("https://beta.todoist.com/API/v8/labels/1234", headers={"Authorization": "Bearer %s" % your_token})

Deletes a label and returns an empty body with a HTTP status code 204.

Brand usage

Thanks for using Todoist’s API to build an application!

If you plan to utilize Todoist’s logo or branding in the visual design of your application or website, please adhere to Todoist’s brand guidelines.

In addition, please take note of the following:

By using the Todoist marks you agree to properly follow the above brand guidelines as well as our Terms of Service. For further information about the use of the Todoist brand, please contact press@doist.com.