- Overview
- Program overview
- User experience flow
- New employer account setup flow
- Campaign creation and management flow
- Set up your ATS with the program
- Sign a Developer Agreement with Indeed
- Create an Indeed account and register your integration
- Identify the redirect URL where Indeed sends users
- Start your integration
- Email a demo video to Indeed
- Work with Indeed on messaging
- API integration overview
- Integration prerequisites
- Set up employer account
- Set up no sponsorship
- Get OAuth authorization from each employer
- Secondary users and OAuth authorization
- Sponsored Jobs API overview
- Base URL
- Endpoints
- OAuth scopes
- Recommended best practices
- Account management
- Campaign management
- Create campaigns
- Update a campaign
- Get a campaign's budget
- Monthly recurring campaigns
- Update a campaign's budget
- Reports
- Campaign performance
- ATS Campaign predictions
- Request body
- CampaignPredictions
- JobInfo
- CampaignInfo
- PredictionsInfo
- Response
- JobLevelPredictions
- Job details
- Prediction
- Organic job performance and prediction
- Organic job performance and prediction request
- OrganicjobPrediction field
- JobInfo field
- Organic job performance and prediction response
- OrganicMetric field
- OrganicPrediction field
- SponsoredPrediction field
Sponsored Jobs API integration guide for ATS partners
Access private endpoints, including campaign predictions and organic job performance and prediction.
Unless you have a written agreement with Indeed regarding your use of Indeed's APIs, by using this API or its documentation, you agree to apply the Indeed API Terms and the Additional API Terms and Guidelines to your use of Indeed's APIs.
Overview
Read this guide alongside the Sponsored Jobs API reference for ATS partners. It helps ATS partners integrate with the Sponsored Jobs API (the API) but does not document every endpoint.
In this guide and the public API docs, employer and advertiser both refer to the user who sponsors jobs at Indeed. Send technical questions to marketplacesupport@indeed.com.
Program overview
Set up your ATS with the program.
When you design the prototype, plan the user experience flow first.
User experience flow
Build two flows in your ATS: one for creating an employer account, and another for creating and managing ad campaigns.
New employer account setup flow
Each employer who wants to use Indeed needs one Indeed account and a primary account admin who authorizes your ATS to act on the employer's behalf. Complete this step once per employer. An employer can have multiple ATS users but only one Indeed account for sponsorship campaigns. Employers can't create campaigns until they finish this setup.
- The employer’s account admin enters the corporate email address used to sign in to Indeed.
- Your ATS prompts them to complete setup on Indeed.
- When their Indeed account is set up, redirect their account admin to authorize your ATS system through Indeed OAuth.
- After they authorize your ATS, enable the admin to configure which of their ATS user accounts can create sponsorship campaigns using their Indeed account. This depends on the user’s role inside the ATS.
For implementation details, see Set up employer account.
Campaign creation and management flow
Surface the Indeed advertising experience where it fits best in your platform — for example, the marketplace, job performance reviews, or an analytics page.
Use our API endpoints to let authorized ATS users create and manage Indeed sponsored job campaigns directly in your ATS.
Users can:
- Set a budget and duration for each job campaign.
- Set hiring objectives per job and receive recommendations from Indeed.
- Accept Indeed's Terms of Service.
- Contact Indeed when needed.
Manage campaign
Let authorized ATS users:
-
View basic Indeed analytics in your ATS, including:
- Cost, applies, clicks, and impressions
- Links to the Indeed dashboard for more details
-
End ATS-created campaigns or add budget to them.
For integration details, see Sponsored Jobs API overview.
Set up your ATS with the program
Follow these setup steps to start using the Sponsored Jobs API as an ATS partner. Email marketplacesupport@indeed.com with any questions as you build.
| Step | Description |
|---|---|
| 1. | |
| 2. | |
| 3. | Identify the redirect URL within your ATS where Indeed sends your users. |
| 4. | |
| 5. | |
| 6. |
Sign a Developer Agreement with Indeed
Verify that your company has a Developer Agreement with Indeed that covers the Sponsored Jobs Integration APIs and Referral Partnership terms.
If you don't, email marketplacesupport@indeed.com to request one.
Create an Indeed account and register your integration
Create an Indeed account with your ATS company email address. Use this account only for OAuth authorizations and to register your ATS integration. From now on, use this email and account to manage your clients' employer accounts at Indeed.
Also email marketplacesupport@indeed.com to request a unique ATS identifier, which you need to set up employer accounts.
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.
Identify the redirect URL where Indeed sends users
Choose the ATS redirect URL Indeed uses to send users to your ATS after they set up their employer account.
Start your integration
You're ready to start your integration. See the API integration overview.
To test it, create a separate Indeed account to act as a client account. Use a different email than the one you used to create your Indeed account.
- Test the various UX features with this account using $50 budgets.
- Indeed covers up to $200 in sponsored job clicks on your company's real jobs so you can verify the integration works. This refund is a one-time offer for this single account.
- Reply to Indeed's email with the address you use for testing so Indeed can confirm success.
As you build your integration, follow the brand and logo guidelines.
Email a demo video to Indeed
Email a demo of your integration to marketplacesupport@indeed.com.
Subject: New ATS-SJI API Approval Request
Body:
ATS Name:
Product Contact:
BD/Marketing Contact:
Redirect URL (from Step 4):
UX Video:Indeed replies within 48 hours to approve or request changes.
Work with Indeed on messaging
Work with Indeed on messaging to help your clients get started, and be ready to announce the new features to them. Email marketplacesupport@indeed.com with any open questions.
API integration overview
Before you call the Sponsored Jobs API for an employer, verify the employer has an Indeed account and has granted your system OAuth authorization to call the API on their behalf.
Complete the prerequisites to handle these steps.
Integration prerequisites
Before you start calling the Sponsored Jobs API, complete these steps:
Set up employer account
Complete these steps for each new employer to verify they have an account set up for sponsoring at Indeed.
Step 1
Show a dialog (or similar) that asks an admin user with the right access and information to set up sponsoring at Indeed and finish onboarding. The dialog prompts the user for a corporate email address.
Step 2
Send the user to the Indeed account setup endpoint. This endpoint runs account readiness checks and prompts the user through any required setup steps.
The endpoint is:
https://ats-management.indeed.com/accountsetupMake an HTTP GET request to this endpoint with these parameters:
| Field | Required | Description |
|---|---|---|
| ✓ | URL-encoded email address to use for sponsoring at Indeed. |
| ✓ | Unique ID Indeed assigns to each ATS partner. Identifies the employer accounts the partner refers to Indeed. |
| String returned to the ATS unchanged. Use it as a key to identify the request. Must be 1–100 alphanumeric characters. | |
| One of:
|
You can reuse the Indeed account setup endpoint to redirect the admin user and confirm the employer is set up for sponsorship on Indeed. The process is lightweight — if all checks pass, the call returns immediately with no further user interaction.
The endpoint runs these account readiness checks:
- The Indeed account with the given corporate email address is set up to use Indeed.
- The user is signed in to Indeed.
- The employer account is set up for sponsoring.
- The billing information is set up for sponsoring.
- The user has full access to the employer account.
If any check fails, Indeed redirects the user to the right setup page and then re-runs the checks to confirm setup is complete.
For secondary users, at least one of the employer accounts they can access must pass the checks.
Step 3
After you complete setup steps, Indeed redirects the user to your ATS using the redirect URL you provide. You must create a redirect URL on the ATS side to which Indeed redirects users to after the Indeed onboarding process is complete.
Endpoint must support these parameters
| Field | Description |
|---|---|
state | The API echoes back whatever value you pass in this field. |
result | Value is:
|
Step 4. Ask the user to grant you OAuth authorization
On success, send the user to the OAuth authorization flow.

