POST /user/create
For Plaid products and flows that use the user object, /user/create provides you a single token to access all data associated with the user. You must call this endpoint before calling /link/token/create if you are using any of the following: Plaid Check, Income Verification, Multi-Item Link, or Plaid Protect.
For customers who began using this endpoint on or after December 10, 2025, this endpoint takes a client_user_id and an identity object and will return a user_id. For customers who began using it before that date, the endpoint takes a client_user_id and a consumer_report_user_identity object and will return a user_token and user_id. For more details, see New User APIs.
In order to create a Plaid Check Consumer Report for a user, the identity (new) or consumer_report_user_identity (legacy) object must be present. If it is not provided during the /user/create call, it can be added later by calling /user/update.
In order to generate a Plaid Check Consumer Report, the following identity fields, at minimum, are required and must be non-empty: name, date_of_birth, emails, phone_numbers, and addresses, (with at least one email, phone number, and address designated as primary). Plaid Check Consumer Reports can only be created for US-based users; the user's address country must be US. If creating a report for sharing with a GSE such as Fannie or Freddie, the user's full SSN must be provided via the id_numbers field. Providing at least a partial SSN is also strongly recommended for all use cases, since it improves the accuracy of matching user records during compliance processes such as file disclosure, dispute, or security freeze requests.
When using Plaid Protect, it is highly recommended that you provide an identity object to better identify and block fraud across your Link sessions.
Plaid will normalize identity fields before storing them and utilize the same identity across different user-based products.
Servers
- https://production.plaid.com
- https://sandbox.plaid.com
Request headers
| Name | Type | Required | Description |
|---|---|---|---|
Content-Type |
String | Yes |
The media type of the request body.
Default value: "application/json" |
Plaid-New-User-API-Enabled |
Boolean | No |
The HTTP header used in API requests to determine which set of User APIs to invoke: the legacy CRA version or the new User API version. Default value: false |
Request body fields
| Name | Type | Required | Description |
|---|---|---|---|
client_id |
String | No |
Your Plaid API |
end_customer |
String | No |
A unique ID representing a CRA reseller's end customer. Maximum of 128 characters. |
with_upgraded_user |
Boolean | No |
When |
identity |
Object | No |
ClientUserIdentity is the shared user identity construct across /user/* routes. |
identity.name |
Object | No |
User name information. |
identity.name.family_name |
String | Yes |
User's family name. |
identity.name.given_name |
String | Yes |
User's given name. |
identity.date_of_birth |
String | No |
The user's date of birth, to be provided in the format "yyyy-mm-dd". |
identity.phone_numbers[] |
Array | No |
The user's phone numbers, in E.164 format: +{countrycode}{number}. For example: "+14157452130". Phone numbers provided in other formats will be parsed on a best-effort basis. Phone number input is validated against valid number ranges; number strings that do not match a real-world phone numbering scheme may cause the request to fail, even in the Sandbox test environment. |
identity.phone_numbers[].data |
String | Yes |
User's phone number. |
identity.phone_numbers[].primary |
Boolean | Yes |
Indicates whether this is the primary phone number for the User. |
identity.addresses[] |
Array | No |
The user's addresses. |
identity.addresses[].region |
String | No |
State, province or region. |
identity.addresses[].street_2 |
String | No |
Second line of street address. |
identity.addresses[].primary |
Boolean | Yes |
Indicates whether this is the primary address for the User. |
identity.addresses[].street_1 |
String | No |
First line of street address. |
identity.addresses[].postal_code |
String | No |
Postal or ZIP code. |
identity.addresses[].country |
String | Yes |
Country code. |
identity.addresses[].city |
String | No |
City name. |
identity.id_numbers[] |
Array | No |
The user's ID numbers. |
identity.id_numbers[].type |
String | Yes |
A globally unique and human readable ID type, specific to the country and document category. For more context on this field, see Input Validation Rules. Valid values:
|
identity.id_numbers[].value |
String | Yes |
Value of identity document value typed in by user. Alpha-numeric, with all formatting characters stripped. For specific format requirements by ID type, see Input Validation Rules. |
identity.emails[] |
Array | No |
The user's emails. |
identity.emails[].data |
String | Yes |
User's email. |
identity.emails[].primary |
Boolean | Yes |
Indicates whether this is the primary email for the User. |
secret |
String | No |
Your Plaid API |
client_user_id |
String | Yes |
A unique ID representing the end user. Maximum of 128 characters. Typically this will be a user ID number from your application. Personally identifiable information, such as an email address or phone number, should not be used in the |
consumer_report_user_identity |
Object | No |
This field is only used by integrations created before December 10, 2025. All other integrations must use the |
consumer_report_user_identity.date_of_birth |
String | Yes |
To be provided in the format "yyyy-mm-dd". This field is required for all Plaid Check customers. |
consumer_report_user_identity.primary_address |
Object | Yes |
Data about the components comprising an address. |
consumer_report_user_identity.primary_address.region |
String | Yes |
The region or state. In API versions 2018-05-22 and earlier, this field is called |
consumer_report_user_identity.primary_address.postal_code |
String | Yes |
The postal code. In API versions 2018-05-22 and earlier, this field is called |
consumer_report_user_identity.primary_address.country |
String | Yes |
The ISO 3166-1 alpha-2 country code |
consumer_report_user_identity.primary_address.street |
String | Yes |
The full street address
Example: |
consumer_report_user_identity.primary_address.city |
String | Yes |
The full city name |
consumer_report_user_identity.last_name |
String | Yes |
The user's last name |
consumer_report_user_identity.ssn_last_4 |
String | No |
The last 4 digits of the user's social security number. |
consumer_report_user_identity.phone_numbers[] |
Array | Yes |
The user's phone number, in E.164 format: +{countrycode}{number}. For example: "+14157452130". Phone numbers provided in other formats will be parsed on a best-effort basis. Phone number input is validated against valid number ranges; number strings that do not match a real-world phone numbering scheme may cause the request to fail, even in the Sandbox test environment. |
consumer_report_user_identity.ssn_full |
String | No |
The user's full social security number. This field should only be provided by lenders intending to share the resulting consumer report with a Government-Sponsored Enterprise (GSE), such as Fannie Mae or Freddie Mac. Format: "ddd-dd-dddd" |
consumer_report_user_identity.first_name |
String | Yes |
The user's first name |
consumer_report_user_identity.emails[] |
Array | Yes |
The user's emails |
How to start integrating
- Add HTTP Task to your workflow definition.
- Search for the API you want to integrate with and click on the name.
- This loads the API reference documentation and prepares the Http request settings.
- Click Test request to test run your request to the API and see the API's response.