# Create profile

Create a new profile with personally identifiable information (PII).

The profile can include various identity fields (SSN, email, phone) which are used for identity verification
and record matching in check products. The more identity fields provided, the better
the matching and verification capabilities will be.

Endpoint: POST /profiles
Version: 1.0
Security: get-bearer-token-using-oauth2

## Request fields (application/json):

  - `address` (object, required)
    A US postal address supplied in a **request** (for example on check create or profile create/update).
When this object is present, `street`, `city`, `state`, and `zip_code` are required.

  - `address.street` (string, required)
    Street address, including house/building number and street name.
Apartment or unit numbers may be included; they are stored but are not used for criminal-record address matching.
    Example: 123 Main St

  - `address.city` (string, required)
    The name of the city or municipality.
    Example: Frankfort

  - `address.state` (string, required)
    A two-letter US state code.
    Example: CA

  - `address.zip_code` (string, required)
    US Postal Service ZIP code (5-digit or 9-digit ZIP+4 format).
    Example: 94105

  - `address.country` (string)
    A two-letter country code in ISO 3166-1 alpha-2 format.
    Example: US

  - `addresses` (array)
    **Request only.** Array of addresses supplied by the caller. Index 0 is the primary address.
When the property is provided, at least one address entry is required.
For check requests, records may be matched against any address in the array.
The singular `address` field remains supported for backwards compatibility and maps to the primary address.

  - `custom_id` (string)
    An identifier of your choice, if you wish to use one. Limited to 64 alphanumeric characters, underscores, and hyphens.
    Example: my-custom-id-123

  - `profile_id` (string, required)
    Identifier of an existing profile containing search criteria.
    Example: 2b8313e8-4efd-45a1-b578-952b8313e890

## Response 201 fields (application/json):

  - `id` (string)
    Identifier of an existing profile containing search criteria.
    Example: 2b8313e8-4efd-45a1-b578-952b8313e890

  - `full_name` (string)
    The full name of the person. Must not be combined with first_name, middle_name, or last_name.
May be combined with `no_middle_name` on create/update; when that flag is `true`, parsing
stores only a first name and surname (any middle token is folded into the last name).

  - `first_name` (string)
    The first name of the person.

  - `middle_name` (string)
    The middle name of the person. Can be null if not provided.

  - `no_middle_name` (boolean)
    Set to `true` to declare that the subject does not have a middle name.
**Mutually exclusive with a non-empty `middle_name`:** the API rejects requests that
supply both a present `middle_name` and `no_middle_name: true`. An empty or null
`middle_name` with `no_middle_name: true` is allowed. A non-empty `middle_name` may be
supplied with `no_middle_name: false`.
**Allowed with `full_name`:** `full_name` and `no_middle_name` may be sent together.
That is not the same as supplying `middle_name` — when the flag is `true`, parsing
stores only a first name and surname, and any token the parser would have treated as
a middle name is folded into the last name (for example `full_name: "John Quincy Doe"`
becomes first name `John` and last name `Quincy Doe`, with `middle_name` empty).
Setting this to `true` clears a middle name already stored on a referenced profile.
Supplying a non-empty `middle_name` without this field sets `no_middle_name` to `false`.
When `true`, products that perform criminal-record identity matching exclude records
with a middle name, narrowing matches to subjects with no middle name on record.
When supplied with `profile_id`, the value is persisted to the referenced profile
(same account-scoped profile the check is created against).
Leave as `false` (or omit) if unsure.

  - `last_name` (string)
    The last name of the person.

  - `dob` (string)
    Date of birth in the form YYYYMMDD.
Must be a valid date and cannot be in the future.
If invalid, the API returns a 400 with a `validation_error` pointing to `/dob`.
    Example: 19950401

  - `phone` (string)
    A phone number in the form +[country code][number including area code].
