- Overview
- Summary of changes
- Credit balance visibility (new)
- Bonus-credit campaign identification (updated endpoints)
- Per-job budget visibility (updated)
- Job selection updates
- Integration workflow
- 1. Prerequisites
- 2. Get campaign budget quote
- 3. Campaign creation process
- 4. Monitor your credit balance
- 5. Identify your bonus-credit campaigns
- 6. Update job selection
- 7. View budget allocation
Sponsored Jobs API integration guide for bonus-credit campaigns
Sponsor jobs in special campaigns with bonus credits from an Indeed Annual Deal Agreement.
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
This guide explains how to use bonus sponsored job credits in an Indeed Annual Deal. Use these credits to sponsor jobs in designated campaigns. When credits are added to your advertiser account, Indeed automatically creates the related campaigns.
As of 2026-01-19, the Sponsored Jobs API lets you view bonus-credit balances, identify bonus-credit campaigns, monitor per-job budgets, and update job selection queries.
Summary of changes
| Endpoint | Change type | Change description |
|---|---|---|
Get credit allocation and balance | New | Gets an advertiser's total and remaining bonus sponsored job credits. See:
|
List employer campaigns and statuses | Enhanced | New
See bonus-credit campaign identification (updated endpoints). |
Get general campaign information | Enhanced | Auto-includes fields:
|
Get campaign budget and duration | Enhanced | For bonus-credit campaigns, auto-includes field:
|
Update general campaign information | Enhanced | For bonus-credit campaigns, added job selection criteria. |
Credit balance visibility (new)
| Endpoint | Get credit allocation and balance |
|---|---|
| Description | Gets an advertiser's total and remaining bonus sponsored job credits. Credit balance is returned in real time. |
| Authentication | OAuth 2.0 with employer scope |
| Response |
|
| Use cases |
|
Bonus-credit campaign identification (updated endpoints)
Enhanced campaign list
| Endpoint | List employer campaigns and statuses |
|---|---|
| Description | The campaign list endpoint already supports a Additional
|
| Authentication | OAuth 2.0 with employer scope |
| Request | The
|
| Response |
|
Single campaign details
| Endpoint | Get general campaign information |
|---|---|
| Description | Unlike the enhanced campaign list endpoint, the response from the single campaign details endpoint always includes both the |
| Authentication | OAuth 2.0 with employer scope |
| Request | The
|
| Response |
For null values and empty strings, the JSON response includes both:
|
Integration recommendations
-
For list employer campaigns and statuses queries:
- To filter or display bonus-credit campaigns, always include
FundingSourcein yourfieldsparameter. - To identify bonus-credit premium campaigns, include
SponsorshipPlan. - For complete classification, include both values.
- To filter or display bonus-credit campaigns, always include
-
For get general campaign information, both fields are always present. No special handling is needed.
- To identify regular campaigns, check for empty string (
"") inFundingSource. - To identify standard-tier campaigns, check for empty string (
"") inSponsorshipPlan.
- To identify regular campaigns, check for empty string (
-
Use cases:
- Filter and display bonus-credit campaigns separately.
- Identify bonus-credit premium tier campaigns.
Per-job budget visibility (updated)
-
Updated endpoints:
GET /v1/campaigns(opt-in through thefieldsquery parameter)GET /v1/campaigns/{campaignId}/budget(automatic)
Bonus-credit campaigns use a daily budget model where Indeed recommends a daily budget for each job. Traditional campaigns use a total budget for the month or campaign duration.
-
Current state: Campaign endpoints return
BudgetOnetimeLimit(total lifetime budget) orBudgetMonthlyLimit(monthly budget). Only the applicable field appears based on campaign type. -
New:
DailyAvgBudgetPerJobfield shows the average daily budget per job in bonus-credit campaigns.Indeed's optimization system automatically manages per-job budgets based on your job selection. This value is read-only.
| Endpoint | List employer campaigns and statuses
|
|---|---|
| Description | This endpoint already supports a New: When the field appears:
When the field is hidden:
Key behavior:
|
| Authentication | OAuth 2.0 with employer scope |
| Request | The
|
| Response |
For null values and empty strings, the JSON response includes both:
|
Job selection updates
| Endpoint | Update general campaign information |
|---|---|
| Description | Update job selection for bonus-credit campaigns. Allowed updates for bonus-credit campaigns:
|
| Restrictions | Indeed manages other campaign settings ( |
| Use cases | Add or remove jobs from bonus-credit campaigns. |
Integration workflow
1. Prerequisites
Before integrating, verify that you have:
- Active Annual Agreement with Indeed
- OAuth 2.0 credentials configured with employer scope
- US-based advertiser account (initial release is US-only)
- Credits allocated to your advertiser account (handled by your Indeed Customer Service team)
2. Get campaign budget quote
Lets employers get recommended daily budgets for each job and a campaign-level average daily budget before creating an average daily budget (ADB) campaign.
POST | https://apis.indeed.com/ads/v1/campaignbudgetquote | Direct integrations for Sponsored Jobs API reference |
|---|
Returns the average budget quote for the sponsorship plan, a budget quote for each matched job, and recommendations for the STANDARD and PREMIUM tiers.
The recommended daily budget is a target, not a guarantee. Indeed optimizes toward it, but actual daily spend can vary.
For example, if the average daily budget is $25, spend might be $20 on day 1 and $30 on day 2.
Calls to this endpoint are not charged under the Sponsored Jobs API usage policy.
- Wait 2 to 3 hours after posting new jobs before creating a campaign.
- Create the campaign within 1 hour of the budget recommendation call. After that, market conditions can change, and campaign creation uses the latest recommended budgets.
- Jobs added automatically through query-based job resolution, including after campaign creation, use their recommended budgets as the default daily spend.
- Jobs added manually to a campaign also use their recommended budgets as the default daily spend.
This example gets recommended daily budgets for each job and the campaign-level average daily budget.
Sample request:
curl -L -X POST 'https://apis.indeed.com/ads/v1/campaignbudgetquote' \-H 'Content-Type: application/json' \-H 'Accept: application/json' \--data-raw '{ "jobsQuery": "title:\"financial analyst\" AND city:(toronto OR \"new york\")", "jobsTitle": "Healthcare Intern", "jobsCompany": "Indeed", "jobsLocation": "Austin, TX", "jobsLocationRadius": 25, "jobsSourceId": "8977ac341a3c4527", "jobsSourceName": "CompanyABC", "jobsToInclude": "ALL"}'Sample response:
{ "meta": { "status": 200, "errors": [ { "type": "RESOURCE_NOT_FOUND", "description": "Couldn't locate the requested resource" } ], "rootLocation": "https://apis.indeed.com/ads", "perPage": 25, "links": [ { "rel": "next", "href": "/v1/campaigns/3141592653589793" } ] }, "data": { "sponsorshipPlanBudgetQuotes": [ { "sponsorshipPlan": "PREMIUM", "dailyAvgBudgetPerJob": { "amount": 0, "currency": "string" }, "jobBudgetQuotes": [ { "jobKey": "89deb9de58ebe149", "dailyBudget": { "amount": 0, "currency": "string" } } ] } ] }}3. Campaign creation process
When Indeed initially allocates bonus credits to your account, we automatically create bonus-credit campaigns on your behalf.
- Indeed creates the bonus-credit campaign in your account.
- Campaign becomes immediately visible through the API.
4. Monitor your credit balance
Call
GET /v1/advertisers/{yourAdvertiserId}/creditswith the OAuthBearertoken:Before sponsoring jobs in a bonus-credit campaigns.
When credits are allocated.
Weekly or as needed for spend tracking.
Best practice: Cache the balance and avoid excessive polling (calls count toward rate limits).
5. Identify your bonus-credit campaigns
Option A: List all campaigns with funding source:
To identify which campaigns are bonus-credit funded, call
GET /v1/campaigns.Include
FundingSourcein thefieldsparameter.To identify bonus-credit campaigns versus regular budget campaigns, check whether
FundingSourceequals"Bonus Sponsored Job Credits".
Option B: Get details for specific campaign:
Call
GET /v1/campaigns/{campaignId}.This call automatically includes the
FundingSourcefield in the response.
6. Update job selection
Call
PATCH /v1/campaigns/{creditCampaignId}with a JSON body that contains job selection criteria.You can update these fields:
jobsToInclude. Selection mode (ALLorQUERY).jobsQuery. Search keywords.
You cannot update these fields:
- Campaign name, status, objective, budget (automatically managed),
jobsTitle,jobsCompany,jobsLocation,jobsLocationRadius.
Error handling: Updating restricted fields returns the error:
"Only Jobs Query Criteria field update is allowed for campaigns using Bonus Sponsored Job Credits."
7. View budget allocation
Call
GET /v1/campaigns. For a specific campaign, callGET /v1/campaigns/{campaignId}/budget.With either call, set the
fieldsparameter to includeDailyAvgBudgetPerJobandFundingSource.The call returns:
The total campaign budget allocation.
Average daily budget per job (for bonus-credit campaigns).