# Export Detailed Time Entries — Toggl Track

> Export a complete Toggl Track detailed report as CSV in one request. Use this for monthly or other large reports that may exceed the execution time of paginated JSON searches. The CSV contains only records visible to the connected user…

- Key: `toggl-export-detailed-time-entries`
- Type: Action (Read-only)
- Version: 0.0.1
- App: Toggl Track (`toggl`) — https://pipedream.com/apps/toggl.md
- This page (HTML): https://pipedream.com/apps/toggl/actions/export-detailed-time-entries
- Hints: read-only · open-world
- Source: https://github.com/PipedreamHQ/pipedream/blob/master/components/toggl/actions/export-detailed-time-entries/export-detailed-time-entries.mjs

## Description

Export a complete Toggl Track detailed report as CSV in one request. Use this for monthly or other large reports that may exceed the execution time of paginated JSON searches. The CSV contains only records visible to the connected user. CSV export may require a paid Toggl Track plan. [See the documentation](https://engineering.toggl.com/docs/track/reports/detailed_reports/)

## Props

| Prop | Type | Required | Description |
|---|---|---|---|
| `workspaceId` | `integer` | Yes | The Toggl Track workspace ID, e.g. 1234567. Use List Workspace ID Options to find accessible workspace IDs. Options are loaded from the connected account. |
| `datePreset` | `string` | No | Optional report range resolved using the connected user's Toggl timezone and first day of week, e.g. last_month. For all-user reports, Toggl evaluates dates in each time entry creator's profile timezone. |
| `startDate` | `string` | No | Inclusive report start date in YYYY-MM-DD format, e.g. 2026-09-01. Required with End Date when Date Preset is not used. |
| `endDate` | `string` | No | Inclusive report end date in YYYY-MM-DD format, e.g. 2026-09-30. It may be the same as Start Date. |
| `timezone` | `string` | No | Optional IANA timezone used to resolve Date Preset, e.g. America/Chicago. Defaults to the connected user's Toggl profile timezone. |
| `userIds` | `integer[]` | No | Include only these workspace user IDs, e.g. [1234567]. Use List Workspace Users and its userId field to find accessible IDs. |
| `userName` | `string` | No | Optional full or partial name or email, e.g. Angus. It must resolve to exactly one accessible workspace user. |
| `projectIds` | `integer[]` | No | Include only these project IDs, e.g. [123456789]. Find IDs in Toggl Track project settings or the workspace projects API. |
| `clientIds` | `integer[]` | No | Include only these client IDs, e.g. [12345678]. Find IDs in Toggl Track client settings or the workspace clients API. |
| `taskIds` | `integer[]` | No | Include only these task IDs, e.g. [12345678]. Find IDs in Toggl Track project tasks or the workspace tasks API. |
| `tagIds` | `integer[]` | No | Include only entries with these tag IDs, e.g. [1234567]. Find IDs in Toggl Track workspace settings or the workspace tags API. |
| `description` | `string` | No | Include entries whose description matches this value, e.g. weekly planning. |
| `billable` | `boolean` | No | Filter entries by billable status, e.g. true. This filter requires the corresponding Toggl feature. |
| `orderBy` | `string` | Yes | Field used to order report rows, e.g. date. |
| `orderDirection` | `string` | Yes | Direction used to order report rows, e.g. ASC. |

## Run it

**MCP**

```ts
import { Client } from "@modelcontextprotocol/sdk/client/index.js"
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js"
import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const accessToken = await pd.rawAccessToken

const transport = new StreamableHTTPClientTransport(
  new URL("https://remote.mcp.pipedream.net/v3"),
  {
    requestInit: {
      headers: {
        Authorization: `Bearer ${accessToken}`,
        "x-pd-project-id": process.env.PIPEDREAM_PROJECT_ID!,
        "x-pd-environment": "production",
        "x-pd-external-user-id": "{external_user_id}", // any stable ID for this user in your system
        "x-pd-app-slug": "toggl",
      },
    },
  },
)

const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)

const { tools } = await mcp.listTools()

// listTools() hands your model this tool's input schema, so it can
// fill the arguments itself:
const result = await mcp.callTool({
  name: "toggl-export-detailed-time-entries",
  arguments: {
    workspaceId: 10,
    datePreset: "Date Preset",
  },
})
```

**TypeScript**

```ts
import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const result = await pd.actions.run({
  id: "toggl-export-detailed-time-entries",
  externalUserId: "{external_user_id}", // any stable ID for this user in your system
  configuredProps: {
    toggl: { authProvisionId: "apn_xxxxxxx" },
    workspaceId: 10,
    datePreset: "Date Preset",
  },
})

console.log(result)
```

**cURL**

```bash
curl -X POST https://api.pipedream.com/v1/connect/{project_id}/actions/run \
  -H "Content-Type: application/json" \
  -H "X-PD-Environment: production" \
  -H "Authorization: Bearer {access_token}" \
  -d '{
    "external_user_id": "{external_user_id}",
    "id": "toggl-export-detailed-time-entries",
    "configured_props": {
      "toggl": { "authProvisionId": "apn_xxxxxxx" },
      "workspaceId": 10,
      "datePreset": "Date Preset"
    }
  }'
```

---

- App: https://pipedream.com/apps/toggl.md · All apps: https://pipedream.com/apps
