# Toggl Track

> Start and stop timers, log and edit time entries, report hours by project, client or team member, and keep Toggl Track projects and clients up to date.

App · Project Management · 15 actions. Web page: https://docs.lodol.com/docs/integrations/toggl-track

## Actions

### Create client

Add a client to group projects under.

**Inputs**

- Name (`name`, text, required): The client's name.
- Workspace (`workspace_id`, text): Where to create the client. Leave empty for your default workspace.

**Outputs**

- `client` (object): The client that was created.

**Example output**

```json
{
  "client": {
    "archived": false,
    "id": 4012345701,
    "name": "Initech",
    "workspace_id": 7654321
  }
}
```

### Create project

Add a project, optionally for a client.

**Inputs**

- Name (`name`, text, required): The project's name.
- Client (`client_id`, text): The client the project is for.
- Workspace (`workspace_id`, text): Where to create the project. Leave empty to use the client's workspace, or your default one.

**Outputs**

- `project` (object): The project, as it is now.

**Example output**

```json
{
  "project": {
    "archived": false,
    "client_id": 61234567,
    "client_name": "Acme Corp",
    "id": 4012345701,
    "name": "Mobile app",
    "workspace_id": 7654321
  }
}
```

### Create time entry

Log time you already spent, from a start time and either an end time or a duration.

**Inputs**

- Description (`description`, text): What the time is for, as it shows in Toggl Track.
- Project (`project_id`, text): The project the time belongs to.
- Start (`start`, date and time, required): When the work started.
- End (`end`, date and time): When the work ended. Leave empty to give a duration instead.
- Duration (minutes) (`duration_minutes`, number): How long the work took, in minutes. Use this or End. At least 1.
- Tags (`tags`, list): Tags to put on the time.
- Billable (`billable`, true/false): Whether the time is billable. Billable time needs a paid Toggl Track plan.

**Outputs**

- `time_entry` (object): The time entry that was created.

**Example output**

```json
{
  "time_entry": {
    "billable": false,
    "client_name": "Acme Corp",
    "description": "Design review",
    "duration_hours": 0.75,
    "duration_seconds": 2700,
    "duration_text": "0:45:00",
    "end": "2026-09-25T13:45:00Z",
    "id": 4012345701,
    "project_id": 201234567,
    "project_name": "Website redesign",
    "running": false,
    "start": "2026-09-25T13:00:00Z",
    "tags": [
      "meetings"
    ],
    "workspace_id": 7654321
  }
}
```

### Delete client

Permanently delete a client. Its projects are kept, without a client.

**Inputs**

- Client (`client_id`, text, required): The client to delete.

**Outputs**

- `already_deleted` (true/false): True when it was already gone before this step.
- `client_id` (number): ID of the deleted client.
- `deleted` (true/false): Always true: the client no longer exists.

**Example output**

```json
{
  "already_deleted": false,
  "client_id": 61234568,
  "deleted": true
}
```

### Delete project

Permanently delete a project. Its time entries are kept, without a project.

**Inputs**

- Project (`project_id`, text, required): The project to delete.

**Outputs**

- `already_deleted` (true/false): True when it was already gone before this step.
- `deleted` (true/false): Always true: the project no longer exists.
- `project_id` (number): ID of the deleted project.

**Example output**

```json
{
  "already_deleted": false,
  "deleted": true,
  "project_id": 201234568
}
```

### Delete time entry

Permanently delete a time entry. Deleting one that's already gone succeeds.

**Inputs**

- Time entry (`time_entry_id`, text, required): The time entry's ID, from an earlier step such as Start timer, Create time entry or List time entries.

**Outputs**

- `already_deleted` (true/false): True when it was already gone before this step.
- `deleted` (true/false): Always true: the time entry no longer exists.
- `time_entry_id` (number): ID of the deleted time entry.

**Example output**

```json
{
  "already_deleted": false,
  "deleted": true,
  "time_entry_id": 4012345603
}
```

### Get running timer

See what's being tracked right now, and for how long.

**Inputs**: None.

**Outputs**

- `running` (true/false): True when a timer is running right now.
- `time_entry` (object): The running time entry, or null when none is running.

**Example output**

```json
{
  "running": true,
  "time_entry": {
    "billable": false,
    "client_name": "Acme Corp",
    "description": "Fixing the header",
    "duration_hours": 0.75,
    "duration_seconds": 2712,
    "duration_text": "0:45:12",
    "end": null,
    "id": 4012345604,
    "project_id": 201234567,
    "project_name": "Website redesign",
    "running": true,
    "start": "2026-09-25T14:14:48Z",
    "tags": [],
    "workspace_id": 7654321
  }
}
```

### Get summary report

