> [!WARNING]
> **Warning:** The Chrome Web Store API (V1) is deprecated and will only be supported until 15th October 2026.

This reference describes the methods and resource representation available for the Chrome Web Store
Publish API. Each resource type has one or more data representations and one
or more methods.

See [Using the Chrome Web Store Publish API](https://developer.chrome.com/docs/webstore/using_webstore_api) for a
guide on how to authenticate with and make requests to the API.

## Authorization

All endpoints are authenticated using [OAuth 2.0](https://developers.google.com/accounts/docs/OAuth2).

Valid scopes:

- `https://www.googleapis.com/auth/chromewebstore`
- `https://www.googleapis.com/auth/chromewebstore.readonly`

## API endpoints

For Item Resource details, see the [resource representation](https://developer.chrome.com/docs/webstore/api/v1.md.txt#resource).

All URIs are relative to https://www.googleapis.com.

| Operation | HTTP request | Description |
|---|---|---|
| [get](https://developer.chrome.com/docs/webstore/api.md.txt#get) | **GET** `/chromewebstore/v1.1/items/itemId` | Gets a Chrome Web Store item. Provide `projection="DRAFT"` in URL (case sensitive). |
| [insert](https://developer.chrome.com/docs/webstore/api.md.txt#insert) | **POST** `/upload/chromewebstore/v1.1/items` | Inserts a new item. |
| [publish](https://developer.chrome.com/docs/webstore/api.md.txt#publish) | **POST** `/chromewebstore/v1.1/ items/itemId/publish` | Publishes an item. <br /> The optional `publishTarget` query parameter specifies how the item will be published. Valid values are `"trustedTesters"` and `"default"`. |
| [update](https://developer.chrome.com/docs/webstore/api.md.txt#update) | **PUT** `/upload/chromewebstore/v1.1/ items/itemId` <br /> and <br /> **PUT** `/items/itemId` | Updates an existing item. |

### Get

Gets a Chrome Web Store item. Provide `projection="DRAFT"` (case sensitive) as a URL Parameter.

#### HTTP request

```text
GET https://www.googleapis.com/chromewebstore/v1.1/items/EXTENSION_ID?projection=DRAFT
```

#### Parameters

| Parameter name | Value | Description |
|---|---|---|
| **Path parameters** |||
| `itemId` | string | Unique identifier representing the Chrome App, Chrome Extension, or the Chrome Theme. |
| **Required query parameters** |||
| `projection` | string | Determines which subset of the item information to return. Acceptable values are: - "`DRAFT`": Return information extracted from the current draft. |

#### Authorization

This request requires authorization with the following scope.

```text
https://www.googleapis.com/auth/chromewebstore.readonly
```

The above URL is used as the scope parameter when generating an access token. For more details on API authorization and authentication, consult the [OAuth 2.0 documentation](https://developers.google.com/accounts/docs/OAuth2).

#### Request body

Don't supply a request body with this method.

#### Response

If successful, this method returns an [Items resource](https://developer.chrome.com/docs/webstore/api/v1.md.txt#resource) in the response body.

### Insert

Inserts a new [item](https://developer.chrome.com/docs/webstore/api/v1.md.txt#items).

This method supports an upload URI and accepts uploaded media.

#### HTTP request

```text
POST https://www.googleapis.com/upload/chromewebstore/v1.1/items
```

#### Parameters

| Parameter name | Value | Description |
|---|---|---|
| **Required query parameters** |||
| `uploadType` | string | The type of upload request to the **/upload** URI. The only accepted value is `media`: a simple upload of the media data. |
| **Optional query parameters** |||
| `publisherEmail` | string | The email of the publisher who owns the items. Defaults to the caller's email address. |

#### Authorization

This request requires authorization with the following scope.

```text
https://www.googleapis.com/auth/chromewebstore
```

The above URL is used as the scope parameter when generating an access token. For more details on API authorization and authentication, consult the [OAuth 2.0 documentation](https://developers.google.com/accounts/docs/OAuth2).

#### Request body

Don't supply a request body with this method.

#### Response

If successful, this method returns an [Items resource](https://developer.chrome.com/docs/webstore/api/v1.md.txt#resource) in the response body.

### Publish

Publishes an [item](https://developer.chrome.com/docs/webstore/api/v1.md.txt#items). The item will first be sent for review. If the
item is already under review, calling publish will fail.

You can optionally provide a `publishTarget` in the URL (case sensitive), for
example:

- `?publishTarget="trustedTesters"` to publish to trusted testers.
- `?publishTarget="default"`

#### HTTP request

```text
POST https://www.googleapis.com/chromewebstore/v1.1/items/EXTENSION_ID/publish
```

#### Parameters

| Parameter name | Value | Description |
|---|---|---|
| **Path parameters** |||
| `itemId` | string | The ID of the item to publish. |
| **Optional query parameters** |||
| `publishTarget` | string | Provide defined `publishTarget` in URL (case sensitive): `publishTarget="trustedTesters"` or `publishTarget="default"`. Defaults to `publishTarget="default"`. |
| `deployPercentage` | string | Provide `deployPercentage` for percentage of users who will receive an update to this version. Valid values are non negative integers between 0 and 100. Regardless of value provided, 100% of new user installs receive the latest version. Once provided, this value can only be increased for any given release. Note that using this API endpoint always triggers review, even if only the deploy percentage has been changed. |
| `reviewExemption` | boolean | If set to true, attempts to use the [expedited review](https://developer.chrome.com/docs/webstore/expedited-review) process. If the draft does not qualify and this is set to true, the API call will fail. |

#### Request body

In the request body, you can optionally supply data with the following structure:

##### JSON

```json
{
  "target": string,
  "deployPercentage": string,
  "reviewExemption": boolean
}
```

| Property name | Value | Description |
|---|---|---|
| `target` | `string` | The publish target of this publish operation. This is the same as using publishTarget as a URL query parameter. The string value can either be target="trustedTesters" or target="default". The default value, if none is supplied, is target="default". Recommended usage is to use the URL query parameter to specify the value. |
| `deployPercentage` | `string` | Provide `deployPercentage` for percentage of users who will receive an update to this version. Valid values are non negative integers between 0 and 100. Regardless of value provided, 100% of new user installs receive the latest version. Once provided, this value can only be increased for any given release. Note that using this API endpoint always triggers review, even if only the deploy percentage has been changed. |
| `reviewExemption` | `boolean` | If set to true, attempts to use the [expedited review](https://developer.chrome.com/docs/webstore/expedited-review) process. If the draft does not qualify and this is set to true, the API call will fail. |

#### Authorization

This request requires authorization with the following scope.

```text
https://www.googleapis.com/auth/chromewebstore
```

The above URL is used as the scope parameter when generating an access token. For more details on API authorization and authentication, consult the [OAuth 2.0 documentation](https://developers.google.com/accounts/docs/OAuth2).

#### Response

If successful, this method returns a response body with the following structure:

```json
{
  "kind": "chromewebstore#item",
  "item_id": string,
  "status": [
    string
  ],
  "statusDetail": [
    string
  ]
}
```

| Property name | Value | Description |
|---|---|---|
| `kind` | `string` | Static string value is always `"chromewebstore#item"`. |
| `item_id` | `string` | The ID of this item. |
| `status[]` | `list` | The status code of this publish operation. It may contain multiple elements from the following list: `OK`, `NOT_AUTHORIZED`, `INVALID_DEVELOPER`, `DEVELOPER_NO_OWNERSHIP`, `DEVELOPER_SUSPENDED`, `ITEM_NOT_FOUND`, `ITEM_PENDING_REVIEW`, `ITEM_TAKEN_DOWN`, `PUBLISHER_SUSPENDED`. |
| `statusDetail[]` | `list` | Detailed human-comprehensible explanation of the status code above. |

### Update

Updates an existing [item](https://developer.chrome.com/docs/webstore/api/v1.md.txt#items). The draft revision of the item will be
updated but it won't be sent for review until you call [publish](https://developer.chrome.com/docs/webstore/api/v1.md.txt#publish).

This method supports an upload URI and accepts uploaded media.

#### HTTP request

This method provides media upload functionality through two separate URIs.

- Upload URI, for media upload requests:

  ```text
  PUT https://www.googleapis.com/upload/chromewebstore/v1.1/items/EXTENSION_ID
  ```
- Metadata URI, for metadata-only requests:

  ```text
  PUT https://www.googleapis.com/chromewebstore/v1.1/items/EXTENSION_ID
  ```

#### Parameters

| Parameter name | Value | Description |
|---|---|---|
| **Path parameters** |||
| `itemId` | `string` | The ID of the item to upload. |
| **Required query parameters** |||
| `uploadType` | `string` | The type of upload request to the **/upload** URI. Acceptable values are: `media` - Simple upload. Upload the media only, without any metadata. |

#### Request body

In the request body, supply an [Items resource](https://developer.chrome.com/docs/webstore/api/v1.md.txt#resource) as the metadata.

#### Authorization

This request requires authorization with the following scope.

```text
https://www.googleapis.com/auth/chromewebstore
```

The above URL is used as the scope parameter when generating an access token. For more details on API authorization and authentication, consult the [OAuth 2.0 documentation](https://developers.google.com/accounts/docs/OAuth2).

#### Response

If successful, this method returns an [Items resource](https://developer.chrome.com/docs/webstore/api/v1.md.txt#resource) in the response body.

## Item Resource

```json
{
  "kind": "chromewebstore#item",
  "id": string,
  "publicKey": string,
  "uploadState": string,
  "itemError": [
    (value)
  ]
}
```

| Property name | Value | Description |
|---|---|---|
| `id` | string | Unique ID of the item. |
| `itemError[]` | list | Detail human-readable status of the operation, in English only. Same error messages are displayed when you upload your app to the Chrome Web Store. |
| `kind` | string | Identifies this resource as an Item. Value: the fixed string `"chromewebstore#item"`. |
| `publicKey` | string | Public key of this item. |
| `uploadState` | string | Status of the most recent draft uploaded within the last 24 hours. Only upload attempts which initially return `IN_PROGRESS` are considered. Acceptable values are: - "`FAILURE`" - "`IN_PROGRESS`" - "`NOT_FOUND`" - "`SUCCESS`" <br /> `NOT_FOUND` indicates there has not been an upload in the last 24 hours. |