Use this flow both to set up sponsoring at Indeed and to update billing information whenever needed.
If a user's billing information is no longer valid, send them through the account management flow to fix it.
Set up no sponsorship
If an employer hasn't set up an Indeed account yet but wants to view Indeed's performance data before sponsoring any jobs, add the optional type=login parameter to the request URL. This parameter triggers Indeed account creation for the employer and skips the remaining checks.
Use type=login to access the organic job performance and prediction endpoint when the employer hasn't sponsored any jobs yet. After the employer finishes setting up their Indeed account, redirect the user to the OAuth authorization endpoint.
Get OAuth authorization from each employer
This authorization is required for each new employer account, and associated secondary users. The Sponsored Jobs API uses the standard OAuth 2.0 Authorization code grant. In this flow, end users grant you access to their account and campaign data at Indeed. You call the API using the OAuth access token you obtain from the end user.
Follow the authorization code grant type (3-legged OAuth) to set up your Indeed account for OAuth and get authorization to call the API on behalf of your clients.
In the authorization code request, select the correct scope for the endpoint you are calling. See OAuth scopes for details.
In addition to these Sponsored Jobs Campaigns API scopes, get an access token that represents an employer. See Get access token that represents employer.
The access and refresh tokens you receive, which are unique for each employer account at Indeed, are required to make calls to the API. Ensure you store them securely. If these tokens are lost, your client must grant you OAuth access again.
Secondary users and OAuth authorization
The primary user is the admin user who sets up employer account. This user has full access to all resources associated with the employer account at Indeed. Primary users can provide access to other people on their employer account. These additional users are called secondary users. Primary users can add and view secondary users and their permissions by visiting their Indeed Account page.
Indeed recommends that you add each user who manages campaigns for an employer as a secondary user. Then, get OAuth authorization for each secondary user. See Get OAuth authorization from each employer.
To list of employer accounts the user can access, you can get user information.
For secondary users, the behavior of the Indeed account setup endpoint is:
- If the user has full access (admin permissions) to at least one employer account with valid billing information, the account setup endpoint returns them to your ATS with the
OKresult. - If the user does not have full access to any employer account, or none of those employers have valid billing information, the endpoint shows an error page about not having suitable employer accounts. The page has a link that returns the user to your ATS with the
BILLING_SETUP_CANCELEDerror.
After the user selects one of the employer accounts returned from the v2/api/userinfo endpoint, use the account management endpoint to verify that the account has valid billing information.
Sponsored Jobs API overview
These technical specifications supplement the Sponsored Jobs API reference for ATS partners. They describe the endpoints you can use for your integration. Some of the endpoints are private and exclusive to ATS partners. Others are public endpoints.
Base URL
ATS partners can access the API at this base URL.
apis.indeed.com/ads |
Endpoints
Public endpoints
The following endpoints are detailed in our Sponsored Jobs API reference for ATS partners.
Wherever endpoints define two different ways to use the API, one as an ad agency and the other as the direct employer, use the direct employers method.
Private endpoints
These endpoints are restricted to ATS partners who are set up for this program.
OAuth scopes
In your OAuth authorization code request, pass the scopes that correspond to the API endpoints you are calling. Then, the end user chooses whether to grant you none, some, or all scopes that you requested. Use the following table to determine which scope to request for each API endpoint.
Campaign predictions
| API endpoint | OAuth scope | Access token type |
|---|---|---|
POST /v1/campaignpredictions | employer_access | With |
Organic job predictions
| API endpoint | OAuth scope | Access token type |
|---|---|---|
POST /v1/organicjobpredictions | employer_access | Any |
Handle authorization errors
Verify you handle any errors that occur when the user does not have access to the requested scopes or does not authorize your application. To determine which scopes have been granted, view the scope response field in the request an access token response.
The error codes are:
| Error code | Description |
|---|---|
403 INSUFFICIENT_SCOPE | The access token is valid but has not been granted the necessary scope. |
401 INVALID_TOKEN | The access token is missing, invalid, or expired. |
For suggestions on how to handle these errors, see Recommended best practices. You can offer the user the option to complete the OAuth Authorization code grant again to authorize your app with more scopes. However, some users might have restricted permissions and cannot authorize all the scopes you request.
If your app has not been granted all requested scopes, enable it to operate with a limited feature set.
Recommended best practices
The API follows an eventual consistency model. That is, when you create a campaign through the POST /v1/campaigns endpoint, you might not get the new campaign from the GET /v1/campaigns/{campaignId} endpoint for a brief time.
Ensure you have a retry mechanism in place if you try to get a resource immediately after creation or modification.
In addition, ensure that you continuously monitor for 4XX-level error responses from the API to determine whether there are API usage issues.
5XX-level error responses from the API are typically temporary internal service issues and could be retried after some delay. If you are unsure of how to resolve the issue or if the errors persist, because the request path was not prefixed with /ads, the response indicates that the request could not be routed to the Sponsored Jobs API.
For example, instead of https://apis.indeed.com/v1/account, use https://apis.indeed.com**/ads**/v1/account. reach out to marketplacesupport@indeed.com for help with diagnosis. You might encounter 401 INVALID_TOKEN and 403 INSUFFICIENT_SCOPE errors when using OAuth scopes.
Account management
GET | /v1/account | Sponsored Jobs API reference for ATS partners |
|---|
Use this endpoint to get basic information about the employer.
The following responses indicate that the employer must complete the Set up employer account:
-
If the endpoint returns
400 NOT_EMPLOYER_ACCOUNT, this indicates that the user does not have an Indeed employer account. -
To include the account billing status in the response, pass the following in the
fieldsparameter:fields=id,email,contact,company,jobSourceList,billingActive.If the returned value of the
billingActivefield isfalse, the user has not completed the necessary account set up at Indeed to start sponsoring.
Campaign management
An employer's campaign corresponds to what an employer can manage in the Indeed Analytics dashboard. All job campaigns at Indeed have unique IDs, for example: 784e4acec9x100z2.
Use the following endpoints to:
Create campaigns
POST | /v1/campaigns | Sponsored Jobs API reference for ATS partners |
|---|
Use this endpoint to create a campaign. This endpoint returns the ID of the new campaign. Store this campaign ID and use it to make changes to the campaign or to get reports about it.
When you create a campaign, set the budget and the duration that the employer chose.
The budget must be in the same currency as the default currency of the employer.
- The minimum budget and duration required are $50 and seven days.
- For each job, use its unique reference number that is set in the XML feed.
- All dates have the format
YYYY-MM-DDand are specified in the US Central time zone.
To create a campaign, set these parameters
| Field | Description |
|---|---|
jobsToInclude | Always set to |
jobsQuery | Use Example:
|
jobsSourceName | Source or company for this job. Must exactly match the Example:
|
If the employer chooses a monthly campaign
Monthly recurring campaigns follow the calendar month.
| Field | Description |
|---|---|
budgetMonthlyLimit | The budget amount. |
budgetFirstMonthBehavior | Set to |