Client Contacts
The contact object
| Attribute | Type | Description | 
|---|---|---|
id | 
      integer | Unique ID for the contact. | 
client | 
      object | An object containing the contact’s client id and name. | 
title | 
      string | The title of the contact. | 
first_name | 
      string | The first name of the contact. | 
last_name | 
      string | The last name of the contact. | 
email | 
      string | The contact’s email address. | 
phone_office | 
      string | The contact’s office phone number. | 
phone_mobile | 
      string | The contact’s mobile phone number. | 
fax | 
      string | The contact’s fax number. | 
created_at | 
      datetime | Date and time the contact was created. | 
updated_at | 
      datetime | Date and time the contact was last updated. | 
Required permissions
You must be an Administrator or Manager with permission to create and edit clients in order to interact with the /v2/contacts endpoint. Insufficient permissions will result in a 403 Forbidden status code.
List all contacts
Returns a list of your contacts. The contacts are returned sorted by creation date, with the most recently created contacts appearing first.
The response contains an object with a contacts property that contains an array of up to per_page contacts. Each entry in the array is a separate contact object. If no more contacts are available, the resulting array will be empty. Several additional pagination properties are included in the response to simplify paginating your contacts.
GET /v2/contacts
| Parameter | Type | Description | 
|---|---|---|
client_id | 
      integer | Only return contacts belonging to the client with the given ID. | 
updated_since | 
      datetime | Only return contacts that have been updated since the given date and time. | 
page | 
      integer | DEPRECATED The page number to use in pagination. For instance, if you make a list request and receive 2000 records, your subsequent call can include page=2 to retrieve the next page of the list. (Default: 1) | 
    
per_page | 
      integer | The number of records to return per page. Can range between 1 and 2000. (Default: 2000) | 
page parameter.
  For more information, visit the pagination guide.
Example requests
We have a collection of API requests in Postman that makes it easy to try this out. Click here to learn more!
curl "https://api.harvestapp.com/v2/contacts" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Harvest-Account-Id: $ACCOUNT_ID" \
  -H "User-Agent: MyApp ([email protected])"
Example responses
<?xml version="1.0" encoding="UTF-8"?>
<contacts type="array">
    <contact>
        <id type="integer">4706479</id>
        <client-id type="integer">5735774</client-id>
        <title>Owner</title>
        <first-name>Jane</first-name>
        <last-name>Doe</last-name>
        <email>[email protected]</email>
        <phone-office>(203) 697-8885</phone-office>
        <phone-mobile>(203) 697-8886</phone-mobile>
        <fax>(203) 697-8887</fax>
        <created-at type="dateTime">2013-08-12T15:30:14Z</created-at>
        <updated-at type="dateTime">2015-04-16T18:07:28Z</updated-at>
    </contact>
    <contact>
        <id type="integer">4706453</id>
        <client-id type="integer">5735776</client-id>
        <title>Manager</title>
        <first-name>Richard</first-name>
        <last-name>Roe</last-name>
        <email>[email protected]</email>
        <phone-office>(318) 515-5905</phone-office>
        <phone-mobile>(318) 515-5906</phone-mobile>
        <fax>(318) 515-5907</fax>
        <created-at type="dateTime"></created-at>
        <updated-at type="dateTime"></updated-at>
    </contact>
</contacts>{
  "contacts":[
    {
      "id":4706479,
      "title":"Owner",
      "first_name":"Jane",
      "last_name":"Doe",
      "email":"[email protected]",
      "phone_office":"(203) 697-8885",
      "phone_mobile":"(203) 697-8886",
      "fax":"(203) 697-8887",
      "created_at":"2017-06-26T21:20:07Z",
      "updated_at":"2017-06-26T21:27:07Z",
      "client":{
        "id":5735774,
        "name":"ABC Corp"
      }
    },
    {
      "id":4706453,
      "title":"Manager",
      "first_name":"Richard",
      "last_name":"Roe",
      "email":"[email protected]",
      "phone_office":"(318) 515-5905",
      "phone_mobile":"(318) 515-5906",
      "fax":"(318) 515-5907",
      "created_at":"2017-06-26T21:06:55Z",
      "updated_at":"2017-06-26T21:27:20Z",
      "client":{
        "id":5735776,
        "name":"123 Industries"
      }
    }
  ],
  "per_page":2000,
  "total_pages":1,
  "total_entries":2,
  "next_page":null,
  "previous_page":null,
  "page":1,
  "links":{
    "first":"https://api.harvestapp.com/v2/contacts?page=1&per_page=2000",
    "next":null,
    "previous":null,
    "last":"https://api.harvestapp.com/v2/contacts?page=1&per_page=2000"
  }
}Retrieve a contact
Retrieves the contact with the given ID. Returns a contact object and a 200 OK response code if a valid identifier was provided.
GET /v2/contacts/{CONTACT_ID}
Example requests
We have a collection of API requests in Postman that makes it easy to try this out. Click here to learn more!
curl "https://api.harvestapp.com/v2/contacts/4706479" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Harvest-Account-Id: $ACCOUNT_ID" \
  -H "User-Agent: MyApp ([email protected])"
