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

Expenses

Show all expense categories

GET /expense_categories

HTTP Response: 200 Success
<expense-categories>
  <expense-category>
    <name>Mileage</name>
    <!-- unit values only populated for Mileage -->
    <unit-name>Miles</unit-name>
    <unit-price>0.485</unit-price>
    <!-- If true no expenses can be logged to this category -->
    <deactivated>false</deactivated>
  </expense-category>
  <expense-category>
     ...
  </expense-category>
  ...
</expense-categories>

Create new expense category

POST /expense_categories

HTTP Response: 201 Created
Location: /expense_categories/#{new_expense_category_id}

Sample post:

<expense-category>
  <name>Entertainment</name>
</expense-category>

Update an existing expense category

PUT /expense_categories/#{expense_category_id}

HTTP Response: 200 OK
Location: /expense_categories/#{expense_category_id}

Sample put:

<expense-category>
  <name>Lodging</name>
</expense-category>

Delete existing expense category

DELETE /expense_categories/#{expense_category_id}

HTTP Response: 200 OK is returned if expense category does not have any reported expenses associated.
HTTP Response: 400 Bad Request is returned if expense category is not removable.