API Documentation

The Eightfold API provides programmatic access to the Eightfold application. Software developers will be able to build applications leveraging the core Eightfold platform.

Why Rest?

REST provides better features, faster development, and scalable operations.

Better features:

  • REST is simpler, faster, and supports more data formats like JSON.
  • For that reason it uses less bandwidth and is more compatible with more browser clients.
  • Request and response are better structured.
  • Response have related data to enable subsequent navigation requests.
  • Updates to individual fields instead of posting the entire record.
  • Responses can do search and filter in batch.

Faster development and scalable operations:

  • Integration code builds faster.
  • Browsers including mobile browser can support integrations.
  • REST is scalable and stateless.

Authentication

The Eightfold API v2 service is a set of APIs on a separate endpoint than Eightfold API v1. This API service exposes Eightfold core data entities through RESTful APIs. To enable customer integrations, these APIs can be used both to inject and fetch data from Eightfold and other ATS, HRIS, and LMS ecosystems.

📘

How to Enable OAuth for an API Server

Read the step-by-step guide here.

API v1 and v2 comparison

This section describes the main differences between Eightfold API v1 and API v2.

1. Core Eightfold entities are now exposed through the API layer

All core Eightfold entities are now exposed through the API layer, along with ATS and HRIS entities. This enables users to directly create these entities (for example, profiles) without any ATS or HRIS data. This helps users build independent systems on top of the Eightfold ecosystem without a need for another system.

2. All the APIs are now RESTful

RESTful APIs allow Eightfold APIs to be format agnostic. Because there is an independent client and server, Eightfold API v2 is more globally standardized and easier to consume as compared to v1.

3. Support for PATCH operations

Eightfold API v2 supports PATCH operations on most of our entities, a functionality that was not supported in v1. This allows users to only update what's changed, increasing efficiency for change management.

4. Rich entity schema

The API v2 entity schema is richer than v1, allowing for more information and better control during integration with Eightfold systems.

5. Async update support

Support for async updates enables users to post an update and asynchronous return to check the status of the update. This gives more flexibility to users and also allows them to verify data consistency.

6. Name spacing in APIs

Name spacing of the APIs in v2 allows users to quickly discover entities and capabilities. This increases ease-of-use for consuming APIs.

Top level differences in API v1 and v2 APIs

For a quick summary of the v2 APIs in comparison to v1 APIs please refer to the below table. The table summarizes the function of the API entities.

