Disposition Sync API guide
Send job application disposition data to Indeed.
By using this API and its documentation and building an integration, you agree to the Additional API Terms and Guidelines.
Integrate with the Disposition Sync API
After you integrate with the Disposition Sync API:
- 1.Disposition Sync API overview – Learn how the Disposition Sync API works.
- 2.Authenticate.
- 3.Send disposition data for Indeed Apply jobs.
- 4.Troubleshoot errors – Resolve GraphQL errors.
Disposition Sync API references
partnerDisposition.send– Sends disposition data for Indeed Apply jobs.
Disposition Sync API overview
Use the Disposition Sync API to send disposition data for Indeed Apply and non-Indeed Apply jobs to Indeed.
To submit disposition data to Indeed, integrate the Disposition Sync API.
Send disposition data with the partnerDisposition.send mutation.
Include one of these identifiers in the PartnerDispositionIdentifierInput input object:
| Identifier | Description |
|---|---|
universalApplyId | Unique identifier for the job application in a standard format, such as Indeed Apply ID, Indeed Tracking Token Key (ITTK), or ApplyID. |
indeedApplyID | Indeed-assigned unique ID for Indeed Apply jobs. Identifies the candidate and the job. |
ittk | Indeed Tracking Token Key (ITTK). Tracks the job application. |
alternateIdentifier | Alternate set of identifiers for the job and job seeker you send a disposition for.
|
Authentication
When you become an Indeed partner, Indeed sets up an app for your integration. Sign in to Partner Console to view your app and OAuth credentials (client ID, secret, and authorization code for 3-legged OAuth). Exchange credentials for an access token to authenticate API calls.
Send disposition data for Indeed Apply jobs
To call the API, use the send mutation in the partnerDisposition namespace:
mutation { partnerDisposition { send(input: { dispositions: [{ dispositionStatus: HIRED, rawDispositionStatus: "Hired", rawDispositionDetails: "", identifiedBy: { indeedApplyID: "12345", }, atsName: "MyATS", statusChangeDateTime: "2023-04-25T13:01:01.01Z", }, { dispositionStatus: HIRED, rawDispositionStatus: "Hired", rawDispositionDetails: "", identifiedBy: { indeedApplyID: "12345", }, atsName: "MyATS", statusChangeDateTime: "2023-04-25T13:01:01.01Z", } ], }) { numberGoodDispositions failedDispositions { identifiedBy { indeedApplyID } rationale } } }}The SendPartnerDispositionInput input object requires the dispositions field, which holds an array of PartnerDispositionInput objects. Every PartnerDispositionInput field is required, except rawDispositionDetails.
The partnerDisposition.send mutation returns the SendPartnerDispositionPayload type.
The return type includes:
- The number of dispositions that succeeded.
- An array of any failed dispositions. Each entry includes the application identifiers and the failure reason.
Troubleshoot errors
To troubleshoot OAuth errors that can occur before you access GraphQL, see Troubleshoot OAuth errors.
For GraphQL errors, see Troubleshoot GraphQL errors.
Indeed standard disposition statuses
The Indeed standard disposition statuses, or hiring stages, are:
| Indeed disposition status | Description | Example raw statuses from ATS | |
|---|---|---|---|
| 1 | HIRED | Required. Candidate accepted a job offer. |
|
| 2 | NEW | Required. ATS received a new job application. |
|
| 3 | NOT_SELECTED | Required. Employer did not select the candidate. |
|
| 4 | ASSESS_QUALIFICATIONS | Pre-hire assessment. Can include skills tests, take-home assignments, and other methods. |
|
| 4 | BACKGROUND_CHECK | Background check in progress. |
|
| 6 | CONTACTED | Recruiter contacted the candidate by phone or email.
|
|
| 7 | DROPPED_DUPLICATE | Use this status only for an application delivery failure, not for the application disposition. If a duplicate application exists and delivery fails asynchronously, the ATS returns HTTP |
|
| 8 | DROPPED_FRAUD_SPAM | Use this status only for an application delivery failure, not for the application disposition. If the application is flagged as fraud or spam and delivery fails asynchronously, the ATS returns HTTP |
|
| 9 | DROPPED_JOB_EXPIRED | Use this status only for an application delivery failure, not for the application disposition. If the job is expired or no longer available and delivery fails asynchronously, the ATS returns HTTP |
|
| 10 | DROPPED_OTHER | Use this status only for an application delivery failure, not for the application disposition. If delivery fails asynchronously for any other reason, the ATS returns HTTP |
|
| 11 | INCOMPLETE | Application incomplete. |
|
| 12 | INTERVIEW | Candidate is interviewing. Can span multiple interviews. |
|
| 13 | JOB_CLOSED | Employer closed the job. |
|
| 14 | JOB_INACTIVE | The job is inactive and no longer accepts applications. |
|
| 15 | LIKED | Recruiter liked, favorited, or shortlisted the application. |
|
| 16 | OFFER_DECLINED | Candidate declined the offer. |
|
| 17 | OFFER_MADE | Employer made an offer to the candidate. |
|
| 18 | ONBOARDED | Employer onboarded the applicant. |
|
| 19 | POSITIVELY_SCREENED | Applicant passed pre-hire screening. Maps to the |
|
| 20 | REVIEW | Recruiter is reviewing the application. |
|
| 21 | SCREEN | Pre-hire screening. Can include phone screening and other methods. |
|
| 22 | UNABLE_TO_MAP | Use this status when no other status fits. | |
| 23 | VERIFY_ELIGIBILITY | Pre-hire eligibility check. Can include license verification, drug test, and other methods. |
|
| 24 | WITHDRAWN | Candidate withdrew the application. |
|
Disposition Sync API glossary
| Term | Description |
|---|---|
| ApplyID | Indeed appends a string of uppercase letters and digits to each URL when job seekers click through to a career site. The ApplyID uniquely identifies the application so Indeed can track it and receive disposition data through the Disposition Sync API. |
| ATS | Applicant tracking system. Employers use an ATS to:
|
| disposition data | Any update to an application in your ATS, including actions a recruiter or hiring manager takes after a candidate applies. Examples:
|
| GraphQL | An open-source data query and manipulation language for APIs and a query runtime engine. GraphQL lets clients use declarative data fetching to specify exactly which data they need from an API. Learn more at GraphQL. |
| Indeed Apply ID | Indeed-assigned unique ID for Indeed Apply jobs. References the candidate and the job. |
| ITTK | Indeed Tracking Token Key (ITTK). Tracks job applications that Indeed sources. |
| job application | A job application. For an OAuth app, see OAuth app. |
Disposition Sync API FAQs
In the ATS, when an employer changes an Indeed candidate's status, the ATS transmits the new status with an anonymized application ID and a date and time stamp.
Indeed's job seeker product team aggregates and analyzes the disposition data Indeed collects from global ATSs. The data improves job ad targeting and the application experience, so candidates can better see how their resume skills match your requirements.
Tell clients why moving candidates through the stages in their ATS matters. For example, after they review a CV, they should change the status to reviewed or screened.
Statuses vary by ATS. Indeed needs as many updates as possible for each candidate in the employer's pipeline.
Clients who send continuous stage or status updates get these benefits:
- They help Indeed match candidates better in the future.
- They quickly see which roles have enough candidates and which do not, so they can shift focus and budget to roles that need more.
- They better understand hiring timelines by seeing how long each stage usually takes.
Indeed treats any status other than NEW, INCOMPLETE, and UNABLE_TO_MAP as a quality signal. For tiered status, an ATS needs a quality signal adoption rate of at least 55%.
Indeed measures an ATS's disposition adoption rate by how many Indeed Apply-able jobs send disposition signals to Indeed. If every client opts in and the ATS sends receipt confirmation to Indeed, the rate is 100%. If only 50% of clients opt in but the ATS sends disposition signals for all those jobs, the rate is still 100%.