---
agentTools:
  projectIndex: https://docs.developer.yelp.com/llms.txt
---

# Ads API

> ⚠️ Documentation Disclaimer
>
> This documentation is not exhaustive and does not guarantee system behavior. Integrators are responsible for testing against actual API responses. See [Documentation Disclaimer](https://docs.developer.yelp.com/docs/documentation-disclaimer) for full details.

> 📘 This is a Yelp Partner API
>
> Access is disabled by default. See [Yelp Partner APIs](https://docs.developer.yelp.com/docs/yelp-partner-apis) on how to get access.

# Overview

This page is the primary reference for the Yelp Ads API endpoints, parameters, and error codes. The API provides a means to create, modify, and terminate advertising programs for businesses on Yelp.

Access is not available by default — to request access, work with your Yelp account team.

## Table of Contents

* [Before You Build](#before-you-build)
* [Authentication](#authentication)
* [Versioning](#versioning)
* [Format & Value Types](#format--value-types)
* [Yelp Business IDs](#yelp-business-ids)
* [Advertising API Endpoints](#advertising-api-endpoints)
  * [Create Program](#create-program)
  * [Modify Program](#modify-program)
  * [Terminate Program](#terminate-program)
  * [Receipting (Job Status)](#receipting)
  * [Pause Program](#pause-program)
  * [Resume Program](#resume-program)
* [Advertising API Errors](#advertising-api-errors)
  * [Error Codes](#error-codes)
  * [Error Messages](#error-messages)

***

## Before You Build

The following pages cover integration guidance, behavioral nuances, and reference material that go beyond what is documented on this page. Review them before building your integration.

| Page                                                                               | What it covers                                                                                   |
| ---------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ |
| [Ads API Onboarding Guide](https://docs.developer.yelp.com/docs/getting-started-with-the-ads-api)                   | How to get test credentials, what to test, and how to request live access                        |
| [Campaign Management Behavior & Nuances](https://docs.developer.yelp.com/docs/campaign-management-behavior-nuances) | Non-obvious behavioral facts: feature carryover, SCT limitations, async gotchas, promo lifecycle |
| [Async Job Processing & Error Handling](https://docs.developer.yelp.com/docs/async-job-processing-error-handling)   | Polling pattern, terminal states, PARENT\_WAS\_REJECTED debugging, full error code reference     |
| [Program Features Reference](https://docs.developer.yelp.com/docs/program-features-reference)                       | All configurable features: SCT, CLT, ad scheduling, ad goal, link tracking, call tracking        |
| [Budget & Billing Reference](https://docs.developer.yelp.com/docs/budget-billing-reference)                         | Budget formatting (cents), fee periods, proration, over-delivery, budget change behavior         |
| [Enhanced Profiles & CTAs](https://docs.developer.yelp.com/docs/enhanced-profiles-ctas)                             | EP lifecycle, CTA configuration, detecting existing EP, EP vs CPC differences                    |
| [Reporting & Metrics Reference](https://docs.developer.yelp.com/docs/reporting-metrics-reference)                   | Metric definitions, billed vs delivered clicks, data availability windows                        |
| [FAQs](https://docs.developer.yelp.com/docs/ads-faqs)                                                               | Common questions on ad creation, billing, promos, geotargeting, and more                         |

***

## Authentication

Authentication uses basic HTTP authentication over SSL. The credentials used for the Yelp Data Ingestion API should be used for the Advertising API.

## Versioning

To maintain backwards-compatibility with partner-developed applications, the Yelp Advertising API is versioned with the version encoded in the URI. The current and latest version is v1 and all endpoints are located at .

## Format & Value Types

Response bodies use the  content type and should be encoded in UTF-8. All date properties should use the  format.

## Identifiers

Yelp identifiers are unique within a type of object only — they are not globally unique. For example, a photo and business may share the same identifier, but no other photo or business will have that same identifier.

## Yelp Business IDs

The Advertising API requires encrypted business IDs to create new programs. Please reference our [Business Match API documentation](https://www.yelp.com/developers/documentation/v3/business_match) on how to pull these values for Yelp listings.

***

# Advertising API Endpoints

The Yelp Advertising API provides a means to add/modify/terminate advertising programs for businesses on Yelp by calling into one of the following four endpoints:

| Method        | HTTP Request             | Description                                       |
| :------------ | :----------------------- | :------------------------------------------------ |
| **create**    | POST /create             | Create a new program for a Yelp business          |
| **modify**    | POST /{program\_id}/edit | Modify an existing program for a Yelp business    |
| **terminate** | POST /{program\_id}/end  | Terminate an existing program for a Yelp business |
| **status**    | GET /status/{job\_id}    | Obtain the status of an existing ingestion job    |

## Create Program

### HTTP POST

<https://partner-api.yelp.com/v1/reseller/program/create>

**Request:**

```javascript
curl \
  -X POST \
  --user "{username}:{password}" \
  https://partner-api.yelp.com/v1/reseller/program/create?start=<date>&end=<date>&business_id=<yelp_business_id>&program_name=<program_name> 
```

**Description:**

This endpoint will create the program `<program_name>` to the Yelp business as specified by `<business_id>`. Start and end dates are left as optional parameters to specify the duration of the program. The dates are expected to be in YYYY-MM-DD format. `<business_id>` and `<program_name>` are the required parameters for all program types. For CPC programs, `<budget>` and `<is_autobid>` is required. The `<max_bid>` parameter is also required for CPC programs if `<is_autobid>` is set to false.

**NOTE:** For CPC programs, the business listing **must have** text for the specialties field since CPC ads uses text from specialties if there isn't a sufficient level of reviews to use reviews text for ads. Please use the Data Ingestion API to set the about\_this\_business\_specialties field for a given business. Also, the business listing **must have** at least 1 category in order to appear in Yelp search results.

**Common Program Parameters: (create)**<br>\
The following table describes the request parameters for all programs.

[block:html]
{
  "html": "<table>\n<table border=\"1\">\n  <tr>\n    <th>Property Name</th>\n    <th>Value</th>\n    <th>Optional</th>\n    <th>Description</th>\n  </tr>\n  <tr>\n    <td>business_id</td>\n    <td>string</td>\n    <td>No</td>\n    <td>Yelp business id</td>\n  </tr>\n  <tr>\n    <td>program_name</td>\n    <td>string</td>\n    <td>No</td>\n    <td>Indicates the type of program you want to enable.<br><br>\n    Possible values are:\n    <ul>\n      <li>BP – Branded Profile</li>\n      <li>EP – Enhanced Profile</li>\n      <li>CPC – Cost per click ads</li>\n      <li>RCA (Remove Competitor Ads)</li>\n      <li>CTA (Call To Action)</li>\n      <li>SLIDESHOW (Slideshow)</li>\n      <li>BH (Business Highlights)</li>\n      <li>VL (Verified License)</li>\n      <li>LOGO</li>\n      <li>PORTFOLIO</li>\n      </ul>\n    </td>\n  </tr>\n  <tr>\n    <td>promotion_code</td>\n    <td>string</td>\n    <td>Yes</td>\n    <td>Use a valid promotion code to purchase this program.</td>\n  </tr>\n<tr>\n    <td>start</td>\n    <td>date</td>\n    <td>Yes</td>\n    <td>Start date for the specified program. The date format is YYYY-MM-DD format (e.g., 2016-01-01).  Programs will start at 12:00am PST for a given start date. <br><br>If no start date is set, then the program will start immediately.</td>\n  </tr>\n   <tr>\n    <td>end</td>\n    <td>date</td>\n    <td>Yes</td>\n<td>End date for the specified program. The date format is YYYY-MM-DD format (e.g., 2016-01-31).   Programs will end at 11:59pm PST for a given end date.\n<br><br>\nIf no end date is set, then the program will run indefinitely until it is terminated via the Advertising API.\n</td>\n  </tr>\n</table>"
}
[/block]

**CPC Program Parameters: (create)**\ <br>The following table describes the request parameters for CPC programs.

[block:html]
{
  "html": "<table>\n<table border=\"1\">\n  <tr>\n    <th>Property Name</th>\n    <th>Value</th>\n    <th>Optional</th>\n    <th>Description</th>\n  </tr>\n  <tr>\n    <td>budget</td>\n    <td>integer</td>\n    <td>No</td>\n    <td>Monthly budget in cents. For a monthly budget of $50.00, please input “5000”.<br> Value must be greater than or equal to $25 dollars.</td>\n  </tr>\n  <tr>\n    <td>currency</td>\n    <td>string</td>\n    <td>Yes</td>\n    <td><a href=\"http://www.xe.com/iso4217.php\">ISO 4217 Currency Code</a>. Default is USD</td>\n</tr>\n<tr>\n    <td>is_autobid</td>\n    <td>boolean</td>\n    <td>No</td>\n    <td>If field is set to true, then Yelp will autobid. Set to false if using max_bid\n</td>\n  </tr>\n   <tr>\n    <td>max_bid</td>\n    <td>integer</td>\n    <td>Yes*</td>\n<td>Maximum bid value in cents.<br> \n* Value must be greater than or equal to $0.50 or \"50\". <br>\n* This field is required if is_autobid is false.<br> \n* You can set a max_bid for paced campaigns but will run the risk of potentially underfulfilling if the max_bid is set too low.<br>   \n* If you want to bid a maximum of $25.50, please use a value of “2550” cents and not “25.50” which will result in error.\n* max_bid is not immediately applied and can take up to 24 hours to go live on Yelp's end.<br> \n\n</td>\n  </tr>\n   <tr>\n    <td>pacing method</td>\n    <td>string</td>\n    <td>Yes</td>\n    <td>Possible values are:\n<br>\n    * \"paced\" (default if is_autobid=true)<br>\n    * \"unpaced\" (default if max_bid is set) - cannot be used if is_autobid=true.<br><br>\n\n\"paced\" will attempt to spread the budget evenly throughout the month.<br>\n\"unpaced\" will attempt to spend the budget as fast as possible.<br><br>\n Please reach out to partner-support@yelp.com if you're interested in using unpaced campaigns before using that setting.<br>\n      \n  </td>\n  </tr>\n   <tr>\n    <td>fee_period</td>\n    <td>string</td>\n    <td>Yes</td>\n<td>\nPossible values are:<br>\n* CALENDAR_MONTH <br>\n* ROLLING_MONTH<br><br>\n\nThe fee_period determines the time frame for the CPC Program. If CALENDAR_MONTH, then budgets will reset at the 1st of every month. If ROLLING_MONTH, then budgets will reset every 30 days. Default is CALENDAR_MONTH.\n</td>\n  </tr>\n  <tr>\n    <td>\n      ad_categories\n    </td>\n    <td>\n      list of strings\n    </td>\n    <td>\n      Yes\n    </td>\n    <td>\n      You are able to choose any of the categories of the specified business and run the CPC campaign for only these categories.\n\t\t<br><br>\nYou get the categories of a business using the <a href=\"https://docs.developer.yelp.com/reference/v3_business_info\">Get business by ID</a> endpoint.\n<br>Use the alias of the categories (field categories[].alias).\n<br><br>\nExample: If the business has the categories hvac and plumbing, you can run two different campaigns for each category with a different budget each.\n      </td>\n  </tr>\n</table>"
}
[/block]

**Usage Example for creating CPC program with $200.00 budget and maximum bid of $5.00 starting on Jan 1, 2016 and ending on Jan 31, 2016:**

**Example Request:**

```javascript
curl \
  -X POST \
  --user "{username}:{password}" \
  https://partner-api.yelp.com/v1/reseller/program/create?business_id=WavvLdfdP6g8aZTtbBQHTw&program_name=CPC&budget=20000&max_bid=500&is_autobid=false&start=2016-01-01&end=2016-01-31 
```

**Example Response:**

```javascript
Response: 
{
	"job_id": "prvtN-nilb4mUynGGgKuBQ"
}
```

See <a href="#receipting">Receipting</a> for responses after completion of the request

**Usage Example for adding Branded Profile program that starts immediately:**

**Example Request:**

```javascript
curl \
  --user "{username}:{password}" \
  -X POST \
  https://partner-api.yelp.com/v1/reseller/program/create?business_id=WavvLdfdP6g8aZTtbBQHTw&program_name=BP
```

**Example Response:**

```javascript
Response: 
{
	"job_id": "prvtN-nilb4mUynGGgKuBQ"
}
```

See <a href="#receipting">Receipting</a> for responses after completion of the request

**Usage Example for adding Enhanced Profile program that starts immediately:**

**Example Request:**

```javascript
curl \
  --user "{username}:{password}" \
  -X POST \
  https://partner-api.yelp.com/v1/reseller/program/create?business_id=WavvLdfdP6g8aZTtbBQHTw&program_name=EP
```

**Example Response:**

```javascript
Response: 
{
	"job_id": "prvtN-nilb4mUynGGgKuBQ"
}
```

See <a href="#receipting">Receipting</a> for responses after completion of the request

## Modify Program

### HTTP POST

<https://partner-api.yelp.com/v1/reseller/program/{program_id}/edit>

**Request:**

```javascript
curl \
  -X POST \
  --user "{username}:{password}" \
  https://partner-api.yelp.com/v1/reseller/program/<program_id>/edit?start=<date>&end=<date>
```

**Description:**

This endpoint will allow modification to attributes of an existing program, \<program\_id>.  This endpoint will be incapable of setting the end date to be a date in the past, or modifying the start date of a program that has already started, or modifying the start date to be before the current time. Programs will end at the end of day of the end date.

**Common Program Parameters: (edit)**<br><br>\
The following table describes the request parameters for all programs.

[block:html]
{
  "html": "<table>\n<table border=\"1\">\n  <tr>\n    <th>Property Name</th>\n    <th>Value</th>\n    <th>Optional</th>\n    <th>Description</th>\n  </tr>\n  <tr>\n    <td>program_id</td>\n    <td>string</td>\n    <td>No</td>\n    <td>The program_id that needs to be modified.</td>\n  </tr>\n  \n</tr>\n<tr>\n    <td>start</td>\n    <td>date</td>\n    <td>Yes</td>\n    <td>Start date for the specified program\n</td>\n  </tr>\n   <tr>\n    <td>end</td>\n    <td>date</td>\n    <td>Yes</td>\n<td>End date for the specified program\n</td>\n  </tr>\n</table>\n<br>"
}
[/block]

**CPC Program Parameters: (edit)**<br>\
The following table describes the request parameters for CPC programs.

[block:html]
{
  "html": "<table>\n<table border=\"1\">\n  <tr>\n    <th>Property Name</th>\n    <th>Value</th>\n    <th>Optional</th>\n    <th>Description</th>\n  </tr>\n  <tr>\n    <td>budget</td>\n    <td>integer</td>\n    <td>Yes</td>\n    <td>Monthly budget in cents.</td>\n  </tr>\n  <tr>\n    <td>future_budget_date</td>\n    <td>date</td>\n    <td>Yes</td>\n    <td>Schedule an upcoming budget change for campaign.</td>\n  </tr>\n  \n</tr>\n<tr>\n    <td>max_bid</td>\n    <td>integer</td>\n    <td>Yes</td>\n    <td>Maximum bid value in cents.  Can only be changed if program is using max_bid option. * The minimum value is $0.50 which is \"50\"\n</td>\n  </tr>\n   <tr>\n    <td>pacing_method</td>\n    <td>string</td>\n    <td>Yes</td>\n<td>\nPossible values are:<br>\n* \"paced\" <br>\n* \"unpaced\"<br>\n\n</td>\n  </tr>\n    <tr>\n    <td>\n      ad_categories\n    </td>\n    <td>\n      list of strings\n    </td>\n    <td>\n      Yes\n    </td>\n    <td>\n      You are able to choose any of the categories of the specified business and run the CPC campaign for only these categories.\n\t\t<br><br>\nYou get the categories of a business using the <a href=\"https://docs.developer.yelp.com/reference/v3_business_info\">Get business by ID</a> endpoint.\n<br>Use the alias of the categories (field categories[].alias).\n<br><br>\nExample: If the business has the categories hvac and plumbing, you can run two different campaigns for each category with a different budget each.\n      </td>\n  </tr>\n</table>"
}
[/block]

**Usage Example for modifying budget to $250.00 and maximum bid to $10.00:**

**Example Request:**

```javascript
curl \
  --user "{username}:{password}" \
  -X POST \
  https://partner-api.yelp.com/v1/reseller/program/c6HT44PKCaXqzN_BdgKPCw/edit?budget=25000&max_bid=1000
```

**Example Response:**

```javascript
Response: 
{
	"job_id": "yf8sGfL9NNRpHoXmKudBwg"
}
```

See sample request & response when viewing status of a job id for a modified program:

**Example Request:**

```javascript
curl \
  -X GET \
  -H "Accept: application/json" \
  --user "{username}:{password}" \
  https://partner-api.yelp.com/v1/reseller/status/yf8sGfL9NNRpHoXmKudBwg
```

**Response Format:**

<pre style="color:OliveDrab;">
{
  "status": "COMPLETED",
  "completed_at": {datetime},
  "created_at": {datetime}>,
  "business_results": [
    {
      "status": "COMPLETED",
      "identifier_type": "PROGRAM",
      "identifier": {program_id},
      "update_results": {
        "program_modified": {
          "budget": {
            "status": "COMPLETED",
            "requested_value": {budget_value}
          },
          "program_id": {
            "status": "COMPLETED",
            "requested_value":{program_id}
          },
          "max_bid": {
            "status": "COMPLETED",
            "requested_value": {max_bid_value}
          }
        }
      }
    }
  ]
}
</pre>

**Usage Example for changing end date:**

**Example Request:**

```javascript
curl \
  --user "{username}:{password}" \
  -X POST \
  https://partner-api.yelp.com/v1/reseller/program/c6HT44PKCaXqzN_BdgKPCw/edit?end=<date>
```

**Example Response:**

```javascript
Response: 
{
	"job_id": "prvtN-nilb4mUynGGgKuBQ"
}
```

<a name="terminate_program"></a>

## Terminate Program

### HTTP POST

<https://partner-api.yelp.com/v1/reseller/program/{program_id}/end>

**Request:**

```javascript
curl \
  -X POST \
  --user "{username}:{password}" \
  https://partner-api.yelp.com/v1/reseller/program/<program_id>/end
```

**Description:**

This will immediately end the program specified by `<program_id>`.

[block:html]
{
  "html": "<table>\n<table border=\"1\">\n  <tr>\n    <th>Property Name</th>\n    <th>Value</th>\n    <th>Optional</th>\n    <th>Description</th>\n  </tr>\n  <tr>\n    <td>program_id</td>\n    <td>string</td>\n    <td>No</td>\n    <td>The program_id to terminate</td>\n  </tr>\n</table>"
}
[/block]

**Usage:**

**Example Request:**

```javascript
curl \
  -X POST \
  --user "{username}:{password}" \
  https://partner-api.yelp.com/v1/reseller/program/c6HT44PKCaXqzN_BdgKPCw/end
```

**Example Response:**

```javascript
Response: 
{
	"job_id": "prvtN-nilb4mUynGGgKuBQ"
}
```

See sample request & response when viewing status of a job id for a terminated program:

**Example Request:**

```javascript
curl \
  -X GET \
  -H "Accept: application/json" \
  --user "{username}:{password}" \
  https://partner-api.yelp.com/v1/reseller/status/prvtN-nilb4mUynGGgKuBQ
```

**Example Response:**

<pre style="color:OliveDrab;">
{<br>
  "status": "COMPLETED",
  "completed_at": <datetime>,
  "created_at": <datetime>,
  "business_results": [
    {
      "status": "COMPLETED",
      "identifier_type": "PROGRAM",
      "identifier": <program_id>,
      "update_results": {
        "program_ended": {
          "status": "COMPLETED",
          "requested_value": <program_id>
        }
      }
    }
  ]
}
</pre>

<a name="receipting"></a>

## Receipting

### HTTP GET

<https://partner-api.yelp.com/v1/reseller/status/{job_id}>

**Request:**

```javascript
curl \
  -X GET \
  --user "{username}:{password}" \
  https://partner-api.yelp.com/v1/reseller/status/<job_id>
```

**Description:**

This endpoint expects a job\_id, and will return the status of the updates associated with the job.

**Usage:**

**Example Request:**

```javascript
curl \
  -X GET \
  -H "Accept: application/json" \
  --user "{username}:{password}" \
  https://partner-api.yelp.com/v1/reseller/status/c6HT44PKCaXqzN_BdgKPCw
```

Response:

<a name="cpc_program_example"></a>\
Example for CPC program\ <br>

<pre style="color:OliveDrab;">
{
  "status": [COMPLETED|PROCESSING],
  "completed_at": {datetime},
  "created_at": {datetime},
  "business_results": [
    {
      "status": [COMPLETED|PROCESSING],
      "identifier_type": "BUSINESS",
      "identifier": {yelp_business_id},
      "update_results": {
        "program_added": {
          "start": {
            "status": [COMPLETED|PROCESSING],
            "requested_value": {datetime},
          },
          "program_name": {
            "status": [COMPLETED|PROCESSING],
            "requested_value": {program_name}
          },
          "end": {
            "status": [COMPLETED|PROCESSING],
            "requested_value": {datetime},
          },
          "program_id": {
            "status": [COMPLETED|PROCESSING],
            "requested_value": {program_id}
          },
          "yelp_business_id": {
            "status": [COMPLETED|PROCESSING],
            "requested_value": {yelp_business_id}
          },
						"is_autobid": {
            "status": [COMPLETED|PROCESSING],
            "requested_value": [true|false]
          },
						"max_bid": {
            "status": [COMPLETED|PROCESSING],
            "requested_value": {max_bid_value}
          },
						 "budget": {
            "status": [COMPLETED|PROCESSING],
            "requested_value": {budget_value}
          }
        }
      }
    }
  ]
}
</pre>

<a name="bp_program_example"></a>\
Example for BP program<br>

<pre style="color:OliveDrab;">
{
  "status": [COMPLETED|PROCESSING],
  "completed_at": {datetime},
  "created_at": {datetime},
  "business_results": [
    {
      "status": [COMPLETED|PROCESSING],
      "identifier_type": "BUSINESS",
      "identifier": {yelp_business_id},
      "update_results": {
        "program_added": {
          "start": {
            "status": [COMPLETED|PROCESSING],
            "requested_value": {datetime},
          },
          "program_name": {
            "status": [COMPLETED|PROCESSING],
            "requested_value": {program_name}
          },
          "end": {
            "status": [COMPLETED|PROCESSING],
            "requested_value": {datetime},
          },
          "program_id": {
            "status": [COMPLETED|PROCESSING],
            "requested_value": {program_id}
          },
          "yelp_business_id": {
            "status": [COMPLETED|PROCESSING],
            "requested_value": {yelp_business_id}
          }
        }
      }
    }
  ]
}
</pre>

## Pause Program

### HTTP POST

<https://partner-api.yelp.com/program/{program_id}/pause/v1>

**Request:**

```
javascript
curl \
  -X POST \
  --user "{username}:{password}" \
  https://partner-api.yelp.com/program/<program_id>/pause/v1
```

**Response:**

`HTTP 202` Empty response

**Description:**

This endpoint will allow a currently running CPC program to be paused. The campaign will temporarily stop running until it is resumed by the [Program Resume](#program-resume) endpoint.

## Resume Program

### HTTP POST

<https://partner-api.yelp.com/program/{program_id}/resume/v1>

**Request:**

```javascript
curl \
  -X POST \
  --user "{username}:{password}" \
  https://partner-api.yelp.com/program/<program_id>/resume/v1
```

**Response:**

`HTTP 202` Empty response

**Description:**

This endpoint will allow a currently paused CPC program to be resumed.

# Advertising API Errors

## Error Codes

The following general error codes may be returned by the Advertising API:

[block:html]
{
  "html": "<table>\n<table border=\"1\">\n  <tr>\n    <th>Error code</th>\n    <th>Message</th>\n    <th>Description</th>\n  </tr>\n  <tr>\n    <td>503</td>\n    <td>Service Unavailable</td>\n    <td>The API is currently unavailable\n</td>\n  </tr>\n  <tr>\n    <td>403</td>\n    <td>Authorization Error</td>\n    <td>Sent when the partner is not authorized for a particular request (e.g. They don’t have access to either the business, metric, or time range requested.)</td>\n  <tr>\n    <td>500</td>\n    <td>Internal Error</td>\n    <td>Something went wrong.</td>\n  <tr>\n    <td>202</td>\n    <td>Job not complete</td>\n    <td>The job has been submitted and is being worked on. Please resubmit at another time.</td>\n  <tr>\n      <td>400</td>\n      <td>Invalid Request</td>\n      <td>The request submitted is invalid</td>\n  <tr>\n      <td>401</td>\n      <td>Authentication Error</td>\n      <td>The user is not who they seem or their credentials are incorrect.</td>\n  <tr>\n      <td>404</td>\n      <td>Not Found</td>\n      <td>Resource not found</td>\n</table>\n"
}
[/block]

## Error Messages

When the Advertising API returns a job\_id, the response from the <a href="#receipting">/reseller/status/</a> endpoint may contain errors.

The <b>business\_results.status</b> field can be set to REJECTED if the business is closed or removed from search or if the program is no longer active. The possible error codes may be returned in the <b>business\_results.error.code</b> field:

[block:html]
{
  "html": "<table>\n<table border=\"1\">\n  <tr>\n    <th>Error code</th>\n    <th>Message</th>\n  </tr>\n   <tr>\n    <td>BUSINESS_NOT_ACTIVE</td>\n    <td>This business cannot be accessed because it is closed.</td>\n  </tr>  \n <tr>\n    <td>PROGRAM_NOT_ACTIVE_CLOSED_BUSINESS</td>\n    <td>This program is no longer active because has been closed. Contact partner-support@yelp.com if the business is erroneously closed.</td>\n  </tr>  \n   <tr>\n    <td>PROGRAM_NOT_ACTIVE_BUSINESS_REMOVED_FROM_SEARCH</td>\n    <td>This program is no longer active because the business has been removed from search by Yelp due to duplicate, eligibility status, etc. Contact partner-support@yelp.com if the business is erroneously removed.</td>\n  </tr>  \n   <tr>\n    <td>PROGRAM_HAS_EXPIRED</td>\n    <td>This program cannot be modified. The program is no longer active because the program end date has passed, or the business has been removed from search by Yelp due to being a duplicate listing, eligibility status, etc. Contact partner-support@yelp.com with the yelp_business_id if the business was erroneously ended or removed.</td>\n  </tr>  \n</table>"
}
[/block]

Here is an example error response:

<pre style="color:OliveDrab;">
{
  "status": "COMPLETED",
  "completed_at": {datetime},
  "created_at": "{datetime},
  "business_results": [
    {
      "status": <b><font style="color:Red;">"REJECTED"</font></b>,
      "identifier_type": "BUSINESS",
      "identifier": {yelp_business_id},
      "error": {
        "message": "This program is no longer active because the business has been removed from search by Yelp due to duplicate, eligibility status, etc. Contact partner-support@yelp.com if the business is erroneously removed.",
        "code": "PROGRAM_NOT_ACTIVE_BUSINESS_REMOVED_FROM_SEARCH"
      }
    }
  ]
}
</pre>

Even if the <b>business\_results.status</b> field is set to COMPLETED, there may be errors in when the <b>update\_results.program\_added.status</b> or <b>update\_results.program\_modified.status</b> is set to REJECTED. The possible error codes may be returned in the <b>update\_results.program\_added.error.code</b> or <b>update\_results.program\_modified.error.code</b> field in this scenario:

[block:html]
{
  "html": "<table>\n<table border=\"1\">\n  <tr>\n    <th>Error code</th>\n    <th>Message</th>\n  </tr>\n  <tr>\n    <td>INVALID_OR_MISSING_KEY</td>\n    <td>Invalid or missing required key(s): {required_keys}</td>\n  </tr>\n  <tr>\n    <td>PROGRAM_ALREADY_RUNNING_BY_ANOTHER_PROVIDER</td>\n    <td>You cannot run this program because the client has already purchased this product from another provider.</td>\n  </tr>\n  <tr>\n    <td>CANNOT_ADD_PROGRAM_IN_PAST</td>\n    <td>Cannot add a program that starts in the past.</td>\n  </tr>\n  <tr>\n    <td>PROGRAM_ALREADY_REQUESTED</td>\n    <td>You already requested to enable this product for this client.</td>\n  </tr>  \n  <tr>\n    <td>CONFLICTS_WITH_ANOTHER_ACTIVE_PROGRAM</td>\n    <td>This program conflicts with a currently active or recently ended program. If you are trying to add a new program, please use a start date subsequent to the end date of any conflicting programs.</td>\n  </tr>\n    <tr>\n    <td>PARENT_WAS_REJECTED</td>\n    <td>Another part of your request failed, check the other attributes of our response to find the root error cause.</td>\n  </tr>\n  <tr>\n    <td>CANNOT_DECREASE_BUDGET_BELOW_AMOUNT_ALREADY_SPENT</td>\n    <td>Campaign has already spent {amount_spent}. Cannot decrease budget below actual spend.</td>\n  </tr>  \n   <tr>\n    <td>CURRENCY_MISMATCH</td>\n    <td>Cannot change current type; currency must remain consistent.</td>\n  </tr>\n    <tr>\n    <td>BUSINESS_RESTRICTED_FROM_ADVERTISING</td>\n    <td>Yelp has blocked this locations ability to purchase advertising. Reach out to partner-support@yelp.com to request an exception to this block.</td>\n  </tr>\n   <tr>\n    <td>INVALID_PRICE</td>\n    <td>Invalid price. Must be numerical formatted in cents.</td>\n  </tr>  \n   <tr>\n    <td>UNSUPPORTED_CATEGORIES</td>\n    <td>Category is not supported: The category of the business you are trying to advertise is declined due to policy restrictions.</td>\n  </tr>  \n   <tr>\n    <td>BID_TOO_HIGH_FOR_BUDGET</td>\n    <td>Bid exceeds total prorated budget. Please increase budget to increase your chances of ad display.</td>\n  </tr>  \n     <tr>\n    <td>COULD_NOT_MODIFY_PROGRAM</td>\n    <td>Could not modify specified program.</td>\n  </tr>\n     <tr>\n    <td>NO_CATEGORIES</td>\n    <td>The business does not have categories or they are awaiting approval.</td>\n  </tr> \n  <tr>\n    <td>CAMPAIGN_BUDGET_VIOLATES_PROMO_RESTRICTIONS</td>\n    <td>Campaign budgeted outside of restrictions set by associated promo.</td>\n  </tr>\n</table>"
}
[/block]

Here is an example error response:

<pre style="color:OliveDrab;">
{
  "status": "COMPLETED",
  "completed_at": {datetime},
  "created_at": "{datetime},
  "business_results": [
    {
      "status": "COMPLETED",
      "identifier_type": "BUSINESS",
      "identifier": {yelp_business_id},
      "update_results": {
        "program_added": {
          "status": <b><font style="color:Red;">"REJECTED"</font></b>,
          "requested_value": {
          ...

 

<br />

```
```

> 📘 Check out our Advertising API Reference Page
> 
> :owlbert: [Advertising API Endpoints](https://docs.developer.yelp.com/v1.0/reference#create-profile)