---
title: "Approve Week/Request for Approval"
method: POST
path: "/timesheets/{timesheet_id}/approval"
tags: ["Timesheets"]
---

# Approve Week/Request for Approval

`POST /timesheets/{timesheet_id}/approval`

Submit a timesheet week for approval.

The week's owner uses this endpoint to request review; an approver acts on the request via `PUT /timesheets/{timesheet_id}/approval`.

The `timesheet_id` is the concatenation of `user_id` and a 4-digit `week_id` in `YYWW` format (no separator). Example: user `14856` for week `2535` (week 35 of 2025) → `timesheet_id = 148562535`. See the Timesheets overview for the full Week ID definition.

## Path parameters

- `timesheet_id` number, required

## Request body

- TimesheetApprovalRequest
  - `comment` string
  - `reviewer` number — User ID, must be admin in team
  - `sendNotification` boolean

## Response `200`

OK

- TimesheetApproval
  - `id` number — Timesheet ID
  - `user` number — User ID
  - `weekId` number
  - `reviewer` number — Reviewer User ID
  - `history` TimesheetApprovalHistory[]
    - `action` 'submitted' | 'rejected' | 'approved' | 'discarded'
    - `days` ApprovalHistoryDays
      - `monday` boolean
      - `tuesday` boolean
      - `wednesday` boolean
      - `thursday` boolean
      - `friday` boolean
      - `saturday` boolean
      - `sunday` boolean
    - `user` number — User ID
    - `comment` string
    - `createdAt` string — Datetime when action was created
  - `status` 'pending' | 'rejected' | 'approved' | 'partial_approved' | 'discarded'
  - `totalTime` integer, nullable — Total approved time in seconds.

## 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/revisions/fc6136e33352/schema)
