Clockify API

Welcome to the Clockify API documentation. By using our REST-based API, you can integrate Clockify into your existing apps, or create new ones. Feel free to post any questions you have on Stack Overflow.

API Base Endpoint
https://clockify.me/api/v1
Terms of Service: https://clockify.me/terms
Version: v1

Authentication

All requests need to be authenticated with API key, which you can find in your Personal Settings.

The API key must be used with the X-Api-Key header or you'll get "Full authentication is required to access this resource" response.

X-Api-Key

name
X-Api-Key
in
header
Example request
curl -H "content-type: application/json" -H "X-Api-Key: {yourAPIkey}" -X GET https://api.clockify.me/api/v1/user

Client

Endpoints for manipulating CLIENT resource

Find clients on workspace

GET /workspaces/{workspaceId}/clients
name: string
in query

If provided, clients will be filtered by name

page: integer 1
in query

page

page-size: integer 50
in query

page-size

200 OK

OK

type
401 Unauthorized

Unauthorized

403 Forbidden

Forbidden

404 Not Found

Not Found

Response Content-Types: */*
Response Example (200 OK)
[
  {
    "id": "5b1e52ff0cb8792ed75992c1",
    "name": "Client",
    "workspaceId": "5c0fe3290cl84304845dbf1f"
  }
]

Add a new client to workspace

POST /workspaces/{workspaceId}/clients

Contains a new client name

Request Content-Types: application/json
Request Example
{
  "name": "Client"
}
201 Created

Created

400 Bad Request

Client with that name already exists on workspace

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden

404 Not Found

Not Found

Response Content-Types: */*
Response Example (201 Created)
{
  "id": "5b1e52ff0cb8792ed75992c1",
  "name": "Client",
  "workspaceId": "5c0fe3290cl84304845dbf1f"
}

Project

Endpoints for manipulating PROJECT resource

Find projects on workspace

GET /workspaces/{workspaceId}/projects
name: string
in query

If provided, projects will be filtered by name.

page: integer 1
in query

page

page-size: integer 50
in query

page-size

OK

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden

404 Not Found

Not Found

Response Content-Types: */*
Response Example (200 OK)
[
  {
    "archived": "false",
    "billable": "true",
    "client": {
      "id": "5b1e52ff0cb8792ed75992c1",
      "name": "Client 1",
      "workspaceId": "5c0fe3290cl84304845dbf1f"
    },
    "clientId": "5b1e52ff0cb8792ed75992c1",
    "color": "#f44336",
    "estimate": {
      "estimate": "PT1H30M15S", (Example: PT1H30M15S - 1 hour 30 minutes 15 seconds)
      "type": "AUTO" (Type values: AUTO, MANUAL)
    },
    "hourlyRate": {
      "amount": "15",
      "currency": "USD"
    },
    "id": "5b1667790cb8797321f3d664",
    "memberships": [
      {
      "hourlyRate": {
        "amount": "15",
        "currency": "USD"
      },
      "membershipStatus": "ACTIVE",
      "membershipType": "PROJECT",
      "target": "5b1667790cb8797321f3d664",
      "userId": "6h1e49bf0cb8790e43d6c9ab"
      }
    ],
    "name": "Clockify 2",
    "public": "false",
    "tasks": [
      {
        "assigneeId": "",
        "estimate": "PT0S", (Example: PT1H30M15S - 1 hour 30 minutes 15 seconds)
        "id": "5b1e6b160cb8793dd93ec120",
        "name": "Task 1",
        "projectId": "5b1667790cb8797321f3d664",
        "status": "ACTIVE" (Status: ACTIVE, DONE)
      }
    ],
    "workspaceId": "5b152d9b0cb8797f86cbe14f"
  }
]

Add a new project to workspace

POST /workspaces/{workspaceId}/projects

Contains info about new project.

Request Content-Types: application/json
Request Example

{
  "name": "My API Project",
  "clientId": "",
  "isPublic": "false",
  "estimate": {
      "estimate": "3600", (number in hours)
      "type": "AUTO" (Type: AUTO, MANUAL)
  },
  "color": "#f44336",
  "billable": "true"
}
201 Created

Created

400 Bad Request

Project with that name already exists on workspace.

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden

404 Not Found

Not Found

Response Content-Types: */*
Response Example (201 Created)
{
  "archived": "false",
  "billable": "true",
  "clientId": "",
  "clientName": "",
  "color": "string",
  "duration": "PT0S", (Example: PT1H30M15S - 1 hour 30 minutes 15 seconds)
  "estimate": {
    "estimate": "PT1H0M0S", (Example: PT1H30M15S - 1 hour 30 minutes 15 seconds)
    "type": "AUTO" (Type: AUTO, MANUAL)
  },
  "hourlyRate": {
    "amount": "0",
    "currency": "USD"
  },
  "id": "5b1e6b160cb8793dd93ec120",
  "memberships": [
    {
      "hourlyRate": {
        "amount": "10",
        "currency": "USD"
      },
      "membershipStatus": "ACTIVE",
      "membershipType": "PROJECT",
      "targetId": "5b1e6b160cb8793dd93ec120",
      "userId": "5a9e9a39b079874a74cfa980"
    }
  ],
  "name": "My Api Project",
  "public": "false",
  "workspaceId": "5b152d9b0cb8797f86cbe14f"
}

Delete project from workspace

DELETE /workspaces/{workspaceId}/projects/{id}

OK

204 No Content

No Content

400 Bad Request

Project with specified id not found

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden

