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

# Create people

> Add new or existing people to an account.

## How it works

The following diagram describes the different steps required to create a person with Equals. Click on the image to enlarge it.

<div className="diagram center">
  <img src="https://mintcdn.com/equalsmoney-0d00329a/Gcy_W3pNLgh52Qmj/images/diagram-create-person-flow.svg?fit=max&auto=format&n=Gcy_W3pNLgh52Qmj&q=85&s=cf422fffaba52693084ce8ec65df096e" alt="Diagram showing steps involved in creating a person" width="2382" height="1585" data-path="images/diagram-create-person-flow.svg" />
</div>

## Create a person

<Note>
  **POST** `/v2/people`
</Note>

### Request

Use this request to grant someone access to an account.

If they don't have a `personId`, this request will create both a new `personId` and a `personaId`.
If they already have a `personId`, this request will create a new `personaId` for them.

<CodeGroup>
  ```bash Sample request theme={null}
  curl -i -X POST \
    'https://api.equalsmoney.com/v2/people' \
    -H 'Authorization: ApiKey YOUR_API_KEY_HERE' \
    -H 'Content-Type: application/json' \
    -d '{
      "accountId": "F12345",
      "firstName": "Alison",
      "lastName": "Abraham",
      "roleName": "Viewer",
      "dob": "1996-07-17",
      "emailAddress": "a.abraham@acme.com"
      "primaryMobileNumber": "+447798121212",
      "status": "active",
      "employeeNumber": "948",
      "jobTitle": "Administrative Assistant",
      "notifyEmailTrans": true,
      "createdByPersonaId": "288cf796-c1ad-4ffd-9eb9-af210bff0ea0"
    }'
  ```

  ```bash Request structure theme={null}
  curl -i -X POST \
    'https://api.equalsmoney.com/v2/people' \
    -H 'Authorization: ApiKey YOUR_API_KEY_HERE' \
    -H 'Content-Type: application/json' \
    -d '{
      "accountId": "string",
      "firstName": "string",
      "lastName": "string",
      "roleName": "string",
      "dob": "string",
      "emailAddress": "string",
      "primaryMobileNumber": "string",
      "status": "string",
      "employeeNumber": "string",
      "jobTitle": "string",
      "notifyEmailTrans": boolean,
      "createdByPersonaId": "string"
  }
  ```
</CodeGroup>

#### Request body schema

<ParamField body="accountId" type="string" required>
  The ID of the account that you're adding a person to.

  Allowable values: An existing `accountId` (≤ 36 characters)
</ParamField>

<ParamField body="firstName" type="string" required>
  The person's first name.

  Allowable values: ≤ 256 characters
</ParamField>

<ParamField body="lastName" type="string" required>
  The person's last name.

  Allowable values: ≤ 256 characters
</ParamField>

<ParamField body="roleName" type="string" required>
  The person's role. [Learn more about role types](/pages/people/about-role-types).

  Allowable values: `Owner`,`Admin`, `Payer`, `Viewer`, `Accountant`, `User`
</ParamField>

<ParamField body="dob" type="string or null">
  The person's date of birth.

  Allowable values: A valid string
</ParamField>

<ParamField body="emailAddress" type="string" required>
  The person's email address. This will be used to identify them and cannot be changed later. If a person with this email address already exists, this request will add the existing person to the account. If you're using [approved email domains](../accounts/manage-email-domains), then we'll check whether the email domain is on your list of approved email domains and will return an error if not.

  Allowable values: ≤ 256 characters
</ParamField>

<ParamField body="primaryMobileNumber" type="string or null">
  The person's primary mobile phone number.

  Allowable values: ≤ 50 characters
</ParamField>

<ParamField body="status" type="string">
  The status to give the person.

  Allowable values: `active`, `deactivated`
</ParamField>

<ParamField body="employeeNumber" type="string">
  The person's employee number.

  Allowable values: ≤ 256 characters
</ParamField>

<ParamField body="jobTitle" type="string or null">
  The person's job title.

  Allowable values: ≤ 256 characters
</ParamField>

<ParamField body="notifyEmailTrans" type="boolean">
  Whether or not the person has chosen to receive email notifications. By default, this is set to `false`.

  Allowable values: `true`, `false`
</ParamField>

<ParamField body="createdByPersonaId" type="string (uuid)">
  Your persona ID.

  Allowable values: ≤ 36 characters
</ParamField>

<ParamField body="addToUserPool" type="boolean">
  Whether or not to create a new user in the user pool. By default, this is set to `true`.

  Allowable values: `true`, `false`
</ParamField>

<ParamField body="sendInvite" type="boolean">
  Indicates whether an invitation should be sent to the person, allowing them to complete the sign-up process. This is set to `true` by default.

  Allowable values: `true`, `false`
</ParamField>

<ParamField body="emailTheme" type="string">
  The theme used in emails that are sent to this person.

  Allowable values: `em-light`, `em-dark`
</ParamField>

### Response

If your request is successful, you'll receive a `201` response containing an `id`.

<CodeGroup>
  ```json Sample response theme={null}
  {
    "avatar": {
      "url": "",
      "fileName": ""
    },
    "id": "ef6d922f-70d5-4433-835c-8c77fa40d814",
    "productId": "d926625b-5e11-4ec1-b4cd-0af2a8021efc",
    "sub": "2a5a39cf-fda0-4901-9372-3f9039a2ee94",
    "firstName": "Alison",
    "lastName": "Abraham",
    "title": null,
    "middleInitials": null,
    "dob": "1996-07-17",
    "gender": null,
    "nationality": null,
    "countryOfResidence": null,
    "status": "active",
    "primaryMobileNumber": "+447798121212",
    "primaryEmailAddress": "a.abraham@acme.com",
    "createdAt": "2024-01-02T13:47:01.000Z",
    "updatedAt": "2024-01-02T13:47:02.000Z",
    "emailTheme": "em-light",
    "persona": {
      "id": "32684fcd-b4be-438a-88d2-ee9b5f3eecd3",
      "emailAddress": "a.abraham@acme.com",
      "employeeNumber": "948",
      "workNumber": null,
      "status": "invited",
      "jobTitle": "Administrative Assistant",
      "createdByPersonaId": null,
      "transactionalEmailPreference": true,
      "cardTransactionPushNotificationPreference": false,
      "createdAt": "2024-01-02T13:47:02.000Z",
      "updatedAt": "2024-01-02T13:47:02.000Z",
      "inviteSentDate": "2024-01-02T13:47:02.000Z"
    }
  }
  ```

  ```json Response structure theme={null}
  {
    "avatar": {
      "url": "string",
      "fileName": "string"
    },
    "id": "string",
    "productId": "string",
    "sub": "string",
    "firstName": "string",
    "lastName": "string",
    "title": "string",
    "middleInitials": "string",
    "dob": "string",
    "gender": "string",
    "nationality": "string",
    "countryOfResidence": "string",
    "status": "string",
    "primaryMobileNumber": "string",
    "primaryEmailAddress": "string",
    "createdAt": "string",
    "updatedAt": "string",
    "emailTheme": "string",
    "persona": {
      "id": "string",
      "emailAddress": "string",
      "employeeNumber": "string",
      "workNumber": "string",
      "status": "string",
      "jobTitle": "string",
      "createdByPersonaId": "string",
      "transactionalEmailPreference": boolean,
      "cardTransactionPushNotificationPreference": boolean,
      "createdAt": "string",
      "updatedAt": "string",
      "inviteSentDate": "string"
    }
  }
  ```
</CodeGroup>

For more detailed information about this request and its response, [see the API reference](/api-reference/people/create-a-person).
