- Overview
- Scenario 1: ATS integration with sub-account
- Scenario 2: Crawled or hosted jobs with sub-account
- Overview
- Requirements
- Implementation
- jobFeedType values
- jobRequisitionId value
- Scenario 3: Direct billing, no sub-account
- Overview
- Requirements
- Implementation
- Troubleshooting
- Scenario 4: No ATS integration
- Overview
- When to use Job Sync API
- Next steps
- Related documentation
Agency scenarios
How your client's setup affects the way you use the Job Update API.
By using this API and its documentation and building an integration, you agree to the Additional API Terms and Guidelines.
Overview
If you are an ad agency, the employer you work for is your client. How you manage their jobs on Indeed depends on their setup.
This guide covers the main agency scenarios and what to do in each one.
Scenario 1: ATS integration with sub-account
Your client uses an ATS with Indeed Apply, and you have a sub-account for them.
This is the most common agency setup. Follow the Job Update API guide.
Scenario 2: Crawled or hosted jobs with sub-account
Indeed crawls your client's site for jobs, or your client creates jobs directly on Indeed. You have a sub-account for them.
Overview
By default, findEmployerJobsPartner returns only jobs from XML feeds or API integrations. If Customer Support confirms that your client uses crawled or hosted jobs instead of integrated jobs, set jobFeedType to retrieve them. You can also filter by jobRequisitionId.
Requirements
Before you use this approach:
- Confirm with Indeed Customer Support that your client uses crawled or hosted jobs.
- Confirm with your client that they want to keep crawled or hosted jobs instead of switching to integrated jobs.
Implementation
When you call findEmployerJobsPartner, set jobFeedType to retrieve them. You can also filter by jobRequisitionId.
Requisition IDs are not unique, so one filter can match more than one job.
For crawled jobs:
query FindEmployerJobsPartner { findEmployerJobsPartner( input: { filters: { legacySourceId: "60a9614a5d973a21", jobFeedType: ["CRAWLED_FROM_WEB"], jobRequisitionId: ["abc123"] } }, first: 10 ) { employerJobs { id jobData { title } } }}For hosted jobs:
query FindEmployerJobsPartner { findEmployerJobsPartner( input: { filters: { legacySourceId: "60a9614a5d973a21", jobFeedType: ["CREATED_ON_INDEED"], jobRequisitionId: ["abc123"] } }, first: 10 ) { employerJobs { id jobData { title } } }}jobFeedType values
Filters jobs by feed type, which identifies where the job came from.
Valid jobFeedType values are:
CREATED_ON_INDEED- Created on Indeed.INTEGRATED_FROM_PARTNER- From an XML feed or the Job Sync API.CRAWLED_FROM_WEB- Found on the web.UNKNOWN- Unclassified. Covers jobs with no immediate source data, and jobs from before 1 June 2025 that were never classified.
Specify one value, unless you pair UNKNOWN with one other type.
Default: INTEGRATED_FROM_PARTNER
By default, findEmployerJobsPartner returns only jobs from integrations such as XML or API feeds. If your client's jobs are crawled from the web or hosted on Indeed, set this filter accordingly.
For more information, see FindEmployerJobsPartnerFilterInput.
jobRequisitionId value
jobRequisitionId filters jobs by the ATS requisition ID on the job (externalPostingMetadata.jobRequisitionId).
Send the value exactly as that field returns it. Matching is case-insensitive and does not trim whitespace.
A fragment such as 123 matches any ID that contains it. Multiple values are OR’d.
Requisition IDs are not unique, so one filter can match more than one job.
Scenario 3: Direct billing, no sub-account
You do not have a sub-account for this client. Indeed bills the client directly, and you manage the client’s job content.
Overview
If Indeed bills the client directly and you do not have a sub-account, you must have access to the client’s employer account before you can manage job content through the Job Update API.
Requirements
Ask your client to add your developer account, the account you used to create your OAuth client ID, to the client’s employer account.
Implementation
-
Ask your client to add your developer account
Ask your client to add your developer account as a secondary user on their employer account. They can do this from their Indeed Account page.
-
Verify employer account access
After the client adds your developer account:
- Get an access token with
scope=employer_access. - Call the
https://secure.indeed.com/v2/api/appinfoendpoint. - Confirm that the client’s employer account appears in the response.
- Get an access token with
-
Get an employer access token
After you verify access, get an access token that represents the employer to call the Job Update API.
Troubleshooting
The employer account does not appear in the list
- Verify that your client added your developer account as a secondary user.
- Confirm that your client granted the correct permissions.
- Contact your Indeed Agency Customer Support representative for help.
You cannot get an employer access token
- Verify that you are using the correct developer account.
- Verify that you created your OAuth client ID with the same developer account that the client added.
- For more help, see Troubleshoot OAuth errors.
For more information, see Get access token that represents employer and Sponsored Jobs API account management.
Scenario 4: No ATS integration
Your client’s ATS does not integrate with Indeed Apply, so you send the client’s jobs to Indeed yourself.
Overview
If your client’s ATS does not integrate with Indeed Apply, do not use the Job Update API. Use the Job Sync API instead.
When to use Job Sync API
Use the Job Sync API when:
- Your client’s ATS does not integrate with Indeed Apply.
- You need to create, update, or expire jobs on Indeed.
- You send jobs directly to Indeed instead of managing ATS-sourced jobs.
Next steps
- Review the Job Sync API documentation.
- Follow the Job Sync API guide to implement job posting management.
Related documentation
- Job Update API guide - Standard workflow for Scenario 1.
- Job Sync API - Use for Scenario 4, when you send jobs directly to Indeed.
- Get access token that represents employer - Required for Scenario 3.
- Sponsored Jobs API account management - Employer account details.