Response Content-Types: */*
Response Example (200 OK)
{
  "archived": "false",
  "billable": "true",
  "clientId": "",
  "clientName": "",
  "color": "string",
  "duration": "PT0S", (Example: PT1H30M15S - 1 hour 30 minutes 15 seconds)
  "estimate": {
    "estimate": "PT1H0M0S", (Example: PT1H30M15S - 1 hour 30 minutes 15 seconds)
    "type": "AUTO" (Type: AUTO, MANUAL)
  },
  "hourlyRate": {
    "amount": "0",
    "currency": "USD"
  },
  "id": "5b1e6b160cb8793dd93ec120",
  "memberships": [
    {
      "hourlyRate": {
        "amount": "10",
        "currency": "USD"
      },
      "membershipStatus": "ACTIVE",
      "membershipType": "PROJECT",
      "targetId": "5b1e6b160cb8793dd93ec120",
      "userId": "5a9e9a39b079874a74cfa980"
    }
  ],
  "name": "My Api Project",
  "public": "false",
  "workspaceId": "5b152d9b0cb8797f86cbe14f"
}

Tag

Endpoints for manipulating TAG resource

Tag

Find tags on workspace

GET /workspaces/{workspaceId}/tags
name: string
in query

If provided, tags will be filtered by name.

page: integer 1
in query

page

page-size: integer 50
in query

page-size

200 OK

OK

type
401 Unauthorized

Unauthorized

403 Forbidden

Forbidden

404 Not Found

Not Found

Response Content-Types: */*
Response Example (200 OK)
[
  {
    "id": "5a7c5d2db079870147fra234",
    "name": "Tag 1",
    "workspaceId": "5g3g57bt0cb2548e22e6l9cd"
  }
]
Tag

Add a new tag to workspace

POST /workspaces/{workspaceId}/tags

Contains a new tag name.

Request Content-Types: application/json
Request Example
{
  "name": "Tag 1"
}
201 Created

Created

400 Bad Request

Tag with that name already exists on workspace

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden

404 Not Found

Not Found

Response Content-Types: */*
Response Example (201 Created)
{
  "id": "5a7c5d2db079870147fra234",
  "name": "Tag 1",
  "workspaceId": "5g3g57bt0cb2548e22e6l9cd"
}

Task

Endpoints for manipulating TASK resource

Find tasks on project

GET /workspaces/{workspaceId}/projects/{projectId}/tasks
is-active: boolean
in query

If provided and true, only active tasks will be returned. Otherwise only finished tasks will be returned.

name: string
in query

If provided, tasks will be filtered by name.

page: integer 1
in query

page

page-size: integer 50
in query

page-size

200 OK

OK

type
401 Unauthorized

Unauthorized

403 Forbidden

Forbidden

404 Not Found

Not Found

Response Content-Types: */*
Response Example (200 OK)
[
  {
    "assigneeId": "",
    "estimate": "PT0S", (Example: PT1H30M15S - 1 hour 30 minutes 15 seconds)
    "id": "5b1e6b160cb8793dd93ec120",
    "name": "Task 1",
    "projectId": "5b1667790cb8797321f3d664",
    "status": "ACTIVE" (Status: ACTIVE, DONE)
  }
]

Add a new task on project

POST /workspaces/{workspaceId}/projects/{projectId}/tasks

Contains info about new task.

Request Content-Types: application/json
Request Example
{
  "name": "Task 1",
  "projectId": "5b1667790cb8797321f3d664",
  "assigneeId": "593e40aab0798735d0392a2d", (optional)
  "estimate": "PT2H", (optional)
  "status": "ACTIVE" (optional)
}
201 Created

Created

400 Bad Request

Task with that name already exists on project, or specified project doesn't exist

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden

404 Not Found

Not Found

Response Content-Types: */*
Response Example (201 Created)
{
  "assigneeId": "593e40aab0798735d0392a2d",
  "estimate": "PT2H", (Example: PT1H30M15S - 1 hour 30 minutes 15 seconds)
  "id": "5b1e6b160cb8793dd93ec120",
  "name": "Task 1",
  "projectId": "5b1667790cb8797321f3d664",
  "status": "ACTIVE" (Status: ACTIVE, DONE)
}

Time entry

Endpoints for manipulating TIMEENTRY resource

Add a new time entry to workspace

If end is not sent in request mean that stopwatch mode is active, else time entry is manually added.

'start' is the only mandatory field on this endpoint.

POST /workspaces/{workspaceId}/time-entries

Contains info about new time entry.

Request Content-Types: application/json
Request Example
{
  "start": "2018-06-12T13:48:14.000Z",
  "billable": "true",
  "description": "Writing documentation",
  "projectId": "5b1667790cb8797321f3d664",
  "taskId": "5b1e6b160cb8793dd93ec120",
  "end": "2018-06-12T13:50:14.000Z",
  "tagIds": [
    "5a7c5d2db079870147fra234"
  ],
}
201 Created

Created

400 Bad Request

Project//Tag doesn't exist or doesn't belong to workspace; Task doesn't exist or doesn't belong to project; Start datetime is after end datetime;Time entry requires additional info (check workspace settings);

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden

404 Not Found

Not Found

Response Content-Types: */*
Response Example (201 Created)
{
  "billable": "true",
  "description": "Writing documentation",
  "id": "5b0fdf2a0cb87904845dfer5",
  "isLocked": "false",
  "projectId": "5b1667790cb8797321f3d664",
  "tagIds": [
    "5a7c5d2db079870147fra234"
  ],
  "taskId": "5b1e6b160cb8793dd93ec120",
  "timeInterval": {
    "duration": "PT2M", (Example: PT1H30M15S - 1 hour 30 minutes 15 seconds)
    "end": "2018-06-12T13:48:14Z",
    "start": "2018-06-12T13:50:14Z"
  },
  "userId": "6h1e49bf0cb8790e43d6c9ab",
  "workspaceId": "5g3g57bt0cb2548e22e6l9cd"
}