Example responses
<?xml version="1.0" encoding="UTF-8"?>
<contacts type="array">
    <contact>
        <id type="integer">4706479</id>
        <client-id type="integer">5735774</client-id>
        <title>Owner</title>
        <first-name>Jane</first-name>
        <last-name>Doe</last-name>
        <email>[email protected]</email>
        <phone-office>(203) 697-8885</phone-office>
        <phone-mobile>(203) 697-8886</phone-mobile>
        <fax>(203) 697-8887</fax>
        <created-at type="dateTime">2013-08-12T15:30:14Z</created-at>
        <updated-at type="dateTime">2015-04-16T18:07:28Z</updated-at>
    </contact>
</contacts>{
  "id":4706479,
  "title":"Owner",
  "first_name":"Jane",
  "last_name":"Doe",
  "email":"[email protected]",
  "phone_office":"(203) 697-8885",
  "phone_mobile":"(203) 697-8886",
  "fax":"(203) 697-8887",
  "created_at":"2017-06-26T21:20:07Z",
  "updated_at":"2017-06-26T21:27:07Z",
  "client":{
    "id":5735774,
    "name":"ABC Corp"
  }
}Create a contact
Creates a new contact object. Returns a contact object and a 201 Created response code if the call succeeded.
POST /v2/contacts
| Parameter | Type | Required | Description | 
|---|---|---|---|
client_id | 
      integer | required | The ID of the client associated with this contact. | 
title | 
      string | optional | The title of the contact. | 
first_name | 
      string | required | The first name of the contact. | 
last_name | 
      string | optional | The last name of the contact. | 
email | 
      string | optional | The contact’s email address. | 
phone_office | 
      string | optional | The contact’s office phone number. | 
phone_mobile | 
      string | optional | The contact’s mobile phone number. | 
fax | 
      string | optional | The contact’s fax number. | 
Example requests
We have a collection of API requests in Postman that makes it easy to try this out. Click here to learn more!
curl "https://api.harvestapp.com/v2/contacts" \
  -H "Harvest-Account-Id: $ACCOUNT_ID" \
  -H "User-Agent: MyApp ([email protected])" \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"client_id":5735776,"first_name":"George","last_name":"Frank","email":"[email protected]"}'
Example responses
<?xml version="1.0" encoding="UTF-8"?>
<contacts type="array">
    <contact>
        <id type="integer">4706510</id>
        <client-id type="integer">5735776</client-id>
        <title>null</title>
        <first-name>George</first-name>
        <last-name>Frank</last-name>
        <email>[email protected]</email>
        <phone-office></phone-office>
        <phone-mobile></phone-mobile>
        <fax></fax>
        <created-at type="dateTime">2019-06-26T21:44:57Z</created-at>
        <updated-at type="dateTime">2019-06-26T21:44:57Z</updated-at>
    </contact>
</contacts>{
  "id":4706510,
  "title":null,
  "first_name":"George",
  "last_name":"Frank",
  "email":"[email protected]",
  "phone_office":"",
  "phone_mobile":"",
  "fax":"",
  "created_at":"2019-06-26T21:44:57Z",
  "updated_at":"2019-06-26T21:44:57Z",
  "client":{
    "id":5735776,
    "name":"123 Industries"
  }
}Update a contact
Updates the specific contact by setting the values of the parameters passed. Any parameters not provided will be left unchanged. Returns a contact object and a 200 OK response code if the call succeeded.
PATCH /v2/contacts/{CONTACT_ID}
| Parameter | Type | Description | 
|---|---|---|
client_id | 
      integer | The ID of the client associated with this contact. | 
title | 
      string | The title of the contact. | 
first_name | 
      string | The first name of the contact. | 
last_name | 
      string | The last name of the contact. | 
email | 
      string | The contact’s email address. | 
phone_office | 
      string | The contact’s office phone number. | 
phone_mobile | 
      string | The contact’s mobile phone number. | 
fax | 
      string | The contact’s fax number. | 
Example requests
We have a collection of API requests in Postman that makes it easy to try this out. Click here to learn more!
curl "https://api.harvestapp.com/v2/contacts/4706510" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Harvest-Account-Id: $ACCOUNT_ID" \
  -H "User-Agent: MyApp ([email protected])" \
  -X PATCH \
  -H "Content-Type: application/json" \
  -d '{"title":"Owner"}'
Example responses
<contacts type="array">
    <contact>
        <id type="integer">4706510</id>
        <client-id type="integer">5735776</client-id>
        <title>Owner</title>
        <first-name>George</first-name>
        <last-name>Frank</last-name>
        <email>[email protected]</email>
        <phone-office></phone-office>
        <phone-mobile></phone-mobile>
        <fax></fax>
        <created-at type="dateTime">2019-06-26T21:44:57Z</created-at>
        <updated-at type="dateTime">2019-06-26T21:44:57Z</updated-at>
    </contact>
</contacts>{
  "id":4706510,
  "title":"Owner",
  "first_name":"George",
  "last_name":"Frank",
  "email":"[email protected]",
  "phone_office":"",
  "phone_mobile":"",
  "fax":"",
  "created_at":"2019-06-26T21:44:57Z",
  "updated_at":"2019-06-26T21:44:57Z",
  "client":{
    "id":5735776,
    "name":"123 Industries"
  }
}Delete a contact
Delete a contact. Returns a 200 OK response code if the call succeeded.
DELETE /v2/contacts/{CONTACT_ID}
Example requests
We have a collection of API requests in Postman that makes it easy to try this out. Click here to learn more!
curl "https://api.harvestapp.com/v2/contacts/4706510" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Harvest-Account-Id: $ACCOUNT_ID" \
  -H "User-Agent: MyApp ([email protected])" \
  -X DELETE