API Documentation

Time Tracking

Extended REST API
Clients
Projects
Tasks
People
Expenses
Expense Tracking
User Assignment
Task Assignment
Reports
Invoices
Invoice Messages
Invoice Payments
Invoice Categories


Questions?
Email support@getharvest.com

Clients

Get all clients

GET /clients

HTTP Response: 200 Success
<clients>
  <client>
    <id type="integer">11072</id>
    <name>SuprCorp</name>
    <active>true</active>
    <details>123 Main St.
Third Floor
New York, NY 10011
USA
212-555-1212
212-555-1213 (fax)
http://www.company.com</details>
  </client>
  <client>
   ...
  </client>
</clients>

Get a client

GET /clients/#{client_id}

HTTP Response: 200 Success
<client>
  <id type="integer">11072</id>
  <name>SuprCorp</name>
  <active>true</active>
  <details>123 Main St.
Third Floor
New York, NY 10011
USA
212-555-1212
212-555-1213 (fax)
http://www.company.com</details>
</client>

Create a new client

POST /clients

HTTP Response: 201 Created
Location: /clients/#{new_client_id}

You need to post the following:

<client>
  <name>Company LLC</name>
  <details>123 Main St.
Third Floor
New York, NY 10011
USA
212-555-1212
212-555-1213 (fax)
http://www.company.com</details>
</client>
Note: Only NAME is required.
Update client

PUT /client/#{client_id}

HTTP Response: 200 OK

You can update select attributes for a client.

<client>
  <name>Company LLC</name>
  <details>123 Main St.
Third Floor
New York, NY 10011
USA
212-555-1212
212-555-1213 (fax)
http://www.company.com</details>
</client>


(De)Activate an existing client

PUT /clients/#{client_id}/toggle

HTTP Response: 200 Success
Location: /clients/#{client_id}

Note that if the client has active projects, Harvest will return HTTP Response: 400 Bad Request, with a Hint header.


Delete a client

DELETE /client/#{client_id}

If client does not have associated projects or invoices Harvest deletes it and returns HTTP Response: 200 OK otherwise client is not deleted and you'll get a HTTP Response: 400 Bad Request .