Skip to main content

Documentation Index

Fetch the complete documentation index at: https://lava.so/docs/llms.txt

Use this file to discover all available pages before exploring further.

Todoist task management API for creating, reading, updating, and completing tasks, projects, sections, labels, and comments. Best for syncing task state, automating task creation from other tools, or building productivity workflows on top of a personal or team task list. 15 example endpoints available through Lava’s AI Gateway. See the Todoist API docs for full documentation.
This provider requires your own credentials — connect your API key or OAuth account before use.
This is a catch-all provider — any valid URL under https://api.todoist.com is supported. Todoist API v1 endpoints. All paths start with /api/v1 (tasks, projects, sections, comments, labels, workspaces, invitations). Construct URL as https://api.todoist.com/api/v1/{resource}. See https://developer.todoist.com/api/v1/ for full reference. The endpoints below are curated examples.

Endpoints

List active tasks. Supports filters: project_id, section_id, label, filter (Todoist filter syntax), ids.

GET https://api.todoist.com/api/v1/tasks — Free
const data = await lava.gateway('https://api.todoist.com/api/v1/tasks', { method: 'GET' });

Create a new task. Requires content (title). Optional: description, project_id, section_id, labels, priority (1-4), due_string, due_date.

POST https://api.todoist.com/api/v1/tasks — Free
const data = await lava.gateway('https://api.todoist.com/api/v1/tasks', {
  body: {
"content": "New task from Lava",
"description": "Created via the gateway",
"priority": 2
},
});

Get a single task by ID.

GET https://api.todoist.com/api/v1/tasks/{task_id} — Free
const data = await lava.gateway('https://api.todoist.com/api/v1/tasks/{task_id}', { method: 'GET' });

Update a task. Only fields in the body are modified: content, description, labels, priority, due_string, due_date, assignee_id.

POST https://api.todoist.com/api/v1/tasks/{task_id} — Free
const data = await lava.gateway('https://api.todoist.com/api/v1/tasks/{task_id}', { body: {"content":"Updated task title","priority":3} });

Mark a task as complete.

POST https://api.todoist.com/api/v1/tasks/{task_id}/close — Free
const data = await lava.gateway('https://api.todoist.com/api/v1/tasks/{task_id}/close', { method: 'POST' });

Reopen a completed task.

POST https://api.todoist.com/api/v1/tasks/{task_id}/reopen — Free
const data = await lava.gateway('https://api.todoist.com/api/v1/tasks/{task_id}/reopen', { method: 'POST' });

Delete a task.

DELETE https://api.todoist.com/api/v1/tasks/{task_id} — Free
const data = await lava.gateway('https://api.todoist.com/api/v1/tasks/{task_id}', { method: 'DELETE' });

List all projects.

GET https://api.todoist.com/api/v1/projects — Free
const data = await lava.gateway('https://api.todoist.com/api/v1/projects', { method: 'GET' });

Create a new project. Requires name. Optional: parent_id, color, is_favorite, view_style.

POST https://api.todoist.com/api/v1/projects — Free
const data = await lava.gateway('https://api.todoist.com/api/v1/projects', { body: {"name":"New project from Lava"} });

Get a single project by ID.

GET https://api.todoist.com/api/v1/projects/{project_id} — Free
const data = await lava.gateway('https://api.todoist.com/api/v1/projects/{project_id}', { method: 'GET' });

List sections. Optional project_id filter to scope to a single project.

GET https://api.todoist.com/api/v1/sections?project_id={project_id} — Free
const data = await lava.gateway('https://api.todoist.com/api/v1/sections?project_id={project_id}', { method: 'GET' });

Create a section in a project. Requires name and project_id.

POST https://api.todoist.com/api/v1/sections — Free
const data = await lava.gateway('https://api.todoist.com/api/v1/sections', { body: {"name":"New section","project_id":"{project_id}"} });

List comments. Requires either task_id or project_id query param.

GET https://api.todoist.com/api/v1/comments?task_id={task_id} — Free
const data = await lava.gateway('https://api.todoist.com/api/v1/comments?task_id={task_id}', { method: 'GET' });

Add a comment to a task or project. Requires content and either task_id or project_id.

POST https://api.todoist.com/api/v1/comments — Free
const data = await lava.gateway('https://api.todoist.com/api/v1/comments', {
  body: {
"task_id": "{task_id}",
"content": "Comment from Lava gateway."
},
});

List all personal labels.

GET https://api.todoist.com/api/v1/labels — Free
const data = await lava.gateway('https://api.todoist.com/api/v1/labels', { method: 'GET' });

Next Steps

All Providers

Browse all supported AI providers

Forward Proxy

Learn how to construct proxy URLs and authenticate requests