# Apps Master API

- **OpenAPI Version:** `3.1.1`
- **API Version:** `2`

The Marketplace APIs allow developers to access data related to their app and its usage in the marketplace.

## Servers

- **URL:** `https://api.zoom.us/v2`

## Operations

### Create apps

- **Method:** `POST`
- **Path:** `/accounts/{accountId}/marketplace/apps`
- **Tags:** App

Create `Server to Server OAuth`, `Meeting SDK` or `General` apps in the Zoom Marketplace.

**[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `marketplace_app:master`

**[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `marketplace:write:app:master`

**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `HEAVY`

#### Parameters

##### `accountId` required

- **In:** `path`

Unique identifier of the account.

`string`

#### Request Body

##### Content-Type: application/json

- **`app_name` (required)**

  `string` — The app's name.

- **`app_type` (required)**

  `string`, possible values: `"s2s_oauth", "meeting_sdk", "general"` — The app's type: \* \`s2s\_oauth\` \&mdash; Server to Server OAuth app. \* \`meeting\_sdk\` \&mdash; Meeting SDK app. \* \`general\`\&mdash; UBF General app.

- **`company_name` (required)**

  `string` — The company's name.

- **`contact_email` (required)**

  `string`, format: `email` — The developer's email.

- **`contact_name` (required)**

  `string` — The developer's name.

- **`active`**

  `boolean`, default: `false` — Only valid for s2s\_oauth app, whether to activate automatically: \* \`true\` \&mdash; Automatically activate the app after creation. It is required that at least one scope should be included in the input parameter. \* \`false\` \&mdash; Do not activate the app after creation.

- **`manifest`**

  `object` — An app manifest object. It should meet the valid manifest schema. If the app\_type equals general, you need to pass this param. Manifest resources: https\://developers.zoom.us/docs/build-flow/manifests/

- **`publish`**

  `boolean`, default: `false` — Only valid for meeting\_sdk app, whether to publish the app to the Marketplace: \* \`true\` \&mdash; The app contains development credentials and production credentials. \* \`false\` \&mdash; The app contains only development credentials.

- **`scopes`**

  `array` — The scopes of the created app: \* \`s2s\_oauth\` \&mdash; If \`active\` field is true, there must be at least one scope. \* \`meeting\_sdk\` \&mdash; Will automatically include \`user\_zak:read\` scope.

  **Items:**

  `string`

**Example:**

```json
{
  "app_type": "s2s_oauth",
  "app_name": "My App",
  "scopes": [
    "meeting:read"
  ],
  "contact_name": "ZOOM",
  "contact_email": "example@example.com",
  "company_name": "ZOOM",
  "active": false,
  "publish": false,
  "manifest": {}
}
```

#### Responses

##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` App created successfully.

###### Content-Type: application/json

- **`app_id`**

  `string` — The app's id.

- **`app_name`**

  `string` — The app's name.

- **`app_type`**

  `string`, possible values: `"s2s_oauth", "meeting_sdk"` — The app's type: \* \`s2s\_oauth\` \&mdash; Server to Server OAuth app. \* \`meeting\_sdk\` \&mdash; Meeting SDK app.

- **`created_at`**

  `string`, format: `date-time` — Date and time this app was created.

- **`development_credentials`**

  `object` — Only when the type is \`meeting\_sdk\` and the \`publish\` field is true, there will be \`production\_credentials\`

  - **`client_id`**

    `string` — The app's client id.

  - **`client_secret`**

    `string` — The app's client secret.

- **`production_credentials`**

  `object` — Only when the type is \`meeting\_sdk\` and the \`publish\` field is true, there will be \`production\_credentials\`

  - **`client_id`**

    `string` — The app's client id.

  - **`client_secret`**

    `string` — The app's client secret.

- **`scopes`**

  `array` — The app's scopes.

  **Items:**

  `string`

**Example:**

```json
{
  "created_at": "2023-02-16T17:32:28Z",
  "app_id": "Bwpq5zXvQr-4PKhtYOD23g",
  "app_name": "My App",
  "app_type": "s2s_oauth",
  "scopes": [
    "meeting:read"
  ],
  "production_credentials": {
    "client_id": "2J5nVOGXQXCvXoRWyGQDow",
    "client_secret": "BzFOrwgq1Gw6KCsyeYnmETU5e4zakGwQ"
  },
  "development_credentials": {
    "client_id": "2J5nVOGXQXCvXoRWyGQDow",
    "client_secret": "BzFOrwgq1Gw6KCsyeYnmETU5e4zakGwQ"
  }
}
```

##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \<br> Bad Request \*\*Error Code:\*\* \`300\` \<br> \* Validation Failed. \<br>

##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \<br> Unauthorized \*\*Error Code:\*\* \`201\` \<br> \* Invalid access token. \<br>

##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \<br> Not Found \*\*Error Code:\*\* \`1500\` \<br> \* The request body is missing required fields. For more information, see the API documentation. \* Only \`Server to Server OAuth\` and \`Meeting SDK\` apps can be created. \* Can't get account owner info. \* Only account's owner can use this API. \* Can't get account info. \<br>

##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \<br> Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/).