Total hours tracked in a workspace between two dates, by project, client or team member. Covers any dates, not just recent ones.

**Inputs**

- From (`from_date`, date, required): The first day to include.
- To (`to_date`, date): The last day to include. Leave empty for today.
- Group by (`group_by`, text): How to break the time down. Default: Project. One of: `projects` (Project), `clients` (Client), `users` (Team member).
- Workspace (`workspace_id`, text): The workspace to report on. Leave empty for your default workspace.

**Outputs**

- `from_date` (text): The first day included (YYYY-MM-DD).
- `group_by` (text): How the time is grouped: projects, clients or users.
- `groups` (list): One row per project, client or team member, most time first.
- `to_date` (text): The last day included (YYYY-MM-DD).
- `total_hours` (number): All the time tracked, in hours to two decimal places.
- `total_seconds` (number): All the time tracked, in seconds.
- `workspace_id` (number): ID of the workspace the report covers.

**Example output**

```json
{
  "from_date": "2026-09-21",
  "group_by": "projects",
  "groups": [
    {
      "hours": 6.0,
      "id": 201234567,
      "name": "Website redesign",
      "seconds": 21600
    },
    {
      "hours": 0.5,
      "id": null,
      "name": "No project",
      "seconds": 1800
    }
  ],
  "to_date": "2026-09-25",
  "total_hours": 6.5,
  "total_seconds": 23400,
  "workspace_id": 7654321
}
```

### List clients

Your clients, optionally only those matching a name.

**Inputs**

- Name (`name`, text): Only clients whose name contains this. An exact match comes first.

**Outputs**

- `clients` (list): The clients, an exact name match first, then by name.
- `count` (number): How many clients there are.
- `first` (object): The first client listed (the exact match, if there is one), or null.

**Example output**

```json
{
  "clients": [
    {
      "archived": false,
      "id": 61234567,
      "name": "Acme Corp",
      "workspace_id": 7654321
    },
    {
      "archived": false,
      "id": 61234568,
      "name": "Globex",
      "workspace_id": 7654321
    }
  ],
  "count": 2,
  "first": {
    "archived": false,
    "id": 61234567,
    "name": "Acme Corp",
    "workspace_id": 7654321
  }
}
```

### List projects

Your projects, optionally only those matching a name or a client.

**Inputs**

- Name (`name`, text): Only projects whose name contains this. An exact match comes first.
- Client (`client_id`, text): Only this client's projects.
- Include archived (`include_archived`, true/false): Also list archived projects.

**Outputs**

- `count` (number): How many projects there are.
- `first` (object): The first project listed (the exact match, if there is one), or null.
- `projects` (list): The projects, an exact name match first, then by name.

**Example output**

```json
{
  "count": 2,
  "first": {
    "archived": false,
    "client_id": null,
    "client_name": null,
    "id": 201234568,
    "name": "Internal",
    "workspace_id": 7654321
  },
  "projects": [
    {
      "archived": false,
      "client_id": null,
      "client_name": null,
      "id": 201234568,
      "name": "Internal",
      "workspace_id": 7654321
    },
    {
      "archived": false,
      "client_id": 61234567,
      "client_name": "Acme Corp",
      "id": 201234567,
      "name": "Website redesign",
      "workspace_id": 7654321
    }
  ]
}
```

### List time entries

Your time entries between two dates, newest first, with project and client names and the total hours. Reaches back about three months, up to 1,000 entries.

**Inputs**

- From (`from_date`, date, required): The first day to include.
- To (`to_date`, date): The last day to include. Leave empty for today.
- Project (`project_id`, text): Only time tracked to this project.

**Outputs**

- `count` (number): How many time entries there are. Toggl lists at most 1,000.
- `from_date` (text): The first day included (YYYY-MM-DD).
- `time_entries` (list): The time entries, newest first.
- `to_date` (text): The last day included (YYYY-MM-DD).
- `total_hours` (number): Their combined duration in hours, to two decimal places.
- `total_seconds` (number): Their combined duration in seconds, counting a running timer so far.

**Example output**