EntityActionsV1 - URLV1- DocumentationV2-URLV2-DocumentationV2- Is Async?API v2 vs V1 Schema comparison
ProfilePOSThttps://api.eightfold.ai/v1/candidatehttps://apidocs.eightfold.ai/reference/post_candidate_posthttps://apiv2.eightfold.ai/api/v2/core/profileshttps://apidocs.eightfold.ai/v2.0/reference/create_profileTrueProfile Schema
ProfileGEThttps://api.eightfold.ai/v1/candidate/{profile_id}https://apidocs.eightfold.ai/reference/get_candidate_by_idhttps://apiv2.eightfold.ai/api/v2/core/profiles/{profileId}https://apidocs.eightfold.ai/v2.0/reference/get_profile_by_idFalseProfile Schema
ProfilePUTNANAhttps://apiv2.eightfold.ai/api/v2/core/profiles/{profileId}https://apidocs.eightfold.ai/v2.0/reference/update_profileTrueProfile Schema
ProfilePATCHNANAhttps://apiv2.eightfold.ai/api/v2/core/profiles/{profileId}https://apidocs.eightfold.ai/v2.0/reference/patch_profileTrueProfile Schema
ProfileLISThttps://api.eightfold.ai/v1/candidate/searchhttps://apidocs.eightfold.ai/reference/get_candidate_searchhttps://apiv2.eightfold.ai/api/v2/core/profileshttps://apidocs.eightfold.ai/v2.0/reference/list_profileFalseProfile Schema
ProfileMatch Positionshttps://api.eightfold.ai/v1/candidate/{profile_id}/matched-jobshttps://apidocs.eightfold.ai/reference/get_matched_jobs_for_candidatehttps://apiv2.eightfold.ai/api/v2/core/profiles/{profileId}/matched-positionshttps://apidocs.eightfold.ai/v2.0/reference/list_profile_matched_positionsFalseMatch Positions
ProfileDELETEhttps://api.eightfold.ai/v1/candidate/{profile_id}https://apidocs.eightfold.ai/reference/delete_candidate_by_idhttps://apiv2.eightfold.ai/api/v2/core/profiles/{profileId}https://apidocs.eightfold.ai/v2.0/reference/delete_profileTrueProfile Schema
EmployeeGEThttps://api.eightfold.ai/v1/employee/{email_id}https://apidocs.eightfold.ai/reference/get_employee_by_emailhttps://apiv2.eightfold.ai/api/v2/core/ats-systems/{system_id}/hris-employees/{unique_identifier}https://apidocs.eightfold.ai/v2.0/reference/get_hris_employee_by_idFalseEmployee
PositionGEThttps://api.eightfold.ai/v1/position/{position_id}https://apidocs.eightfold.ai/reference/get_position_by_idhttps://apiv2.eightfold.ai/api/v2/core/positions/{positionId}https://apidocs.eightfold.ai/v2.0/reference/get_position_by_idFalsePosition Schema
PositionPUTNANAhttps://apiv2.eightfold.ai/api/v2/core/positions/{positionId}https://apidocs.eightfold.ai/v2.0/reference/update_positionFalsePosition Schema
PositionPATCHNANAhttps://apiv2.eightfold.ai/api/v2/core/positions/{positionId}https://apidocs.eightfold.ai/v2.0/reference/patch_positionFalsePosition Schema
PositionLISThttps://api.eightfold.ai/v1/position/searchhttps://apidocs.eightfold.ai/reference/get_position_searchhttps://apiv2.eightfold.ai/api/v2/core/positionshttps://apidocs.eightfold.ai/v2.0/reference/list_positionFalsePosition Schema
PositionPOSThttps://api.eightfold.ai/v1/positionhttps://apidocs.eightfold.ai/reference/post_position_posthttps://apiv2.eightfold.ai/api/v2/core/positionshttps://apidocs.eightfold.ai/v2.0/reference/create_positionFalsePosition Schema
PositionMatch Candidateshttps://api.eightfold.ai/v1/position/{job_position_id}/matched-candidateshttps://apidocs.eightfold.ai/reference/get_matched_candidateshttps://apiv2.eightfold.ai/api/v2/core/positions/{positionId}/matched-candidateshttps://apidocs.eightfold.ai/v2.0/reference/list_position_matched_candidatesFalsePosition Schema
PositionMatch Applicationshttps://api.eightfold.ai/v1/position/{job_position_id}/applicantshttps://apidocs.eightfold.ai/reference/get_applicantshttps://apiv2.eightfold.ai/api/v2/core/position/{positionId}/applicantshttps://apidocs.eightfold.ai/v2.0/reference/list_position_applicantsFalseMatched Applicants Schema
ATS CandidateGETNANAhttps://apiv2.eightfold.ai/api/v2/core/ats-systems/{systemId}/ats-candidates/{atsCandidateId}https://apidocs.eightfold.ai/v2.0/reference/get_ats_candidate_by_idFalseATS Candidate Schema
ATS CandidatePUTNANAhttps://apiv2.eightfold.ai/api/v2/core/ats-systems/{systemId}/ats-candidates/{atsCandidateId}https://apidocs.eightfold.ai/v2.0/reference/update_ats_candidateTrueATS Candidate Schema
ATS CandidatePATCHNANAhttps://apiv2.eightfold.ai/api/v2/core/ats-systems/{systemId}/ats-candidates/{atsCandidateId}https://apidocs.eightfold.ai/v2.0/reference/patch_ats_candidateTrueATS Candidate Schema
ATS CandidateLISTNANAhttps://apiv2.eightfold.ai/api/v2/core/ats-systems/{systemId}/ats-candidateshttps://apidocs.eightfold.ai/v2.0/reference/list_ats_candidateFalseATS Candidate Schema
ATS CandidatePOSTNANAhttps://apiv2.eightfold.ai/api/v2/core/ats-systems/{systemId}/ats-candidateshttps://apidocs.eightfold.ai/v2.0/reference/create_ats_candidateTrueATS Candidate Schema
ATS PositionGETNANAhttps://apiv2.eightfold.ai/api/v2/core/ats-systems/{systemId}/ats-positions/{atsPositionId}https://apidocs.eightfold.ai/v2.0/reference/get_ats_position_by_idFalseATS Position Schema
ATS PositionPUTNANAhttps://apiv2.eightfold.ai/api/v2/core/ats-systems/{systemId}/ats-positions/{atsPositionId}https://apidocs.eightfold.ai/v2.0/reference/update_ats_positionFalseATS Position Schema
ATS PositionPATCHNANAhttps://apiv2.eightfold.ai/api/v2/core/ats-systems/{systemId}/ats-positions/{atsPositionId}https://apidocs.eightfold.ai/v2.0/reference/patch_ats_positionFalseATS Position Schema
ATS PositionLISTNANAhttps://apiv2.eightfold.ai/api/v2/core/ats-systems/{systemId}/ats-positionshttps://apidocs.eightfold.ai/v2.0/reference/list_ats_positionFalseATS Position Schema
ATS PositionPOSTNANAhttps://apiv2.eightfold.ai/api/v2/core/ats-systems/{systemId}/ats-positionshttps://apidocs.eightfold.ai/v2.0/reference/create_ats_positionFalseATS Position Schema
CourseGETNANAhttps://apiv2.eightfold.ai/api/v2/core/courses/{courseId}https://apidocs.eightfold.ai/v2.0/reference/get_course_by_idFalseCourse Schema
CourseLISTNANAhttps://apiv2.eightfold.ai/api/v2/core/courseshttps://apidocs.eightfold.ai/v2.0/reference/list_courseFalseCourse Schema
CoursePOSTNANAhttps://apiv2.eightfold.ai/api/v2/core/courseshttps://apidocs.eightfold.ai/v2.0/reference/create_courseFalseCourse Schema
EventsGEThttps://api.eightfold.ai/v1/events/open/listhttps://apidocs.eightfold.ai/reference/get_planned_event_searchhttps://apiv2.eightfold.ai/api/v2/events/planned-eventshttps://apidocs.eightfold.ai/v2.0/reference/list_planned_eventsFalseEvents Schema
InsightsGEThttps://api.eightfold.ai/v1/insights/candidateshttps://apidocs.eightfold.ai/reference/get_candidate_insightshttps://apiv2.eightfold.ai/api/v2/insights/profile-insightshttps://apidocs.eightfold.ai/v2.0/reference/list_insightsFalseInsights Schema
InsightsPOSThttps://api.eightfold.ai/v1/insights/talent-traitshttps://apidocs.eightfold.ai/reference/post_talent_traitshttps://apiv2.eightfold.ai/api/v2/insights/talent-traitshttps://apidocs.eightfold.ai/v2.0/reference/create_insights_talent_traitsFalseInsights Schema
Join Talent PoolPOSThttps://api.eightfold.ai/v1/candidate/talent-poolhttps://apidocs.eightfold.ai/reference/post_join_talent_poolhttps://apiv2.eightfold.ai/api/v2/smartapply/talent-poolhttps://apidocs.eightfold.ai/v2.0/reference/create_talent_poolFalseJoin Talent Pool Schema
OAuthUsersGEThttps://api.eightfold.ai/v1/oauthusers/calendarhttps://apidocs.eightfold.ai/reference/get_calendarNANAFalse

