Permissions: —

Product tier: Available to Pro subscription tier

Audit log offers a record of important events in your Greenhouse Recruiting environment from the previous 30 days. You can access audit log with Greenhouse API. 

Note: Harvest API v1/v2 was deprecated and is no longer available as of August 31, 2026. Use Harvest API v3 to set up audit log with API.

Tip: Check out our developer resources for detailed technical information on audit log API.

Access audit log

Configure API credentials

To access audit log with API, you need Harvest v3 OAuth credentials with permission to audit log data. Create new credentials, or manage permissions on existing Harvest v3 credentials.

Note: To create or manage API credentials, you need to be a Basic user or above who can manage all of your organization's API credentials.

To configure Harvest v3 credentials, click the Configure Configure-icon.png icon on your navigation bar, then click Dev Center on the left.

Screenshot-of-Configure_Dev-Center.png

Click API Credential Management.

The Dev Center page shows the API Credential Management button highlighted in the middle in a marigold emphasis box.png

Click Create new API credentials, or hover over existing Harvest v3 credentials to click the Edit icon.

API Credential Management page showing the Create new API credentials button

Make the following selections:

  • API type: Choose Harvest v3 (OAuth).
  • Partner: Select the name of the integration that requested the credentials. If the integration isn't listed, select unlisted vendor. If you're creating a custom integration, select custom.
  • Description: Give the credentials a descriptive name.

Note: Create the credentials using an Integration System User (ISU) account instead of a personal user account. A personal account ties the credentials to that person — if they're later deactivated, the integration breaks. See Create an ISU for an integration.

Click Save, then click View and store credentials to generate the client key and client secret.

Copy the client key and client secret to a secure location for use in the next step, then click I have stored the client credentials.

Under Manage scopes, check to include Audit log (plus any other permissions your integration needs). If an integration requested these credentials, confirm the exact permissions it requires before assigning them; providing permission to your data is similar to assigning a user access to that data in-app. Learn more at Manage Harvest API key permissions.

Authenticate

Next, use your client key and client secret to make a request to POST https://auth.greenhouse.io/token. Use Basic auth with your client key and client secret, and set grant_type to client_credentials. Use HTTPS for your request or you'll receive an error.

HTTP request

curl -X POST 'https://auth.greenhouse.io/token' \
  -u '{client_id}:{client_secret}' \
  -d 'grant_type=client_credentials'

In the response, you'll receive an access token, its type, and its expiration date. Use the access token as a bearer token to authenticate your requests to audit log API.

{
   "token_type": "Bearer",
   "access_token": "eyJhbGciOiJSUzI1NiJ9...",
   "expires_at": "2026-09-25T16:38:46Z"
}

With your valid access token, you can make an audit log request.

Note: Access tokens expire in 1 hour. To programmatically make requests to audit log, you need to programmatically make requests for access tokens.

Tip: Learn more about generating an OAuth token.

Make an audit log request

Make a request to audit log using the endpoint GET https://auditlog.us.greenhouse.io/events/. Use an authorization header bearing your temporary access token. Use HTTPS for your request or you'll receive an error. 

HTTP request

curl -X GET 'https://auditlog.us.greenhouse.io/events/'
-H "Content-Type: application/json"
-H "Authorization: Bearer MeyJhbGci.eyJhdWQiO"

You'll receive a payload containing audit log results for the previous 30 days for your organization. 

{
"hits": 2,
"results": [
{
     "request": {
        "id": "1234zID",
        "type": "custom_fields#update"
     },
     "performer": {
        "meta": {
            "name": "Allison Jamie",
            "username": "allison.j@omniva-corp.com"
     },
         "id": 12345,
         "ip_address": "192.168.0.1",
         "type": "user"
     },
     "organization_id": 123,
     "event": {
          "meta": null,
          "target_type": "Custom Option Created",
          "type": "action"
     },
      "event_time": "2023-06-02T16:06:19.217Z"
},
{
      "request": {
          "id": "1234zID",
          "type": "custom_fields#update"
     },
     "performer": {
         "id": "12345",
         "meta": "Not found",
            "name": "Allison Jamie",
            "username": "allison.j@omniva-corp.com"
     },
         "id": 12345,
         "ip_address": "192.168.0.1",
         "type": "user"
     },
      "organization_id": 123,
         "meta": {
           "custom_field_id": 15436,
           "name": "Certification",
           "active": true,
           "id": 28881005002,
           "priority": 5
     },
        "target_type": "CustomFieldOption",
        "target_id": 15436,
        "type": "data_change_create"
     },
        "event_time": "2023-06-02T16:06:19.137Z"
}
]
}

Use pagination with your query if you have many audit log results and need to retrieve the next page.

A single event in Greenhouse Recruiting, like "Single Sign-On Changed," may return multiple audit log results. Link an event and its subsequent changes with the request_ids query parameter to dig further into an event. Linked results will include event details, or before and after values, in the event_meta attributes. Learn more about the payload structure.

Query parameters

You can use and combine optional query parameters to further refine your requests:

Query parameters
paging Use this parameter for paginating audit log results. When set to true, audit log returns a PIT (point in time) header that can be used to retrieve the next page of audit log results.
before_time Use this parameter to retrieve audit log results before a certain point in time, represented in ISO-8601 format like 2024-02-03T16:38:46.985Z. This parameter can be combined with after_time for a date range.
after_time Use this parameter to retrieve audit log results after a certain point in time, represented in ISO-8601 format like 2024-02-03T16:38:46.985Z. This parameter can be combined with before_time for a date range.
date Use this parameter to retrieve audit log results from a specific date, like 2024-02-03.
magic_time Use the magic time parameter to retrieve audit log results from a trailing range in time. This parameter takes a value in last{#x} where # is a number and x is seconds, minutes, hours, days, or weeks, like last7days or last15minutes.
performer_ids Use this parameter to retrieve audit log results matching one or more performer IDs, which are Greenhouse Recruiting user IDs. Separate multiple IDs by a comma.
performer_types Use this parameter to retrieve audit log results matching one or more performer types: user, api_key, or greenhouse_internal. Separate multiple performer types by a comma.
performer_ip_addresses Use this parameter to retrieve audit log results matching one or more performer IP addresses. Separate multiple IP addressess by a comma.
event_types Use this parameter to retrieve audit log results matching one or more event types: data_change_update, data_change_create, data_change_destroy, harvest_access, or action. Separate multiple event types by a comma.
event_target_ids Use this parameter to retrieve audit log results matching one or more event target IDs, which reflect the element that was created, edited or accessed. Separate multiple event target IDs by a comma.
event_target_types Use this parameter to retrieve audit log results matching one or more event target types. Check out the audit log glossary for a list of expected events. Separate multiple event target types by a comma.
request_ids Use this parameter to retrieve audit log results matching one or more request IDs. A single event in audit log may return multiple results. An event and its resulting changes can be linked by request ID. Separate multiple request IDs by a comma.
request_types Use this parameter to retrieve audit log results matching one or more request types. Separate multiple request types by a comma.

Check out example queries and learn more about what to expect in your audit log data.

Tip: Our developer resources include detailed information to help your development teams and system integrators make requests to audit log API successfully.