```json
{
  "count": 3,
  "from_date": "2026-09-24",
  "time_entries": [
    {
      "billable": false,
      "client_name": "Acme Corp",
      "description": "Client call",
      "duration_hours": 1.5,
      "duration_seconds": 5400,
      "duration_text": "1:30:00",
      "end": "2026-09-25T10:30:00Z",
      "id": 4012345601,
      "project_id": 201234567,
      "project_name": "Website redesign",
      "running": false,
      "start": "2026-09-25T09:00:00Z",
      "tags": [
        "meetings"
      ],
      "workspace_id": 7654321
    },
    {
      "billable": true,
      "client_name": "Acme Corp",
      "description": "Writing the proposal",
      "duration_hours": 2.5,
      "duration_seconds": 9000,
      "duration_text": "2:30:00",
      "end": "2026-09-24T15:30:00Z",
      "id": 4012345602,
      "project_id": 201234567,
      "project_name": "Website redesign",
      "running": false,
      "start": "2026-09-24T13:00:00Z",
      "tags": [
        "writing"
      ],
      "workspace_id": 7654321
    },
    {
      "billable": false,
      "client_name": null,
      "description": "",
      "duration_hours": 0.5,
      "duration_seconds": 1800,
      "duration_text": "0:30:00",
      "end": "2026-09-24T09:00:00Z",
      "id": 4012345603,
      "project_id": null,
      "project_name": null,
      "running": false,
      "start": "2026-09-24T08:30:00Z",
      "tags": [],
      "workspace_id": 7654321
    }
  ],
  "to_date": "2026-09-25",
  "total_hours": 4.5,
  "total_seconds": 16200
}
```

### Start timer

Start tracking time now. If a timer is already running, Toggl Track stops it first.

**Inputs**

- Description (`description`, text): What the time is for, as it shows in Toggl Track.
- Project (`project_id`, text): The project the time belongs to.
- Tags (`tags`, list): Tags to put on the time.
- Billable (`billable`, true/false): Whether the time is billable. Billable time needs a paid Toggl Track plan.

**Outputs**

- `time_entry` (object): The running time entry that was started.

**Example output**

```json
{
  "time_entry": {
    "billable": false,
    "client_name": "Acme Corp",
    "description": "Fixing the header",
    "duration_hours": 0.0,
    "duration_seconds": 0,
    "duration_text": "0:00:00",
    "end": null,
    "id": 4012345701,
    "project_id": 201234567,
    "project_name": "Website redesign",
    "running": true,
    "start": "2026-09-25T15:00:00Z",
    "tags": [
      "writing"
    ],
    "workspace_id": 7654321
  }
}
```

### Stop timer

Stop the timer that's running. If none is, nothing changes.

**Inputs**: None.

**Outputs**

- `stopped` (true/false): True when a timer was running and is now stopped; false when none was running.
- `time_entry` (object): The time entry that was stopped, or null when none was running.

**Example output**

```json
{
  "stopped": true,
  "time_entry": {
    "billable": false,
    "client_name": "Acme Corp",
    "description": "Fixing the header",
    "duration_hours": 0.75,
    "duration_seconds": 2712,
    "duration_text": "0:45:12",
    "end": "2026-09-25T15:00:00Z",
    "id": 4012345604,
    "project_id": 201234567,
    "project_name": "Website redesign",
    "running": false,
    "start": "2026-09-25T14:14:48Z",
    "tags": [],
    "workspace_id": 7654321
  }
}
```

### Update project

Rename a project, change its client, or archive or restore it. Only what you fill in changes.

**Inputs**

- Project (`project_id`, text, required): The project to change.
- New name (`name`, text): A new name for the project.
- Client (`client_id`, text): The client the project is for from now on.
- Archived (`archived`, true/false): Yes archives the project, so no new time goes to it. No restores it.

**Outputs**

- `project` (object): The project, as it is now.

**Example output**

```json
{
  "project": {
    "archived": false,
    "client_id": 61234568,
    "client_name": "Globex",
    "id": 201234569,
    "name": "Old brochure",
    "workspace_id": 7654321
  }
}
```

### Update time entry

Change a time entry's description, project, times, tags or billable status. Only what you fill in changes.

**Inputs**

- Time entry (`time_entry_id`, text, required): The time entry's ID, from an earlier step such as Start timer, Create time entry or List time entries.
- Description (`description`, text): What the time is for, as it shows in Toggl Track.
- Project (`project_id`, text): The project the time belongs to.
- Start (`start`, date and time): A new start time.
- End (`end`, date and time): A new end time. Giving a running timer an end stops it.
- Add tags (`add_tags`, list): Tags to add. The entry keeps the tags it has.
- Billable (`billable`, true/false): Whether the time is billable. Billable time needs a paid Toggl Track plan.

**Outputs**

- `time_entry` (object): The time entry, as it is after the change.

**Example output**

```json
{
  "time_entry": {
    "billable": false,
    "client_name": "Acme Corp",
    "description": "Kickoff call with Acme",
    "duration_hours": 1.5,
    "duration_seconds": 5400,
    "duration_text": "1:30:00",
    "end": "2026-09-25T10:30:00Z",
    "id": 4012345601,
    "project_id": 201234567,
    "project_name": "Website redesign",
    "running": false,
    "start": "2026-09-25T09:00:00Z",
    "tags": [
      "meetings",
      "invoiced"
    ],
    "workspace_id": 7654321
  }
}
```
