# Update Time Entry — Clockify

> Updates an existing time entry in Clockify — change its start/end time, project, task, description, billable status, or tags. Clockify's update endpoint replaces the entire entry, so this action first fetches the current entry and merges…

- Key: `clockify-update-time-entry`
- Type: Action (Write)
- Version: 0.0.2
- App: Clockify (`clockify`) — https://pipedream.com/apps/clockify.md
- This page (HTML): https://pipedream.com/apps/clockify/actions/update-time-entry
- Hints: open-world
- Source: https://github.com/PipedreamHQ/pipedream/blob/master/components/clockify/actions/update-time-entry/update-time-entry.mjs

## Description

Updates an existing time entry in Clockify — change its start/end time, project, task, description, billable status, or tags. Clockify's update endpoint replaces the entire entry, so this action first fetches the current entry and merges your changes into it before saving — fields you don't set are left unchanged. Use **List Time Entries** to find the ID of the entry to update. [See the documentation](https://docs.clockify.me/#tag/Time-entry/operation/updateTimeEntry)

## Props

| Prop | Type | Required | Description |
|---|---|---|---|
| `workspaceId` | `string` | Yes | Identifier of a workspace Options are loaded from the connected account. |
| `timeEntryId` | `string` | Yes | Identifier of a time entry, for example 6a72db27a231b34fe8361aeb. Use the List Time Entries action to find the ID of the entry you want to update. |
| `projectId` | `string` | No | Identifier of a project Options are loaded from the connected account. |
| `taskId` | `string` | No | Identifier of a task Options are loaded from the connected account. |
| `start` | `string` | No | Start date and time of the time entry, in ISO 8601 format. Example: 2026-08-05T09:00:00Z |
| `end` | `string` | No | End date and time of the time entry, in ISO 8601 format. Example: 2026-08-05T17:00:00Z |
| `timeEntryDescription` | `string` | No | Description of the time entry |
| `billable` | `boolean` | No | Whether the time entry is billable |
| `tagIds` | `string[]` | No | Array of tag identifiers Options are loaded from the connected account. |
| `timeEntryType` | `string` | No | The type of the time entry |

## 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": "clockify",
      },
    },
  },
)

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: "clockify-update-time-entry",
  arguments: {
    workspaceId: "Workspace",
    timeEntryId: "Time Entry ID",
  },
})
```

**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: "clockify-update-time-entry",
  externalUserId: "{external_user_id}", // any stable ID for this user in your system
  configuredProps: {
    clockify: { authProvisionId: "apn_xxxxxxx" },
    workspaceId: "Workspace",
    timeEntryId: "Time Entry ID",
  },
})

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": "clockify-update-time-entry",
    "configured_props": {
      "clockify": { "authProvisionId": "apn_xxxxxxx" },
      "workspaceId": "Workspace",
      "timeEntryId": "Time Entry ID"
    }
  }'
```

---

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