API v2 uses OAuth 2.0 authentication, making it more secure. This allows our clients to satisfy a high level of security compliance standards.

API service V2 FAQs

Here are the frequently asked questions related to API v2 Services

1. Can we continue using the Eightfold API v1 service?

Existing customers can continue using API service v1 until they can make the necessary changes to migrate to v2. We recommend moving to v2 as soon as possible to be able to use the full API service capabilities of Eightfold.

2. Will feature enhancements be supported for v1 for existing APIs?

Mostly no. We will avoid enhancing any feature of Eightfold API v1 and are moving API v1 servie to deprecated support. For critical scenarios, customers can engage with the team to assess their use case.

3. Will there be support for bug fixes on v1?

Yes, we will give standard support, which we are providing currently with bug fixes, until the v1 deprecation.

4. What is the approximate timeline for depreciation of v1?

The team is estimating a complete deprecation of the Eightfold v1 API service by end-of-year 2022.

5. Does API v2 have a similar rate limitation of APIs as there was in API v1?

Yes, Eightfold API v1 and v2 have similar rate limitations of the individual APIs.

Best Practices

We list below a few best practices to help you in your development:

  • Include HTTP headers: Content-Type, Content-Length, and Request-Id. Request-Id will help us in preventing duplication of ingestion.
  • Chunk large payloads: Payloads larger than 15 MB will result in HTTP 413 error RequestEntityTooLarge. Chunk the request so that the payload is under this limit.
  • Retry requests: Successful submissions will return 200 OK. Retry the request on error approximately 3 times with a sleep of 10 seconds.
  • Daily batch updates: Send updates for all open positions in a daily batch updates to ensure no updates are missed.

API Limits

API Rate Limits and Throttling
Eightfold supports 100 requests per minute for an account. After this limit, Eightfold will respond with a HTTP 429 Too Many Requests error.
For some endpoints that return multiple records such as Candidates:Get Matching Jobs, Employee:Get Matching Jobs by Email, Position:Get Matching Candidates, Position:Get Applicants and Search Candidates, the rate limit is 20 requests per minute for an account.

