READ Endpoint Migration Guide
This guide includes updated read endpoints, pagination changes, recommendations for custom integrations, and a clear mapping of v1/v2 resources to their v3 equivalents. It’s designed to help you transition endpoints smoothly and efficiently.
Each table in this article is organized alphabetically and maps specific resources to their v1/v2 routes, the corresponding v3 equivalent, and any additional comments or considerations for those endpoints.
Pagination
In previous versions, pagination was implemented by passing page and per_page parameters. The backend would then use limit and offset to fetch the appropriate records. Additionally, links for next, prev, and last pages were included in the response headers. However, calculating the last page required a count of all matching records, which negatively impacted performance, especially with large datasets.
To address these performance issues, V3 introduces a cursor-based pagination system, eliminating the need for offset. This approach enhances efficiency and scalability.
Key changes in v3 pagination
No page Parameter: The page parameter is no longer supported. You may specify a per_page parameter in the first request only to define the number of records per page.
**Cursor-Based Links: **To navigate between pages, the response headers include cursor-based links:
next: URL for the next page (if available).prev: URL for the previous page (if available).- Note: A
lastlink is no longer provided.
Recommendations for custom integrations
We encourage users of custom integrations to adopt the Client Credentials Flow to familiarize themselves with the new authentication process in Harvest V3.
**Note: **The Client Credentials Flow is not available for Greenhouse partners. Partners must use the Authorization Code Grant Type.
| Activity Feed | |
|---|---|
| V1/V2 route | GET <https://harvest.greenhouse.io/v1/candidates/{id}/activity_feed> |
| V3 route | GET <https://harvest.greenhouse.io/v3/notes> |
| Comments | Change in presentation of the objects where type is used as opposed to separating into various objects, for a more consistent object schema experience across all note types |
| Applications | |
|---|---|
V1/V2 route |
|
V3 route |
GET https://harvest.greenhouse.io/v3/applications GET https://harvest.greenhouse.io/v3/application_stages GET https://harvest.greenhouse.io/v3/prospect_details GET https://harvest.greenhouse.io/v3/prospect_pool_stages GET https://harvest.greenhouse.io/v3/prospect_pools GET https://harvest.greenhouse.io/v3/attachments GET https://harvest.greenhouse.io/v3/sources GET https://harvest.greenhouse.io/v3/users GET https://harvest.greenhouse.io/v3/rejection_details |
Comments |
|
V1/V2 route |
|
V3 route |
GET https://harvest.greenhouse.io/v3/applications GET https://harvest.greenhouse.io/v3/application_stages GET https://harvest.greenhouse.io/v3/prospect_details GET https://harvest.greenhouse.io/v3/prospect_pool_stages GET https://harvest.greenhouse.io/v3/prospect_pools GET https://harvest.greenhouse.io/v3/attachments GET https://harvest.greenhouse.io/v3/sources GET https://harvest.greenhouse.io/v3/users GET https://harvest.greenhouse.io/v3/rejection_details |
Comments |
|
| Approval Flows | |
|---|---|
V1/V2 route |
GET https://harvest.greenhouse.io/v1/jobs/{id}/approval_flows |
V3 route |
GET https://harvest.greenhouse.io/v3/approval_flows GET https://harvest.greenhouse.io/v3/approver_groups |
Comments |
Deprecated Deprecated
|
V1/V2 route |
|
V3 route |
GET https://harvest.greenhouse.io/v3/approval_flows GET https://harvest.greenhouse.io/v3/approver_groups |
Comments |
Deprecated Deprecated
|
V1/V2 route |
GET https://harvest.greenhouse.io/v1/users/{user_id}/pending_approvals |
V3 route |
GET https://harvest.greenhouse.io/v3/approval_flows GET https://harvest.greenhouse.io/v3/approver_groups |
Comments |
Please use the
Deprecated Deprecated
|
| Candidates | |
|---|---|
V1/V2 route |
|
V3 route |
GET https://harvest.greenhouse.io/v3/candidates GET https://harvest.greenhouse.io/v3/applications GET https://harvest.greenhouse.io/v3/attachments GET https://harvest.greenhouse.io/v3/candidate_educations |
Comments |
Deprecated Deprecated Deprecated Recruiter and Coordinator objects have been moved to the Applications object
For brevity, the changes in v1 Application endpoints are not reflected in this entry. Please visit the Application endpoint detail if you were retrieving application-level data from the v1 Candidate endpoint Candidate educations are retrieved via the custom field options endpoint |
V1/V2 route |
|
V3 route |
GET https://harvest.greenhouse.io/v3/candidates GET https://harvest.greenhouse.io/v3/applications GET https://harvest.greenhouse.io/v3/attachments GET https://harvest.greenhouse.io/v3/candidate_educations |
Comments |
Deprecated Deprecated Deprecated Recruiter and Coordinator objects have been moved to the Applications object
For brevity, the changes in v1 Application endpoints are not reflected in this entry. Please visit the Application endpoint detail if you were retrieving application-level data from the v1 Candidate endpoint Candidate educations are retrieved via the custom field options endpoint |
| Candidate Tags | |
|---|---|
| V1/V2 route | GET <https://harvest.greenhouse.io/v1/candidates/{id}/tags> |
| V3 route | GET <https://harvest.greenhouse.io/v3/candidates> |
| Comments | Available in the tags array |
| *** | *** |
| V1/V2 route | GET <https://harvest.greenhouse.io/v1/tags/candidate> |
| V3 route | GET <https://harvest.greenhouse.io/v3/candidate_tags> |
| Comments | No notable changes |
| Close Reasons | |
|---|---|
| V1/V2 route | GET <https://harvest.greenhouse.io/v1/close_reasons> |
| V3 route | <https://harvest.greenhouse.io/v3/close_reasons> |
| Comments | No notable changes |
| Custom Field Options | |
|---|---|
| V1/V2 route | <https://harvest.greenhouse.io/v3/custom_field_options> |
| V3 route | GET <https://harvest.greenhouse.io/v1/custom_field/{id}/custom_field_options> |
| Comments | priority → sort_order |
| Custom Fields | |
|---|---|
V1/V2 route |
|
V3 route |
GET https://harvest.greenhouse.io/v3/custom_fields GET https://harvest.greenhouse.io/v3/custom_field_options GET https://harvest.greenhouse.io/v3/custom_field_offices GET https://harvest.greenhouse.io/v3/custom_field_departments |
Comments |
|
V1/V2 route |
GET https://harvest.greenhouse.io/v1/custom_fields/{field_type} |
V3 route |
GET https://harvest.greenhouse.io/v3/custom_fields GET https://harvest.greenhouse.io/v3/custom_field_options GET https://harvest.greenhouse.io/v3/custom_field_offices GET https://harvest.greenhouse.io/v3/custom_field_departments |
Comments |
Filter by |
V1/V2 route |
|
V3 route |
GET https://harvest.greenhouse.io/v3/custom_fields GET https://harvest.greenhouse.io/v3/custom_field_options GET https://harvest.greenhouse.io/v3/custom_field_offices GET https://harvest.greenhouse.io/v3/custom_field_departments |
Comments |
|
| Demographic Answer Options | |
|---|---|
| V1/V2 route | GET <https://harvest.greenhouse.io/v1/demographics/answer_options> |
| V3 route | GET <https://harvest.greenhouse.io/v3/demographic_answer_options> |
| Comments | Deprecated translations: [] |
| *** | *** |
| V1/V2 route | GET <https://harvest.greenhouse.io/v1/demographics/questions/{id}/answer_options> |
| V3 route | GET <https://harvest.greenhouse.io/v3/demographic_answer_options> |
| Comments | Deprecated translations: [] |
| *** | *** |
| V1/V2 route | GET <https://harvest.greenhouse.io/v1/demographics/answer_options/{id}> |
| V3 route | GET <https://harvest.greenhouse.io/v3/demographic_answer_options> |
| Comments | Deprecated translations: [] |
| Demographic Answers | |
|---|---|
| V1/V2 route | GET <https://harvest.greenhouse.io/v1/demographics/answers> |
| V3 route | GET <https://harvest.greenhouse.io/v3/demographic_answers> |
| Comments | No notable changes |
| *** | *** |
| V1/V2 route | GET <https://harvest.greenhouse.io/v1/applications/{id}/demographics/answers> |
| V3 route | GET <https://harvest.greenhouse.io/v3/demographic_answers> |
| Comments | No notable changes |
| *** | *** |
| V1/V2 route | GET <https://harvest.greenhouse.io/v1/demographics/answers/{id}> |
| V3 route | GET <https://harvest.greenhouse.io/v3/demographic_answers> |
| Comments | No notable changes |
| Demographic Question Sets | |
|---|---|
| V1/V2 route | GET <https://harvest.greenhouse.io/v1/demographics/question_sets> |
| V3 route | <https://harvest.greenhouse.io/v3/demographic_question_sets> |
| Comments | No notable changes |
| *** | *** |
| V1/V2 route | GET <https://harvest.greenhouse.io/v1/demographics/question_sets/{id}> |
| V3 route | https://harvest.greenhouse.io/v3/demographic_question_sets |
| Comments | Deprecated translations: [] |
| Demographic Questions | |
|---|---|
| V1/V2 route | GET <https://harvest.greenhouse.io/v1/demographics/questions> |
| V3 route | <https://harvest.greenhouse.io/v3/demographic_questions> |
| Comments | Deprecated translations: [] |
| *** | *** |
| V1/V2 route | GET <https://harvest.greenhouse.io/v1/demographics/question_sets/{id}/questions> |
| V3 route | <https://harvest.greenhouse.io/v3/demographic_questions> |
| Comments | Deprecated translations: [] |
| *** | |
| V1/V2 route | GET <https://harvest.greenhouse.io/v1/demographics/questions/{id}> |
| V3 route | <https://harvest.greenhouse.io/v3/demographic_questions> |
| Comments | Deprecated translations: [] |
| Departments | |
|---|---|
V1/V2 route |
|
V3 route |
|
Comments |
Deprecated Removed |
V1/V2 route |
|
V3 route |
|
Comments |
Deprecated Removed |
| Educations (Degrees) | |
|---|---|
| V1/V2 route | GET <https://harvest.greenhouse.io/v1/degrees> |
| V3 route | GET <https://harvest.greenhouse.io/v3/custom_field_options?field_key=degree> |
| Comments | Deprecated old endpoint to reflect candidate degrees as a custom field with multiple options |
| Educations (Disciplines) | |
|---|---|
| V1/V2 route | GET <https://harvest.greenhouse.io/v1/disciplines> |
| V3 route | GET <https://harvest.greenhouse.io/v3/custom_field_options?field_key=discipline> |
| Comments | Deprecated old endpoint to reflect candidate disciplines as a custom field with multiple options |
| Educations (Schools) | |
|---|---|
| V1/V2 route | GET <https://harvest.greenhouse.io/v1/schools> |
| V3 route | GET <https://harvest.greenhouse.io/v3/custom_field_options?field_key=school_name> |
| Comments | Deprecated old endpoint to reflect candidate schools as a custom field with multiple options |
| Email Templates | |
|---|---|
| V1/V2 route | GET <https://harvest.greenhouse.io/v1/email_templates> |
| V3 route | GET <https://harvest.greenhouse.io/v3/email_templates> |
| Comments | cc → recipients |
| *** | *** |
| V1/V2 route | GET <https://harvest.greenhouse.io/v1/email_templates/{id}> |
| V3 route | GET <https://harvest.greenhouse.io/v3/email_templates> |
| Comments | cc → recipients |
| EEOC | |
|---|---|
| V1/V2 route | GET <https://harvest.greenhouse.io/v1/eeoc> |
| V3 route | GET <https://harvest.greenhouse.io/v3/eeoc> |
| Comments | No notable changes |
| *** | *** |
| V1/V2 route | GET <https://harvest.greenhouse.io/v1/applications/{id}/eeoc> |
| V3 route | GET <https://harvest.greenhouse.io/v3/eeoc> |
| Comments | No notable changes |
| Future User Job Permissions | |
|---|---|
V1/V2 route |
GET https://harvest.greenhouse.io/v1/users/{id}/permissions/future_jobs |
V3 route |
https://harvest.greenhouse.io/v3/future_job_permissions |
Comments |
| Hiring Team | |
|---|---|
V1/V2 route |
|
V3 route |
|
Comments |
The v3 Job Owners endpoint contains recruiters, coordinators, and sourcers. |
| Job Post Custom Locations | |
|---|---|
| V1/V2 route | GET <https://harvest.greenhouse.io/v1/job_posts/{id}/custom_locations> |
| V3 route | <https://harvest.greenhouse.io/v3/job_board_custom_locations> |
| Comments | Job post custom location id is now in the job board custom locations |
| Job Posts | |
|---|---|
V1/V2 route |
|
V3 route |
https://harvest.greenhouse.io/v3/job_posts |
Comments |
Job post custom location id is now in the job board custom locations Job posts can now have multiple locations |
V1/V2 route |
|
V3 route |
https://harvest.greenhouse.io/v3/job_posts |
Comments |
Job post custom location id is now in the job board custom locations Job posts can now have multiple locations |
V1/V2 route |
|
V3 route |
https://harvest.greenhouse.io/v3/job_posts |
Comments |
Job post custom location id is now in the job board custom locations Job posts can now have multiple locations |
V1/V2 route |
|
V3 route |
https://harvest.greenhouse.io/v3/job_posts |
Comments |
Job post custom location id is now in the job board custom locations Job posts can now have multiple locations |
| Jobs | |
|---|---|
V1/V2 route |
|
V3 route |
GET https://harvest.greenhouse.io/v3/jobs GET https://harvest.greenhouse.io/v3/job_hiring_managers GET https://harvest.greenhouse.io/v3/job_owners GET https://harvest.greenhouse.io/v3/openings |
Comments |
|
V1/V2 route |
|
V3 route |
GET https://harvest.greenhouse.io/v3/jobs GET https://harvest.greenhouse.io/v3/job_hiring_managers GET https://harvest.greenhouse.io/v3/job_owners GET https://harvest.greenhouse.io/v3/openings |
Comments |
|
| Job Stages | |
|---|---|
V1/V2 route |
|
V3 route |
GET https://harvest.greenhouse.io/v3/job_interview_stages GET https://harvest.greenhouse.io/v3/job_interviews GET https://harvest.greenhouse.io/v3/interview_kits |
Comments |
|
V1/V2 route |
|
V3 route |
GET https://harvest.greenhouse.io/v3/job_interview_stages GET https://harvest.greenhouse.io/v3/job_interviews GET https://harvest.greenhouse.io/v3/interview_kits |
Comments |
|
V1/V2 route |
|
V3 route |
GET https://harvest.greenhouse.io/v3/job_interview_stages GET https://harvest.greenhouse.io/v3/job_interviews GET https://harvest.greenhouse.io/v3/interview_kits |
Comments |
|
| Offers | |
|---|---|
V1/V2 route |
|
V3 route |
|
Comments |
|
V1/V2 route |
GET https://harvest.greenhouse.io/v1/applications/{application_id}/offers |
V3 route |
|
Comments |
|
V1/V2 route |
GET https://harvest.greenhouse.io/v1/applications/{application_id}/offers/current_offer |
V3 route |
|
Comments |
Please use the
|
V1/V2 route |
|
V3 route |
|
Comments |
|
| Offices | |
|---|---|
V1/V2 route |
|
V3 route |
|
Comments |
We no longer permit rendering as a tree Deprecated
|
V1/V2 route |
|
V3 route |
|
Comments |
We no longer permit rendering as a tree Deprecated
|
| Openings | |
|---|---|
V1/V2 route |
|
V3 route |
|
Comments |
|
V1/V2 route |
GET https://harvest.greenhouse.io/v1/jobs/{job_id}/openings/{id} |
V3 route |
|
Comments |
|
| Prospect Pools | |
|---|---|
V1/V2 route |
|
V3 route |
|
Comments |
|
V1/V2 route |
|
V3 route |
|
Comments |
| Rejection Reasons | |
|---|---|
| V1/V2 route | GET <https://harvest.greenhouse.io/v1/rejection_reasons> |
| V3 route | <https://harvest.greenhouse.io/v3/rejection_reasons> |
| Comments | No notable changes |
| Scheduled Interviews | |
|---|---|
V1/V2 route |
|
V3 route |
GET https://harvest.greenhouse.io/v3/interviews |
Comments |
We have also introduced |
V1/V2 route |
GET https://harvest.greenhouse.io/v1/applications/{id}/scheduled_interviews |
V3 route |
GET https://harvest.greenhouse.io/v3/interviews |
Comments |
We have also introduced |
V1/V2 route |
GET https://harvest.greenhouse.io/v1/scheduled_interviews/{id} |
V3 route |
GET https://harvest.greenhouse.io/v3/interviews |
Comments |
We have also introduced |
| Sources | |
|---|---|
| V1/V2 route | GET <https://harvest.greenhouse.io/v1/sources> |
| V3 route | GET <https://harvest.greenhouse.io/v3/sources> |
| Comments | No notable changes |
| Tracking Links | |
|---|---|
V1/V2 route |
|
V3 route |
GET https://harvest.greenhouse.io/v3/tracking_links GET https://harvest.greenhouse.io/v3/sources GET https://harvest.greenhouse.io/v3/users GET https://harvest.greenhouse.io/v3/referrers GET https://boards-api.greenhouse.io/v1/boards/{board_token} |
Comments |
Job board data is publicly available, there is no authentication required for job board endpoints. |
| User Job Permissions | |
|---|---|
| V1/V2 route | GET <https://harvest.greenhouse.io/v1/users/{id}/permissions/jobs> |
| V3 route | <https://harvest.greenhouse.io/v3/user_job_permissions> |
| Comments | user_role_id → role_id |
| User Roles | |
|---|---|
| V1/V2 route | GET <https://harvest.greenhouse.io/v1/user_roles> |
| V3 route | GET <https://harvest.greenhouse.io/v3/user_roles> |
| Comments | type → role_type |
| Users | |
|---|---|
V1/V2 route |
|
V3 route |
https://harvest.greenhouse.io/v3/users https://harvest.greenhouse.io/v3/user_emails |
Comments |
|
V1/V2 route |
|
V3 route |
https://harvest.greenhouse.io/v3/users https://harvest.greenhouse.io/v3/user_emails |
Comments |
|
| [Resource] | |
|---|---|
| V1/V2 route | |
| V3 route | |
| Comments |
Updated about 1 month ago