Get time entry on workspace

GET /workspaces/{workspaceId}/time-entries/{id}

OK

400 Bad Request

Time entry with given ID doesn't exist

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden

404 Not Found

Not Found

Response Content-Types: */*
Response Example (200 OK)
{
  "billable": "true",
  "description": "Writing documentation",
  "id": "5b0fdf2a0cb87904845dfer5",
  "isLocked": "false",
  "projectId": "5b1667790cb8797321f3d664",
  "tagIds": [
    "5a7c5d2db079870147fra234"
  ],
  "taskId": "5b1e6b160cb8793dd93ec120",
  "timeInterval": {
    "duration": "PT2M",  (Example: PT1H30M15S - 1 hour 30 minutes 15 seconds)
    "end": "2018-06-12T13:50:14Z",
    "start": "2018-06-12T13:48:14Z"
  },
  "userId": "6h1e49bf0cb8790e43d6c9ab",
  "workspaceId": "5g3g57bt0cb2548e22e6l9cd"
}

Update time entry on workspace

PUT /workspaces/{workspaceId}/time-entries/{id}

Contains updated time entry.

Request Content-Types: application/json
Request Example
{
  "start": "2018-06-12T14:00:37Z",
  "billable": "true",
  "description": "Writing documentation updated",
  "projectId": "5b1667790cb8797321f3d664",
  "taskId": "5b1e6b160cb8793dd93ec120",
  "end": "2018-06-12T14:01:41Z",
  "tagIds": [
    "5a7c5d2db079870147fra234"
  ]
}

OK

201 Created

Created

400 Bad Request

Project/Tag doesn't exist or doesn't belong to workspace; Task doesn't exist or doesn't belong to project; Start datetime is after end datetime

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden

404 Not Found

Not Found

Response Content-Types: */*
Response Example (200 OK)
{
  "billable": "true",
  "description": "Writing documentatio updated",
  "id": "5b0fdf2a0cb87904845dfer5",
  "isLocked": "false",
  "projectId": "5b1667790cb8797321f3d664",
  "tagIds": [
    "5a7c5d2db079870147fra234"
  ],
  "taskId": "5b1e6b160cb8793dd93ec120",
  "timeInterval": {
    "duration": "PT1M4S", (Example: PT1H30M15S - 1 hour 30 minutes 15 seconds)
    "end": "2018-06-12T14:01:41Z",
    "start": "2018-06-12T14:00:37Z"
  },
  "userId": "6h1e49bf0cb8790e43d6c9ab",
  "workspaceId": "5g3g57bt0cb2548e22e6l9cd"
}

Delete time entry from workspace

DELETE /workspaces/{workspaceId}/time-entries/{id}
204 No Content

No Content

400 Bad Request

Time entry with given ID doesn't exist or doesn't belong to workspace

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden

Response Content-Types: */*

Find time entries for user on workspace

Gets a time entry for specified user on workspace. Filters can be applied as query parameters listed below

GET /workspaces/{workspaceId}/user/{userId}/time-entries

Requires WORKSPACE_OWN or WORKSPACE_ADMIN permissions to see other user's time entries.

description: string
in query

If provided, time entries will be filtered by description.

end: string
in query

If provided, only time entries that ended before specified datetime will be returned. Datetime must be in ISO-8601 format. Example: '2019-04-16T05:15:32.998Z'.

in-progress: boolean
in query

If provided, all other filters will be ignored and, if present, currently running time entry will be returned.

page: integer 1
in query

page

page-size: integer 50
in query

page-size

project: string
in query

If provided, time entries will be filtered by project.

start: string
in query

If provided, only time entries that started after specified datetime will be returned. Datetime must be in ISO-8601 format. Example: '2019-04-16T05:15:32.998Z'.

tags: string[]
in query

If provided, time entries will be filtered by tags. This parameter is an array of tag ids.

Array values passed as multiple parameters: ?tags=tagId_1&tags=tagId_2
task: string
in query

If provided, time entries will be filtered by task.

OK

400 Bad Request

User with given ID doesn't exist

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden

404 Not Found

Not Found

Response Content-Types: */*
Response Example (200 OK)
[
  {
    "billable": "true",
    "description": "Writing documentation",
    "id": "5b0fdf2a0cb87904845dfer5",
    "isLocked": "false",
    "projectId": "5b1667790cb8797321f3d664",
    "tagIds": [
      "5a7c5d2db079870147fra234"
    ],
    "taskId": "5b1e6b160cb8793dd93ec120",
    "timeInterval": {
      "duration": "PT1M4S", (Example: PT1H30M15S - 1 hour 30 minutes 15 seconds)
      "end": "2018-06-12T14:01:41Z",
      "start": "2018-06-12T14:00:37Z"
    },
    "userId": "6h1e49bf0cb8790e43d6c9ab",
    "workspaceId": "5g3g57bt0cb2548e22e6l9cd"
  }
]

Add a new time entry for another user on workspace

Adding time for others is a premium feature. This API endpoint works only for workspaces with active Premium subscription.

You specify for which user you're adding time in the request's POST path.

