HTTP Basic authentication is the simplest way of interacting with the Harvest API. Requests require a username and password. HTTPS is required for accessing the API.

Making A Request

Here’s an example of interacting with Harvest via XML. To make requests in XML, specify application/xml for your Content-Type and Accept headers. A simple example with curl:

curl -H 'Content-Type: application/xml' -H 'Accept: application/xml' -u ""

Successful requests return HTTP response codes in the 2xx range (e.g. 200, 201, etc.). Other response codes indicate a failed request or missing resource, in which case an error message may be returned.


Request headers need to be set up with the following:

  • Accept: application/xml
  • Content-Type: application/xml
  • Authorization: Basic (insert your authentication string here)

Your authentication string is a base64 encoded version of your credentials. You can generate this in Ruby:


Or in JavaScript:


Testing Requests

Chrome Users: Please use the Postman REST Client to test requests.

Firefox Users: Please use the RestClient plugin to test requests.

Code Examples

<?xml version="1.0" encoding="UTF-8"?>
        <name>Your Harvest Account</name>
        <active type="boolean">true</active>
            <expenses type="boolean">true</expenses>
            <invoices type="boolean">true</invoices>
            <estimates type="boolean">true</estimates>
            <approval type="boolean">true</approval>
        <timezone>Eastern Time (US &amp; Canada)</timezone>
        <timezone-utc-offset type="integer">-18000</timezone-utc-offset>
        <id type="integer">508323</id>
        <admin type="boolean">true</admin>
            <is-project-manager type="boolean">true</is-project-manager>
            <can-see-rates type="boolean">true</can-see-rates>
            <can-create-projects type="boolean">true</can-create-projects>
            <can-create-invoices type="boolean">true</can-create-invoices>
        <timestamp-timers type="boolean">false</timestamp-timers>
    "company": {
        "base_uri": "",
        "full_domain": "",
        "name": "Your Harvest Account",
        "active": true,
        "week_start_day": "Monday",
        "time_format": "decimal",
        "clock": "12h",
        "decimal_symbol": ".",
        "color_scheme": "orange",
        "modules": {
            "expenses": true,
            "invoices": true,
            "estimates": true,
            "approval": true
        "thousands_separator": ",",
        "plan_type": "trial"
    "user": {
        "timezone": "Eastern Time (US & Canada)",
        "timezone_identifier": "America/New_York",
        "timezone_utc_offset": -18000,
        "id": 508343,
        "email": "",
        "admin": true,
        "first_name": "Test",
        "last_name": "User",
        "avatar_url": "/assets/profile_images/big_ben.png?14405182",
        "project_manager": {
            "is_project_manager": true,
            "can_see_rates": true,
            "can_create_projects": true,
            "can_create_invoices": true
        "timestamp_timers": false