> ## Documentation Index
> Fetch the complete documentation index at: https://developer.box.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Create a Platform App

export const MultiRelatedLinks = ({sections = []}) => {
  if (!sections || sections.length === 0) {
    return null;
  }
  return <div className="space-y-8">
      {sections.map((section, index) => <RelatedLinks key={index} title={section.title} items={section.items} />)}
    </div>;
};

export const RelatedLinks = ({title, items = []}) => {
  const getBadgeClass = badge => {
    if (!badge) return "badge-default";
    const badgeType = badge.toLowerCase().replace(/\s+/g, "-");
    return `badge-${badge === "ガイド" ? "guide" : badgeType}`;
  };
  if (!items || items.length === 0) {
    return null;
  }
  return <div className="my-8">
      {}
      <h3 className="text-sm font-bold uppercase tracking-wider mb-4">{title}</h3>

      {}
      <div className="flex flex-col gap-3">
        {items.map((item, index) => <a key={index} href={item.href} className="py-2 px-3 rounded related_link hover:bg-[#f2f2f2] dark:hover:bg-[#111827] flex items-center gap-3 group no-underline hover:no-underline border-b-0">
            {}
            <span className={`px-2 py-1 rounded-full text-xs font-semibold uppercase tracking-wide flex-shrink-0 ${getBadgeClass(item.badge)}`}>
              {item.badge}
            </span>

            {}
            <span className="text-base">{item.label}</span>
          </a>)}
      </div>
    </div>;
};

export const Link = ({href, children, className, ...props}) => {
  const localizedHref = localizeLink(href);
  return <a href={localizedHref} className={className} {...props}>
      {children}
    </a>;
};

A Platform App allows for interaction with our 150+ endpoints.
For example, downloading/uploading, searching, applying metadata and more.

## Prerequisites

Access to the [Developer Console][dev-console].

## Create a Platform App

1. Navigate to the [Developer Console][dev-console].
2. Click **New App**.
3. Select an app type: **User** for apps where users link their Box accounts, or **Server** for backend services infrastructure.
4. If you selected **Server**, you may also be asked to choose an authentication method (see below for more information).
5. Click **Create**.

For **Server** apps, <Link href="/guides/authentication/client-credentials">Client Credentials Grant</Link>
is always the default. The **Switch
server app auth type (CCG or JWT)** setting in **Admin Console > Enterprise Settings > Platform Apps** controls whether the
method is locked:

* When switching is **enabled** (the default for free developer accounts), the
  app is created with Client Credentials Grant and you can change it to
  <Link href="/guides/authentication/jwt">JWT</Link> - or back - afterward.
* When switching is **disabled** (the default for enterprises), the dialog shows
  a **Select Method** step with Client Credentials Grant preselected. You have the option to
  pick <Link href="/guides/authentication/jwt">JWT</Link> at creation instead.
  The method is then fixed for the life of the app.

See <Link href="/guides/authentication/select#changing-between-client-credentials-and-jwt">Select Auth Method</Link>
for guidance on choosing the method.

## Configure application settings

After you create a Platform App, the settings screen is displayed.

### General settings

* **App Name** - the name you set up during the app creation, you can change it here if needed.
* **App Description** - provide a description for your app (optional).
* **Contact Email** - this is set to the developer of the application by default.
  Keep in mind that once you publish your app, this email is publicly visible to Box users
  who view your app in the <Link href="/guides/applications/integrations">Integrations</Link>. We recommend to change it to a
  support email address, so that users can reach out to support in case of any issues with
  the integration.

### Configuration

* **Purpose** - select the purpose of your app from the drop-down list.
  Depending on the option you choose, you might need to specify further details.

| Purpose                           | Details                                                                                                                                  |
| --------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| **Automation**, **Custom Portal** | Specify if the app is built by a customer or partner.                                                                                    |
| **Integration**                   | Specify the integration category, external system name if you're integrating with one, and if the app is built by a customer or partner. |
| *Other*                           | Specify the app purpose and if it is built by a customer or partner.                                                                     |

* **Authentication Method** - how your app authenticates to the Box APIs.

| App type                  | Auth method                     | Details                                                                                                                                                                                                                                                                                          |
| ------------------------- | ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **User Authentication**   | OAuth 2.0                       | Specify the client ID and client secret.                                                                                                                                                                                                                                                         |
| **Server Authentication** | Client Credentials Grant or JWT | Chosen during app creation or set in the **Configuration** tab, depending on the **Switch server app auth type (CCG or JWT)** enterprise setting. See <Link href="/guides/authentication/select#changing-between-client-credentials-and-jwt">Changing between Client Credentials and JWT</Link>. |

* **Developer Token** - a developer token is created automatically when you create a Platform App.
* **Application Scopes** - choose the scopes you want to grant to your app. See the <Link href="/guides/api-calls/permissions-and-errors/scopes">scopes guide</Link> for detailed information on each option.
* **Advanced Features** - enable the advanced features your application requires.
* **CORS Domains** - add the domains you want to allow requests from.

[dev-console]: https://app.box.com/developers/console

<RelatedLinks
  title="RELATED GUIDES"
  items={[
{ label: translate("Select Auth Method"), href: "/guides/authentication/select", badge: "GUIDE" }
]}
/>