([E.164 format](https://en.wikipedia.org/wiki/E.164)).
Please note that U.S. phone numbers have a country code of "1" so all U.S. phone numbers ought to start with "+1".
A U.S. number supplied in national format (for example "(415) 555-0123") is normalized to E.164
on write. If the value cannot be parsed as a valid phone number, the API returns a 400 with a
`validation_error`.
    Example: +14155552671

  - `country_code` (string)
    The phone country calling code supplied for a reverse phone verification (for example, "1" or "54").

  - `email` (string)
    An email address.
    Example: john.doe@example.com

  - `ssn` (any)
    US Social Security Number.
**Masked by default** — API responses return `XXX-XX-{last4}`. Full SSN is
available via `?unmask_ssn=true` on endpoints that support it (driver checks and
identity verifications), subject to your account's product configuration. Contact
your account representative to enable SSN unmasking.
**Always `null` on list/index endpoints** (e.g. `GET /profiles`, `GET /checks`), regardless
of masking or unmasking settings. Fetch the individual resource (e.g. `GET /profiles/{id}`)
to see the masked or unmasked value for a specific record.
May also be null on a single-resource response when no SSN was provided.
    Example: XXX-XX-6789

  - `address` (object)
    A US postal address supplied in a **request** (for example on check create or profile create/update).
When this object is present, `street`, `city`, `state`, and `zip_code` are required.

  - `address.street` (string, required)
    Street address, including house/building number and street name.
Apartment or unit numbers may be included; they are stored but are not used for criminal-record address matching.
    Example: 123 Main St

  - `address.city` (string, required)
    The name of the city or municipality.
    Example: Frankfort

  - `address.state` (string, required)
    A two-letter US state code.
    Example: CA

  - `address.zip_code` (string, required)
    US Postal Service ZIP code (5-digit or 9-digit ZIP+4 format).
    Example: 94105

  - `address.country` (string)
    A two-letter country code in ISO 3166-1 alpha-2 format.
    Example: US

  - `addresses` (array)
    **Request only.** Array of addresses supplied by the caller. Index 0 is the primary address.
When the property is provided, at least one address entry is required.
For check requests, records may be matched against any address in the array.
The singular `address` field remains supported for backwards compatibility and maps to the primary address.

  - `custom_id` (string)
    An identifier of your choice, if you wish to use one. Limited to 64 alphanumeric characters, underscores, and hyphens.
    Example: my-custom-id-123

  - `driver_license_number` (string)
    The driver license number. Format dependent on State.
    Example: D1234567

## Response 400 fields (application/json):

  - `code` (string, required)
    A machine-readable error code.
    Example: invalid_request

  - `title` (string, required)
    A human-readable error title.
    Example: Invalid Request

  - `source` (object)
    An object containing references to the source of the error.

  - `source.pointer` (string)
    A JSON Pointer [RFC6901] to the associated entity in the request document.
    Example: /data/attributes/first_name

## Response 401 fields (application/json):

  - `code` (string, required)
    A machine-readable error code.
    Example: invalid_request

  - `title` (string, required)
    A human-readable error title.
    Example: Invalid Request

  - `source` (object)
    An object containing references to the source of the error.

  - `source.pointer` (string)
    A JSON Pointer [RFC6901] to the associated entity in the request document.
    Example: /data/attributes/first_name

## Response 403 fields (application/json):

  - `code` (string, required)
    A machine-readable error code.
    Example: invalid_request

  - `title` (string, required)
    A human-readable error title.
    Example: Invalid Request

  - `source` (object)
    An object containing references to the source of the error.

  - `source.pointer` (string)
    A JSON Pointer [RFC6901] to the associated entity in the request document.
    Example: /data/attributes/first_name

## Response 500 fields (application/json):

  - `code` (string, required)
    A machine-readable error code.
    Example: invalid_request

  - `title` (string, required)
    A human-readable error title.
    Example: Invalid Request

  - `source` (object)
    An object containing references to the source of the error.

  - `source.pointer` (string)
    A JSON Pointer [RFC6901] to the associated entity in the request document.
    Example: /data/attributes/first_name