If you leave out end time, you'll start a timer for that person. To stop the timer, you'll have to use the "PUT /workspaces/{workspaceId}/time-entries/{timeEntryId}/end" PATH (request example: {"end":"2019-02-07T14:00:07.000Z"}

POST /workspaces/{workspaceId}/user/{userId}/time-entries

Contains information about new time entry.

Request Content-Types: application/json
Request Example
{
  "start": "2018-06-12T13:48:14.000Z",
  "billable": "true",
  "description": "Writing documentation",
  "projectId": "5b1667790cb8797321f3d664",
  "taskId": "5b1e6b160cb8793dd93ec120",
  "end": "2018-06-12T13:50:14.000Z",
  "tagIds": [
    "5a7c5d2db079870147fra234"
  ]
}
201 Created

Created

400 Bad Request

Project/Tag/User doesn't exist or doesn't belong to workspace; Task doesn't exist or doesn't belong to project; Start datetime is after end datetime;Time entry requires additional info (check workspace settings)

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden

404 Not Found

Not Found

Response Content-Types: */*
Response Example (201 Created)
{
  "billable": "true",
  "description": "Writing documentation",
  "id": "5b0fdf2a0cb87904845dfer5",
  "isLocked": "false",
  "projectId": "5b1667790cb8797321f3d664",
  "tagIds": [
    "5a7c5d2db079870147fra234"
  ],
  "taskId": "5b1e6b160cb8793dd93ec120",
  "timeInterval": {
    "duration": "PT2M", (Example: PT1H30M15S - 1 hour 30 minutes 15 seconds)
    "end": "2018-06-12T13:50:14Z",
    "start": "2018-06-12T13:48:14Z"
  },
  "userId": "6h1e49bf0cb8790e43d6c9ab",
  "workspaceId": "5g3g57bt0cb2548e22e6l9cd"
}

Stops currently running time entry on workspace

Admins can stop someone else's running timers on Premium workspaces (Add time for others feature).

If workspace has a required field enabled (eg. the Timesheet is enabled and project is a required field as a result), you won't be able to stop the timer until you fill in the required field(s). You'll simply get "Entity not created" message.

PATCH /workspaces/{workspaceId}/user/{userId}/time-entries

Contains end datetime

Request Content-Types: application/json
Request Example
{
  "end": "2018-06-12T14:01:41Z"
}

OK

204 No Content

No Content

400 Bad Request

Required information is not present on currently running time entry. Check your workspace settings.

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden

404 Not Found

Currently running time entry was not found on workspace

Response Content-Types: */*
Response Example (200 OK)
{
  "billable": "true",
  "description": "Writing documentation updated",
  "id": "5b0fdf2a0cb87904845dfer5",
  "isLocked": "false",
  "projectId": "5b1667790cb8797321f3d664",
  "tagIds": [
    "5a7c5d2db079870147fra234"
  ],
  "taskId": "5b1e6b160cb8793dd93ec120",
  "timeInterval": {
    "duration": "PT1M4S", (Example: PT1H30M15S - 1 hour 30 minutes 15 seconds)
    "end": "2018-06-12T14:01:41Z",
    "start": "2018-06-12T14:00:37Z"
  },
  "userId": "6h1e49bf0cb8790e43d6c9ab",
  "workspaceId": "5g3g57bt0cb2548e22e6l9cd"
}

User

Endpoints for manipulating USER resource

Get currently logged in user's info

GET /user

OK

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden

404 Not Found

Not Found

Response Content-Types: */*
Response Example (200 OK)
{
  "activeWorkspace": "592e9e48b0798735d03919ee",
  "defaultWorkspace": "592e9e48b0798735d03919ee",
  "email": "email@test.com",
  "id": "5bfd36c4b0798777049512e2",
  "memberships": [
    {
      "hourlyRate": {
        "amount": "500",
        "currency": "USD"
      },
      "membershipStatus": "ACTIVE",
      "membershipType": "WORKSPACE",
      "targetId": "5bfd36c4b0798777049512e3",
      "userId": "5bfd36c4b0798777049512e2"
    }
  ],
  "name": "Username",
  "profilePicture": "https://s3.eu-central-1.amazonaws.com/clockify/no-user-image.png",
  "settings": {
    "collapseAllProjectLists": "false",
    "dashboardPinToTop": "false",
    "dashboardSelection": "ME",
    "dashboardViewType": "BILLABILITY",
    "dateFormat": "MM/DD/YYYY",
    "isCompactViewOn": "false",
    "longRunning": "false",
    "projectListCollapse":  null,
    "sendNewsletter": "false",
    "summaryReportSettings": {
      "group": "Project", (Group: Project, Client, User, Tag, Time Entry, Task)
      "subgroup": "Time Entry" (Subgroup: Project, Client, User, Tag)
    },
    "timeFormat": "HOUR12",
    "timeTrackingManual": "false",
    "timeZone": "Europe/Belgrade",
    "weekStart": "MONDAY",
    "weeklyUpdates": "false"
  },
  "status": "ACTIVE"
}

Find all users on workspace

GET /workspace/{workspaceId}/users
200 OK

OK

type
401 Unauthorized

Unauthorized

403 Forbidden

Forbidden

404 Not Found

Not Found

Response Content-Types: */*
Response Example (200 OK)
[
  {
    "activeWorkspace": "592e9e48b0798735d03919ee",
    "defaultWorkspace": "592e9e48b0798735d03919ee",
    "email": "email@test.com",
    "id": "5bfd36c4b0798777049512e2",
    "memberships": [
      {
        "hourlyRate": {
          "amount": "500",
          "currency": "USD"
        },
        "membershipStatus": "ACTIVE",
        "membershipType": "WORKSPACE",
        "targetId": "5bfd36c4b0798777049512e3",
        "userId": "5bfd36c4b0798777049512e2"
      }
    ],
    "name": "Username",
    "profilePicture": "https://s3.eu-central-1.amazonaws.com/clockify/no-user-image.png",
    "settings": {
      "collapseAllProjectLists": "false",
      "dashboardPinToTop": "false",
      "dashboardSelection": "ME",
      "dashboardViewType": "BILLABILITY",
      "dateFormat": "MM/DD/YYYY",
      "isCompactViewOn": "false",
      "longRunning": "false",
      "projectListCollapse":  null,
      "sendNewsletter": "false",
      "summaryReportSettings": {
        "group": "Project", (Group: Project, Client, User, Tag, Time Entry, Task)
        "subgroup": "Time Entry" (Subgroup: Project, Client, User, Tag)
      },
      "timeFormat": "HOUR12",
      "timeTrackingManual": "false",
      "timeZone": "Europe/Belgrade",
      "weekStart": "MONDAY",
      "weeklyUpdates": "false"
    },
    "status": "ACTIVE"
  }
]

Workspace

Endpoints for manipulating WORKSPACE resource

Find workspaces for currently logged in user

GET /workspaces
200 OK

OK

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden

404 Not Found

Not Found

Response Content-Types: */*
Response Example (200 OK)
[
  {
    "hourlyRate": {
      "amount": "0",
      "currency": "USD"
    },
    "id": "5g3g57bt0cb2548e22e6l9cd",
    "imageUrl": "https://s3.eu-central-1.amazonaws.com/test/workspaceImg.png",
    "memberships": [
      {
        "hourlyRate": {
          "amount": "15",
          "currency": "USD"
        },
        "membershipStatus": "ACTIVE",
        "membershipType": "WORKSPACE",
        "targetId": "5g3g57bt0cb2548e22e6l9cd",
        "userId": "6h1e49bf0cb8790e43d6c9ab"
      }
    ],
    "name": "Clockify workspace",
    "workspaceSettings": {
      "adminOnlyPages": [],
      "automaticLock": {
        "changeDay": "WEDNESDAY",
        "dayOfMonth": "13",
        "firstDay": "MONDAY",
        "olderThanPeriod": "DAYS",
        "olderThanValue": "14",
        "type": "OLDER_THAN"
      },
      "canSeeTimeSheet": "false",
      "defaultBillableProjects": "true",
      "forceDescription": "true",
      "forceProjects": "true",
      "forceTags": "false",
      "forceTasks": "false",
      "lockTimeEntries": "2019-01-31T23:00:00Z",
      "onlyAdminsCreateProject": "false",
      "onlyAdminsCreateTag": "false",
      "onlyAdminsSeeAllTimeEntries": "true",
      "onlyAdminsSeeBillableRates": "false",
      "onlyAdminsSeeDashboard": "false",
      "onlyAdminsSeePublicProjectsEntries": "false",
      "projectFavorites": "true",
      "projectGroupingLabel": "client",
      "projectPickerSpecialFilter": "false",
      "round": {
        "minutes": "15",
        "round": "Round up to"
      },
      "timeRoundingInReports": "true",
      "trackTimeDownToSecond": "false"
    }
]

Add a new workspace

POST /workspaces

Contains new workspace name.

Request Content-Types: application/json
Request Example
{
  "name": "Development"
}
201 Created

Created

400 Bad Request

Workspace with that name already exists, or workspace name is not valid

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden

404 Not Found

Not Found

Response Content-Types: */*
Response Example (201 Created)
{
  "hourlyRate": {
    "amount": "0",
    "currency": "USD"
  },
  "id": "5g3g57bt0cb2548e22e6l9cd",
  "imageUrl": "https://s3.eu-central-1.amazonaws.com/test/workspaceImg.png",
  "memberships": [
    {
      "hourlyRate": {
        "amount": "15",
        "currency": "USD"
      },
      "membershipStatus": "ACTIVE",
      "membershipType": "WORKSPACE",
      "targetId": "5g3g57bt0cb2548e22e6l9cd",
      "userId": "6h1e49bf0cb8790e43d6c9ab"
    }
  ],
  "name": "Clockify workspace",
  "workspaceSettings": {
    "adminOnlyPages": [],
    "automaticLock": {
      "changeDay": "WEDNESDAY",
      "dayOfMonth": "13",
      "firstDay": "MONDAY",
      "olderThanPeriod": "DAYS",
      "olderThanValue": "14",
      "type": "OLDER_THAN"
    },
    "canSeeTimeSheet": "false",
    "defaultBillableProjects": "true",
    "forceDescription": "true",
    "forceProjects": "true",
    "forceTags": "false",
    "forceTasks": "false",
    "lockTimeEntries": "2019-01-31T23:00:00Z",
    "onlyAdminsCreateProject": "false",
    "onlyAdminsCreateTag": "false",
    "onlyAdminsSeeAllTimeEntries": "true",
    "onlyAdminsSeeBillableRates": "false",
    "onlyAdminsSeeDashboard": "false",
    "onlyAdminsSeePublicProjectsEntries": "false",
    "projectFavorites": "true",
    "projectGroupingLabel": "client",
    "projectPickerSpecialFilter": "false",
    "round": {
      "minutes": "15",
      "round": "Round up to"
    },
    "timeRoundingInReports": "true",
    "trackTimeDownToSecond": "false"
  }
}

Schema Definitions

AutomaticLockDto: object

changeDay: string MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
dayOfMonth: integer
firstDay: string MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
olderThanPeriod: string DAYS, WEEKS, MONTHS
olderThanValue: integer
type: string WEEKLY, MONTHLY, OLDER_THAN
Example
{
  "changeDay": "string",
  "dayOfMonth": "integer",
  "firstDay": "string",
  "olderThanPeriod": "string",
  "olderThanValue": "integer",
  "type": "string"
}

ClientDto: object

id: string
name: string
workspaceId: string
Example
{
  "id": "string",
  "name": "string",
  "workspaceId": "string"
}

ClientRequest: object

name: string
Example
{
  "name": "string"
}

CurrentUserDto: object

activeWorkspace: string
defaultWorkspace: string
email: string
id: string
memberships: MembershipDto
MembershipDto
name: string
profilePicture: string
settings: UserSettingsDto
status: string ACTIVE, PENDING_EMAIL_VERIFICATION, DELETED
Example
{
  "activeWorkspace": "string",
  "defaultWorkspace": "string",
  "email": "string",
  "id": "string",
  "memberships": [
    {
      "hourlyRate": {
        "amount": "integer",
        "currency": "string"
      },
      "membershipStatus": "string",
      "membershipType": "string",
      "targetId": "string",
      "userId": "string"
    }
  ],
  "name": "string",
  "profilePicture": "string",
  "settings": {
    "collapseAllProjectLists": "boolean",
    "dashboardPinToTop": "boolean",
    "dashboardSelection": "string",
    "dashboardViewType": "string",
    "dateFormat": "string",
    "isCompactViewOn": "boolean",
    "longRunning": "boolean",
    "projectListCollapse": "integer",
    "sendNewsletter": "boolean",
    "summaryReportSettings": {
      "group": "string",
      "subgroup": "string"
    },
    "timeFormat": "string",
    "timeTrackingManual": "boolean",
    "timeZone": "string",
    "weekStart": "string",
    "weeklyUpdates": "boolean"
  },
  "status": "string"
}

EstimateDto: object

estimate: string
type: string AUTO, MANUAL
Example
{
  "estimate": "string",
  "type": "string"
}

EstimateRequest: object

estimate: integer
type: string
Example
{
  "estimate": "integer",
  "type": "string"
}

HourlyRateDto: object

amount: integer
currency: string
Example
{
  "amount": "integer",
  "currency": "string"
}

HourlyRateRequest: object

amount: integer
currency: string
Example
{
  "amount": "integer",
  "currency": "string"
}

MembershipDto: object

hourlyRate: HourlyRateDto
membershipStatus: string PENDING, ACTIVE, DECLINED, INACTIVE
membershipType: string
targetId: string
userId: string
Example
{
  "hourlyRate": {
    "amount": "integer",
    "currency": "string"
  },
  "membershipStatus": "string",
  "membershipType": "string",
  "targetId": "string",
  "userId": "string"
}

MembershipRequest: object

userId: string
hourlyRate: HourlyRateRequest
targetId: string
membershipType: string
membershipStatus: string
Example
{
  "userId": "string",
  "hourlyRate": {
    "amount": "integer",
    "currency": "string"
  },
  "targetId": "string",
  "membershipType": "string",
  "membershipStatus": "string"
}

ProjectDtoImpl: object

archived: boolean
billable: boolean
clientId: string
clientName: string
color: string
duration: string
estimate: EstimateDto
hourlyRate: HourlyRateDto
id: string
memberships: MembershipDto
MembershipDto
name: string
public: boolean
workspaceId: string
Example
{
  "archived": "boolean",
  "billable": "boolean",
  "clientId": "string",
  "clientName": "string",
  "color": "string",
  "duration": "string",
  "estimate": {
    "estimate": "string",
    "type": "string"
  },
  "hourlyRate": {
    "amount": "integer",
    "currency": "string"
  },
  "id": "string",
  "memberships": [
    {
      "hourlyRate": {
        "amount": "integer",
        "currency": "string"
      },
      "membershipStatus": "string",
      "membershipType": "string",
      "targetId": "string",
      "userId": "string"
    }
  ],
  "name": "string",
  "public": "boolean",
  "workspaceId": "string"
}

ProjectId: object

id: string
Example
{
  "id": "string"
}

ProjectRequest: object

name: string
clientId: string
isPublic: boolean
estimate: EstimateRequest
color: string
billable: boolean
hourlyRate: HourlyRateRequest
memberships: MembershipRequest
MembershipRequest
tasks: TaskRequest
TaskRequest
Example
{
  "name": "string",
  "clientId": "string",
  "isPublic": "boolean",
  "estimate": {
    "estimate": "integer",
    "type": "string"
  },
  "color": "string",
  "billable": "boolean",
  "hourlyRate": {
    "amount": "integer",
    "currency": "string"
  },
  "memberships": [
    {
      "userId": "string",
      "hourlyRate": {
        "amount": "integer",
        "currency": "string"
      },
      "targetId": "string",
      "membershipType": "string",
      "membershipStatus": "string"
    }
  ],
  "tasks": [
    {
      "id": "string",
      "name": "string",
      "assigneeId": "string",
      "estimate": "string",
      "status": "string"
    }
  ]
}

ProjectSummaryDto: object

color: string
id: string
name: string
Example
{
  "color": "string",
  "id": "string",
  "name": "string"
}

Round: object

minutes: string
round: string
Example
{
  "minutes": "string",
  "round": "string"
}

StopTimeEntryRequest: object

end: string
Example
{
  "end": "string"
}

SummaryReportSettingsDto: object

group: string
subgroup: string
Example
{
  "group": "string",
  "subgroup": "string"
}

TagDto: object

id: string
name: string
workspaceId: string
Example
{
  "id": "string",
  "name": "string",
  "workspaceId": "string"
}

TagId: object

id: string
Example
{
  "id": "string"
}

TagRequest: object

name: string
Example
{
  "name": "string"
}

TaskDto: object

assigneeId: string
estimate: string
id: string
name: string
projectId: string
status: string ACTIVE, DONE
Example
{
  "assigneeId": "string",
  "estimate": "string",
  "id": "string",
  "name": "string",
  "projectId": "string",
  "status": "string"
}

TaskId: object

id: string
Example
{
  "id": "string"
}

TaskRequest: object

id: string
name: string
assigneeId: string
estimate: string
status: string
Example
{
  "id": "string",
  "name": "string",
  "assigneeId": "string",
  "estimate": "string",
  "status": "string"
}

TimeEntriesDurationRequest: object

start: string
end: string
Example
{
  "start": "string",
  "end": "string"
}

TimeEntry: object

billable: boolean
locked: boolean
projectId: ProjectId
tagIds: TagId
TagId
taskId: TaskId
timeInterval: TimeInterval
Example
{
  "billable": "boolean",
  "locked": "boolean",
  "projectId": {
    "id": "string"
  },
  "tagIds": [
    {
      "id": "string"
    }
  ],
  "taskId": {
    "id": "string"
  },
  "timeInterval": "object"
}

TimeEntryBulkEditRequest: object

timeEntries: TimeEntryRequest
TimeEntryRequest
timeEntryIds: string[]
string
timeEntryList: TimeEntry
TimeEntry
changeFields: string[]
string
Example
{
  "timeEntries": [
    {
      "id": "string",
      "start": "string",
      "billable": "boolean",
      "description": "string",
      "projectId": "string",
      "userId": "string",
      "taskId": "string",
      "end": "string",
      "tagIds": [
        "string"
      ],
      "timeInterval": {
        "start": "string",
        "end": "string"
      },
      "workspaceId": "string",
      "isLocked": "boolean"
    }
  ],
  "timeEntryIds": [
    "string"
  ],
  "timeEntryList": [
    {
      "billable": "boolean",
      "locked": "boolean",
      "projectId": {
        "id": "string"
      },
      "tagIds": [
        {
          "id": "string"
        }
      ],
      "taskId": {
        "id": "string"
      },
      "timeInterval": "object"
    }
  ],
  "changeFields": [
    "string"
  ]
}

TimeEntryDtoImpl: object

billable: boolean
description: string
id: string
isLocked: boolean
projectId: string
tagIds: string[]
string
taskId: string
timeInterval: TimeIntervalDto
userId: string
workspaceId: string
Example
{
  "billable": "boolean",
  "description": "string",
  "id": "string",
  "isLocked": "boolean",
  "projectId": "string",
  "tagIds": [
    "string"
  ],
  "taskId": "string",
  "timeInterval": {
    "duration": "string",
    "end": "string (date-time)",
    "start": "string (date-time)"
  },
  "userId": "string",
  "workspaceId": "string"
}

TimeEntryIdsRequest: object

timeEntryIds: string[]
string
Example
{
  "timeEntryIds": [
    "string"
  ]
}

TimeEntryRequest: object

id: string
start: string
billable: boolean
description: string
projectId: string
userId: string
taskId: string
end: string
tagIds: string[]
string
timeInterval: TimeEntriesDurationRequest
workspaceId: string
isLocked: boolean
Example
{
  "id": "string",
  "start": "string",
  "billable": "boolean",
  "description": "string",
  "projectId": "string",
  "userId": "string",
  "taskId": "string",
  "end": "string",
  "tagIds": [
    "string"
  ],
  "timeInterval": {
    "start": "string",
    "end": "string"
  },
  "workspaceId": "string",
  "isLocked": "boolean"
}

TimeEntrySummaryDto: object

billable: boolean
clientId: string
clientName: string
description: string
hourlyRate: HourlyRateDto
id: string
isLocked: boolean
project: ProjectSummaryDto
tags: TagDto
TagDto
task: TaskDto
timeInterval: TimeIntervalDto
totalBillable: integer (int64)
user: UserSummaryDto
Example
{
  "billable": "boolean",
  "clientId": "string",
  "clientName": "string",
  "description": "string",
  "hourlyRate": {
    "amount": "integer",
    "currency": "string"
  },
  "id": "string",
  "isLocked": "boolean",
  "project": {
    "color": "string",
    "id": "string",
    "name": "string"
  },
  "tags": [
    {
      "id": "string",
      "name": "string",
      "workspaceId": "string"
    }
  ],
  "task": {
    "assigneeId": "string",
    "estimate": "string",
    "id": "string",
    "name": "string",
    "projectId": "string",
    "status": "string"
  },
  "timeInterval": {
    "duration": "string",
    "end": "string (date-time)",
    "start": "string (date-time)"
  },
  "totalBillable": "integer (int64)",
  "user": {
    "email": "string",
    "id": "string",
    "name": "string"
  }
}

TimeInterval: object

Example
"object"

TimeIntervalDto: object

duration: string
end: string (date-time)
start: string (date-time)
Example
{
  "duration": "string",
  "end": "string (date-time)",
  "start": "string (date-time)"
}

UpdateTimeEntryRequest: object

start: string
billable: boolean
description: string
projectId: string
taskId: string
end: string
tagIds: string[]
string
Example
{
  "start": "string",
  "billable": "boolean",
  "description": "string",
  "projectId": "string",
  "taskId": "string",
  "end": "string",
  "tagIds": [
    "string"
  ]
}

UserDto: object

activeWorkspace: string
defaultWorkspace: string
email: string
id: string
memberships: MembershipDto
MembershipDto
name: string
profilePicture: string
settings: UserSettingsDto
status: string ACTIVE, PENDING_EMAIL_VERIFICATION, DELETED
Example
{
  "activeWorkspace": "string",
  "defaultWorkspace": "string",
  "email": "string",
  "id": "string",
  "memberships": [
    {
      "hourlyRate": {
        "amount": "integer",
        "currency": "string"
      },
      "membershipStatus": "string",
      "membershipType": "string",
      "targetId": "string",
      "userId": "string"
    }
  ],
  "name": "string",
  "profilePicture": "string",
  "settings": {
    "collapseAllProjectLists": "boolean",
    "dashboardPinToTop": "boolean",
    "dashboardSelection": "string",
    "dashboardViewType": "string",
    "dateFormat": "string",
    "isCompactViewOn": "boolean",
    "longRunning": "boolean",
    "projectListCollapse": "integer",
    "sendNewsletter": "boolean",
    "summaryReportSettings": {
      "group": "string",
      "subgroup": "string"
    },
    "timeFormat": "string",
    "timeTrackingManual": "boolean",
    "timeZone": "string",
    "weekStart": "string",
    "weeklyUpdates": "boolean"
  },
  "status": "string"
}

UserSettingsDto: object

collapseAllProjectLists: boolean
dashboardPinToTop: boolean
dashboardSelection: string ME, TEAM
dashboardViewType: string PROJECT, BILLABILITY
dateFormat: string
isCompactViewOn: boolean
longRunning: boolean
projectListCollapse: integer
sendNewsletter: boolean
summaryReportSettings: SummaryReportSettingsDto
timeFormat: string
timeTrackingManual: boolean
timeZone: string
weekStart: string MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
weeklyUpdates: boolean
Example
{
  "collapseAllProjectLists": "boolean",
  "dashboardPinToTop": "boolean",
  "dashboardSelection": "string",
  "dashboardViewType": "string",
  "dateFormat": "string",
  "isCompactViewOn": "boolean",
  "longRunning": "boolean",
  "projectListCollapse": "integer",
  "sendNewsletter": "boolean",
  "summaryReportSettings": {
    "group": "string",
    "subgroup": "string"
  },
  "timeFormat": "string",
  "timeTrackingManual": "boolean",
  "timeZone": "string",
  "weekStart": "string",
  "weeklyUpdates": "boolean"
}

UserSummaryDto: object

email: string
id: string
name: string
Example
{
  "email": "string",
  "id": "string",
  "name": "string"
}

WorkspaceDto: object

hourlyRate: HourlyRateDto
id: string
imageUrl: string
memberships: MembershipDto
MembershipDto
name: string
workspaceSettings: WorkspaceSettingsDto
Example
{
  "hourlyRate": {
    "amount": "integer",
    "currency": "string"
  },
  "id": "string",
  "imageUrl": "string",
  "memberships": [
    {
      "hourlyRate": {
        "amount": "integer",
        "currency": "string"
      },
      "membershipStatus": "string",
      "membershipType": "string",
      "targetId": "string",
      "userId": "string"
    }
  ],
  "name": "string",
  "workspaceSettings": {
    "adminOnlyPages": [
      "string"
    ],
    "automaticLock": {
      "changeDay": "string",
      "dayOfMonth": "integer",
      "firstDay": "string",
      "olderThanPeriod": "string",
      "olderThanValue": "integer",
      "type": "string"
    },
    "canSeeTimeSheet": "boolean",
    "defaultBillableProjects": "boolean",
    "forceDescription": "boolean",
    "forceProjects": "boolean",
    "forceTags": "boolean",
    "forceTasks": "boolean",
    "lockTimeEntries": "string",
    "onlyAdminsCreateProject": "boolean",
    "onlyAdminsCreateTag": "boolean",
    "onlyAdminsSeeAllTimeEntries": "boolean",
    "onlyAdminsSeeBillableRates": "boolean",
    "onlyAdminsSeeDashboard": "boolean",
    "onlyAdminsSeePublicProjectsEntries": "boolean",
    "projectFavorites": "boolean",
    "projectGroupingLabel": "string",
    "projectPickerSpecialFilter": "boolean",
    "round": {
      "minutes": "string",
      "round": "string"
    },
    "timeRoundingInReports": "boolean",
    "trackTimeDownToSecond": "boolean"
  }
}

WorkspaceRequest: object

name: string
Example
{
  "name": "string"
}

WorkspaceSettingsDto: object

adminOnlyPages: string[]
string PROJECT, TEAM, REPORTS
automaticLock: AutomaticLockDto
canSeeTimeSheet: boolean
defaultBillableProjects: boolean
forceDescription: boolean
forceProjects: boolean
forceTags: boolean
forceTasks: boolean
lockTimeEntries: string
onlyAdminsCreateProject: boolean
onlyAdminsCreateTag: boolean
onlyAdminsSeeAllTimeEntries: boolean
onlyAdminsSeeBillableRates: boolean
onlyAdminsSeeDashboard: boolean
onlyAdminsSeePublicProjectsEntries: boolean
projectFavorites: boolean
projectGroupingLabel: string
projectPickerSpecialFilter: boolean
round: Round
timeRoundingInReports: boolean
trackTimeDownToSecond: boolean
Example
{
  "adminOnlyPages": [
    "string"
  ],
  "automaticLock": {
    "changeDay": "string",
    "dayOfMonth": "integer",
    "firstDay": "string",
    "olderThanPeriod": "string",
    "olderThanValue": "integer",
    "type": "string"
  },
  "canSeeTimeSheet": "boolean",
  "defaultBillableProjects": "boolean",
  "forceDescription": "boolean",
  "forceProjects": "boolean",
  "forceTags": "boolean",
  "forceTasks": "boolean",
  "lockTimeEntries": "string",
  "onlyAdminsCreateProject": "boolean",
  "onlyAdminsCreateTag": "boolean",
  "onlyAdminsSeeAllTimeEntries": "boolean",
  "onlyAdminsSeeBillableRates": "boolean",
  "onlyAdminsSeeDashboard": "boolean",
  "onlyAdminsSeePublicProjectsEntries": "boolean",
  "projectFavorites": "boolean",
  "projectGroupingLabel": "string",
  "projectPickerSpecialFilter": "boolean",
  "round": {
    "minutes": "string",
    "round": "string"
  },
  "timeRoundingInReports": "boolean",
  "trackTimeDownToSecond": "boolean"
}