Pagination
Eightfold supports the start and limit parameters in listing type APIs. The API response will return a maximum of 100 results per page. The default is 5 results in a response.
Eightfold returns a maximum of 100,000 results for applicants and candidate searches sorted by Eightfold profile ID, and 1000 results for Match Score based APIs such as matching leads. Specifically, the start and limit parameters should be no higher than the maximum allowed.

The filterQuery parameter

Eightfold API such as Search Candidate, Search Position, and Get Applicants support the filterQuery parameter.

  1. Boolean operators such as (), AND, OR, and negation are supported.
  2. Timestamps are in epoch time for example 1599879364 for September 12, 2020 2:56:04 AM UTC.
  3. Time ranges can be specified as [1599879364 TO *] for time after the timestamp, [* TO 1599879364] for times before the timestamp, or [1598879364 TO 1599879364] for times in between timestamps

Here is an example to search for candidates saved for a position with ID 1234 but have not applied or been contacted.
(savedFor:1234 AND (-contactedFor:1234 OR -appliedFor:1234))

Candidate field query parameters are listed below.

Candidate Field Query ParamDescription
appliedForThe Eightfold ID of the position to which the candidate has applied.
contactedForThe Eightfold ID of the position for which the candidate has been contacted.
savedForThe Eightfold ID of the position to which the candidate has been saved.
candidateInsightsValid values are employee or alumni.
profileUrlsURLs of the profile such as their LinkedIn, GitHub, or other if provided.
firstNameFirst name of the Candidate.
lastNameLast name of the Candidate.
atsEntityIdId of the Candidate in ATS system.
titleCurrent job title of the Candidate.
workCurrent company name of the Candidate.
stageCurrent Application stage of the Candidate for any position.
locationCurrent location of the Candidate.
sourceSource from where the Candidate applied for any position.
hasTagsTags of the Candidate.
lastModifiedThe epoch timestamp when the last change was made on the Candidate.
isInternalTrue if the Candidate is an internal employee of the company.
positionMatchStarsCandidates having matching positions based on the start value. It should be given in the following format {positionId}:{startValue}.

Position field query parameters are listed below.

Position Field Query ParamDescription
createdAtThe epoch timestamp that the job was created.
followerEmailThe email of those who follow the job.
hiringCompanyThe hiring company named on the job.
hiringManagerEmailThe email of the hiring manager of the job.
lastModifiedThe epoch timestamp that the job was last modified.
locationThe location of the job.
recruiterEmailThe email of the recruiter assigned to the job.
atsJobIdId of the job as in the ATS system.
positionNameName of the position.
hiringTitleHiring title of the Job.
atsTitleTitle of Job as in ATS system.
isExternallyPostedIf true then returns only jobs posted externally
businessUnitBusiness unit for the position in ATS system
postedForPosted for internal or external or all
statusStatus of the post like CLOSED, OPEN etc.

Demand field query parameters are listed below.

Demand Field Query ParamDescription
capacityCapacity of the demand.
createdAtEpoch timestamp of when the demand was created.
demandManagerEmailEmail of the demand manager of the demand.
demandNameName of the demand.
demandStatusStatus of the demand.
demandTitleTitle of the demand in Eightfold.
endDateEpoch timestamp of the end date of the demand.
extDemandIdID of the demand in external system.
extDemandTitleTitle of the demand in external system.
followerEmailEmail of a followers of the demand.
lastModifiedEpoch timestamp of when the demand was last modified.
locationLocation of the demand.
programIdAssociated Program ID of the demand.
projectIdAssociated Project ID of the demand.
resourceManagerEmailEmail of the resource manager of the demand.
serviceLineService Line of the demand.
startDateEpoch timestamp of the start date of the demand.
subServiceLineSub-service Line of the demand.

Org Unit field query parameters are listed below.

Org Unit Field Query ParamDescription
extOrgUnitIdExternal ID for the org unit.
parentExtIdExternal ID of the parent of the org unit.
systemIdSystem ID of the org unit.
titleTitle of the org unit.
typeType of the org unit.

Error codes

Following is the list of error codes that the user might come across while making API requests.

Error codesMeaning of the error codes
400This indicates a bad API request.
401This error is displayed when a user authentication with the client server fails.
403This denotes that the client server has authenticated the user, but the user does not have access to requested resource.
404This shows that the requested resource cannot be found on the client server.
429This means that too many requests have been made which has also exceeded the limit.
500This indicates that an internal client server error has occurred.
503This shows that the service on the client server is unavailable.
504This means that the server accessed by a user may be a proxy to the actual server and displays a bad gateway error.