Skip to main content
GET
/
hours
Get Hours
curl --request GET \
  --url https://api.projectcor.com/v1/hours \
  --header 'Authorization: Bearer <token>'
{
  "total_hours": "4.0000000000000000",
  "total_cost": 4714.285714285714,
  "data": [
    {
      "id": 39517591,
      "start": "2026-02-06 00:00:00",
      "stop": "2026-02-06 02:00:00",
      "duration": "2.0000000000000000",
      "cost": 2357.142857142857,
      "user_id": 8546,
      "task_log_id": 11122850,
      "project_id": null,
      "client_id": null,
      "created_at": "2026-02-06 12:50:12",
      "status": "pending",
      "status_changed_by": null,
      "status_changed_at": null,
      "type": "TASK",
      "task_log_rework_id": null,
      "comments": null,
      "user": {
        "id": 8546,
        "first_name": "Daniel",
        "last_name": "Guzman",
        "picture": "https://user-images.projectcor.com/production/Upload/ProfilePictures/50x50/c-2336-248213441263.jpeg",
        "remaining_hours": 88,
        "timezone": "America/Buenos_Aires",
        "gmt": "-03:00"
      },
      "client": null,
      "project": null,
      "task": {
        "id": 11122850,
        "title": "Armado de contenido v1",
        "project_id": 878491,
        "task_father": null,
        "status": "nueva",
        "father": null,
        "project": {
          "id": 878491,
          "name": "Creacion de Contenido",
          "client_id": 31405,
          "contract_id": null,
          "client": {
            "id": 31405,
            "name": "Cloud Solution",
            "client_status_id": 1
          },
          "has_expired_contract": false
        },
        "labels": []
      },
      "userPosition": null,
      "billInput": null
    }
  ],
  "total": "1",
  "perPage": 20,
  "page": "1",
  "lastPage": 1
}

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Query Parameters

page
default:1

Page number (default: 1). Set to false to disable pagination.

perPage
integer
default:20

Number of items per page (default: 20).

filters
string

URL-encoded JSON object with filter criteria. Available fields: dateStart (YYYY-MM-DD), dateDeadline (YYYY-MM-DD), clients (array), projects (array), users (array), labels (array), teams (array).

orderBy
string

URL-encoded JSON object for sorting. Example: {"by":"start","order":"ASC"}.

Response

200 - application/json

Paginated list of time entries

Paginated response for time entries list

total_hours
string

Total hours summed across all entries matching the query

total_cost
number

Total cost summed across all entries matching the query

total

Total number of time entries

perPage

Number of items per page

page

Current page number

lastPage
integer

Last available page number

data
object[]

Array of time entries for the current page