---
title: "Add Time"
method: POST
path: "/time"
tags: ["Time Records"]
---

# Add Time

`POST /time`

Add a time record (in seconds) for a user on a given task and date.

**Upsert:** at most one time record exists per `(user, date, task)`. Posting again with the same combination updates the existing record's duration instead of creating a duplicate. To update a specific record by ID, use `PUT /time/{time_id}`.

See [Dates](/dates-and-timezones) for accepted date and duration formats.

## Request body

- TimeRecordRequest
  - `time` integer, required — Time in seconds
  - `date` string — Date
  - `task` string — Task ID
  - `user` number — User ID
  - `comment` string — Comment

## Response `201`

Created

- TimeRecordExtended
  - `id` number, required — Time record ID
  - `time` number, required — Time recorded in seconds
  - `user` number, required — User ID
  - `date` string, required — Date
  - `task` Task
    - `id` string, required
    - `name` string, required
    - `projects` string[], required — List of projects ID
    - `section` number, nullable — Section ID
    - `labels` string[]
    - `position` number
    - `description` string, nullable
    - `dueAt` string, nullable — Format: Y-m-d H:i:s
    - `status` 'open' | 'closed'
    - `time` TaskTime
      - `total` number, required — Total task time in seconds
      - `users` object, required — Task time per user ID
    - `estimate` TaskEstimate
      - `total` number, required — Total task estimate in seconds
      - `type` 'overall' | 'users', required
      - `users` object — Task estimate per user ID
    - `attributes` object — Custom attributes from integration
    - `metrics` object — Custom metrics from integration
    - `unbillable` boolean
  - `isLocked` boolean
  - `isInvoiced` boolean
  - `comment` string
  - `history` TimeHistory[]
    - `id` number, required — Time record history ID
    - `createdBy` number, required — User ID
    - `time` number, required — Time difference in seconds
    - `previousTime` number, required — Previous time in seconds
    - `action` 'TIMER' | 'ADD' | 'EDIT' | 'REMOVE' | 'COMMENT' | 'MOVE', required
    - `createdAt` string
  - `createdAt` string — Format: Y-m-d H:i:s
  - `warning` object, nullable — Validation warning, if any.
  - `lockReasons` string[] — Reasons the record is locked, if any.
  - `website` object, nullable
    - `url` string
    - `title` string

## Other responses

- `401` — Unauthorized

---

[API](https://skmtc.net/everhour/apis/everhour-api.md) · [All operations](https://skmtc.net/everhour/apis/everhour-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/everhour/everhour-api/versions/fc6136e33352/schema)
