> ## 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 App User

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

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>;
};

App Users are programmatic user accounts that can be created by apps
using server authentication
(<Link href="/guides/authentication/jwt/jwt-setup">JWT</Link> or
<Link href="/guides/authentication/client-credentials/client-credentials-setup">Client Credentials Grant</Link>).
They represent users, groups, or processes behind the scenes in your
application without requiring a Box account to log in.

Before you can create App Users, your JWT or CCG application must be
<Link href="/guides/authorization/platform-app-approval">authorized</Link> in
the Admin Console, which generates a
<Link href="/platform/user-types#service-account">Service Account</Link>. You
use the Service Account's access token to create App Users through the API.

App Users can only be accessed through the Box APIs and don't have credentials
to log in to `box.com` directly.

## Common App User Patterns

Typically app users are created for a number of different patterns:

* To represent a single application user or group of users without a `box.com` account.
* To represent an application process, such as having the app user monitor all events within an enterprise.
* To provide the application with the ability to completely control the file and folder structure of a user account without the possibility of that content being modified through the `box.com` web app.

## Creating a New App User

To generate a new app user, the minimal information that will be required will
be a name for the app user.

<CodeGroup>
  ```java Java v5 theme={null}
  BoxUser.Info createdUserInfo = BoxUser.createAppUser(api, "A User");
  ```

  ```python Python v4 theme={null}
  new_app_user = client.create_user('App User 123', login=None)
  ```

  ```cs .NET v6 theme={null}
  var userParams = new BoxUserRequest()
  {
      Name = "App User 12",
      ExternalAppUserId = "external-id",
      IsPlatformAccessOnly = true
  };
  BoxUser newUser = await client.UsersManager.CreateEnterpriseUserAsync(userParams);
  ```
</CodeGroup>

To see all available optional parameters that may be set when creating an app
user, see the <Link href="/reference/post-users">create user endpoint</Link>.

<Note>
  Before you can make any changes to the newly created account, you need to
  click the link you receive in the confirmation email.
</Note>

Once the app user is created a user object will be returned. Within the user
object is an ID for the app user, which may be used to make API requests to
modify the user in the future.

<RelatedLinks
  title="RELATED APIS"
  items={[
{ label: translate("Create user"), href: "/reference/post-users", badge: "POST" }
]}
/>

<RelatedLinks
  title="RELATED GUIDES"
  items={[
{ label: translate("Create Managed User"), href: "/guides/users/create-managed-user", badge: "GUIDE" },
{ label: translate("Deprovision Users"), href: "/guides/users/deprovision/index", badge: "GUIDE" },
{ label: translate("Transfer Files & Folders"), href: "/guides/users/deprovision/transfer-folders", badge: "GUIDE" }
]}
/>
