Time Reporting

Reporting parameters

Parameter Description
ID Time Entry ID
Hours Number of (decimal time) hours tracked in this time entry
Notes Time entry notes
Project-ID Project ID that the time entry is associated with
Spent-At Date of the time entry
User-ID User ID that tracked this time entry
Is-Billed true if the time entry has been marked as invoiced, false if uninvoiced
Is-Closed true if the time entry has been approved via Timesheet Approval (no API support), false if un-approved
Timer-Started-At Time (UTC) and date that timer was started (if tracking by duration)
Hours-With-Timer Running timers will return the currently tracked value in decimal time
Started-At Start timestamp of timer (if timestamps are enabled)
Ended-At End timestamp of timer (if timestamps are enabled)
Billable true if the time entry is billable, false if non-billable
Billable-Rate The billable rate applied to this time entry.
Cost-Rate The cost rate applied to this time entry.
Updated-At Time (UTC) and date that entry was last updated
Created-At Time (UTC) and date that entry was created

All entries for project timeframe

GET https://YOURACCOUNT.harvestapp.com/projects/{PROJECT_ID}/entries?from=YYYYMMDD&to=YYYYMMDD

HTTP Response: 200 OK

Examples

Example request in Postman

<?xml version="1.0" encoding="UTF-8"?>
<day-entries type="array">
    <day-entry>
        <id type="integer">367231666</id>
        <notes>Some notes.</notes>
        <spent-at type="date">2015-07-01</spent-at>
        <hours type="decimal">0.16</hours>
        <user-id type="integer">508343</user-id>
        <project-id type="integer">3554414</project-id>
        <task-id type="integer">2086200</task-id>
        <created-at type="dateTime">2015-08-25T14:31:52Z</created-at>
        <updated-at type="dateTime">2015-08-25T14:47:02Z</updated-at>
        <adjustment-record type="boolean">false</adjustment-record>
        <timer-started-at type="dateTime">2015-08-25T14:47:02Z</timer-started-at>
        <is-closed type="boolean">false</is-closed>
        <is-billed type="boolean">false</is-billed>
        <hours-with-timer type="NilClass">0.16</hours-with-timer>
        <billable type="boolean">true</billable>
        <billable-rate type="decimal">100.0</billable-rate>
        <cost-rate type="decimal">50.0</cost-rate>
    </day-entry>
</day-entries>
[
    {
        "day_entry": {
            "id": 367231666,
            "notes": "Some notes.",
            "spent_at": "2015-07-01",
            "hours": 0.16,
            "user_id": 508343,
            "project_id": 3554414,
            "task_id": 2086200,
            "created_at": "2015-08-25T14:31:52Z",
            "updated_at": "2015-08-25T14:47:02Z",
            "adjustment_record": false,
            "timer_started_at": "2015-08-25T14:47:02Z",
            "is_closed": false,
            "is_billed": false,
            "hours_with_timer": 0.16,
            "billable": true,
            "billable_rate": 100.0,
            "cost_rate": 50.0
        }
    }
]

All entries by user for timeframe

This call requires parameters (from, to) to describe the timeframe to use for a report. This method can be used to view your own entries on a specific project.

GET https://YOURACCOUNT.harvestapp.com/people/{USER_ID}/entries?from=YYYYMMDD&to=YYYYMMDD

HTTP Response: 200 OK

Example request in Postman

<?xml version="1.0" encoding="UTF-8"?>
<day-entries type="array">
    <day-entry>
        <id type="integer">273</id>
        <notes>Some notes.</notes>
        <spent-at type="date">2015-10-02</spent-at>
        <hours type="decimal">1.0</hours>
        <user-id type="integer">1</user-id>
        <project-id type="integer">13</project-id>
        <task-id type="integer">1</task-id>
        <created-at type="dateTime">2015-10-02T23:04:36Z</created-at>
        <updated-at type="dateTime">2015-10-02T23:06:56Z</updated-at>
        <adjustment-record type="boolean">false</adjustment-record>
        <timer-started-at type="dateTime" nil="true"/>
        <is-closed type="boolean">false</is-closed>
        <is-billed type="boolean">false</is-billed>
        <billable type="boolean">false</billable>
        <billable-rate type="decimal" nil="true"/>
        <cost-rate type="decimal">50.0</cost-rate>
    </day-entry>
</day-entries>
[
    {
        "day_entry": {
            "id": 273,
            "notes": "Some notes.",
            "spent_at": "2015-10-02",
            "hours": 1,
            "user_id": 1,
            "project_id": 13,
            "task_id": 1,
            "created_at": "2015-10-02T23:04:36Z",
            "updated_at": "2015-10-02T23:06:56Z",
            "adjustment_record": false,
            "timer_started_at": null,
            "is_closed": false,
            "is_billed": false,
            "billable": false,
            "billable_rate": null,
            "cost_rate": 50.0
        }
    }
]

Filtering options

GET https://YOURACCOUNT.harvestapp.com/projects/{PROJECT_ID}/entries?from=YYYYMMDD&to=YYYYMMDD&billable=yes

Acceptable values for the billable parameter are yes and no.

GET https://YOURACCOUNT.harvestapp.com/projects/{PROJECT_ID}/entries?from=YYYYMMDD&to=YYYYMMDD&only_billed=yes

Acceptable value for the only_billed parameter is yes. Anything else will be ignored.

GET https://YOURACCOUNT.harvestapp.com/projects/{PROJECT_ID}/entries?from=YYYYMMDD&to=YYYYMMDD&only_unbilled=yes

Acceptable value for the only_unbilled parameter is yes. Anything else will be ignored.

GET https://YOURACCOUNT.harvestapp.com/projects/{PROJECT_ID}/entries?from=YYYYMMDD&to=YYYYMMDD&is_closed=no

Acceptable values for the is_closed parameter are yes and no.

GET https://YOURACCOUNT.harvestapp.com/projects/{PROJECT_ID}/entries?from=YYYYMMDD&to=YYYYMMDD&updated_since=2010-09-25+18%3A30

Acceptable value for the updated_since parameter is a UTC date time value, URL encoded.

GET https://YOURACCOUNT.harvestapp.com/projects/{PROJECT_ID}/entries?user_id=1334

Still have questions? We’re happy to help!

Contact Us