<!-- https://staircase.co/providers/meridianlink -->
# MeridianLink

# MeridianLink

A credit and identity vendor whose integration covers consumer credit, first in the committed employment ordering.

The vendor's consumer credit product is asynchronous. The integration polls it and presents a synchronous call to the caller, because the vendor's stated typical report time is short enough that a polling loop on the caller's side buys nothing.

Soft pulls are the case that matters here. A soft pull leaves no borrower-visible inquiry, which is what makes credit usable early in an application without exposing the borrower to competing outreach.

## Catalogue entries

Modelled as an entry in the product catalogue, named after this vendor. The operations below are what it declares.

- **`Meridian`** — filed under Integration

## How the integration works

Credentials are per lender. The setup surface takes the lender's own vendor domain, interface identifier and account, so a lender's credit pulls run under its own contract with the vendor rather than under a shared one.

The integration is reached through Credit, and the vendor also holds positions in the employment and income orderings.

## Operations

<!--source:api-specifications-->

### Setup
<!--/source-->

`POST` `/meridian-setup/credentials`

<!--source:api-specifications-->

#### Set Meridian Credentials
<!--/source-->

`setMeridianCredentials`

<!--source:api-specifications-->
By using Set Meridian Credentials API we allow our customers to configure Meridian in customer environment.

If you want to use your own Meridian contract for verification, please check Request body Schema example for required values from Meridian side and run Set Meridian Credentials API.

<!--/source-->

##### Request

<!--source:api-specifications-->
application/json Copy
```
{
 "mlm_username": "--------",
 "mlm_password": "--------",
 "credentials_type": "test"
}
```

<!--/source-->

##### Response

<!--source:api-specifications-->
200400403422500
<!--/source-->

<!--source:api-specifications-->
application/json Copy Setup API Triggered Successfully

```
{
 "message": "Credentials are saved and verified"
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy Request data failed validation

```
{
 "message": "{'data': ['Missing data for required field.']}"
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy Invalid key for service

```
{
 "message": "Please check the key you used to call this service",
 "url": "https://staircase.stoplight.io/docs/api-reference/customer-account-manager-service.yml/paths/~1products~1refresh/post"
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy Request data failed validation

```
{
 "message": "{'data': ['Missing data for required field.']}"
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy The product has encountered an internal server error

```
{
 "message": "The product has encountered an internal server error"
}
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `x-api-key` required | `string` header | `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx` | <!--source:api-specifications-->Staircase Environment API Key<!--/source--> |

##### Request body`application/json`

<!--source:api-specifications-->
3 fields
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `mlm_username`required | `string` | <!--source:api-specifications-->MeridianLink Mortgage username<!--/source--> |
| `mlm_password`required | `string` | <!--source:api-specifications-->MeridianLink Mortgage password<!--/source--> |
| `credentials_type`required | `string` | <!--source:api-specifications-->Type of credentials, can be either test or production<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Setup API Triggered Successfully
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Request data failed validation
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message<!--/source--> |

##### Response `403``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Invalid key for service
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | — |
| `url` | `string` | — |

##### Response `422``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Request data failed validation
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
The product has encountered an internal server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Error Message<!--/source--> |

##### Other responses

`404`

`POST` `/meridian-setup/custom-fields`

<!--source:api-specifications-->

#### Set Meridian Custom Fields Identifiers schema
<!--/source-->

`setMeridianCustomFieldsIdentifiers`

<!--source:api-specifications-->
Set Meridian Custom Fields Identifiers
<!--/source-->

<!--source:api-specifications-->
By using Set Meridian Custom Fields API we allow our customers to configure Meridian Custom Fields in customer environment.

To be able to use MeridianLink Mortgage - Dytrix integration then you need to provide custom fields identifier to the request. As mentioned integration requires custom fields to be created as a part of MeridianLink Mortgage application, custom field IDs need to be provided for integration to work. More details regarding the custom fields can be found at the Identity MeridianLink-Dytrix Integration Configuration Guide.

Custom field IDs required are:

- Closing Agent Requested
- Closing Agent Requested ID
- Closing Agent Status
- Request ID
- Request Status
- Report Expiration Date
- Account and ABA numbers

<!--/source-->

##### Request

<!--source:api-specifications-->
application/json Copy
```
{
 "closing_agent_requested": "custLoan100",
 "closing_agent_requested_id": "custLoan101",
 "closing_agent_status": "custLoan102",
 "request_id": "custLoan103",
 "request_status": "custLoan104",
 "report_expiration_date": "custLoan105",
 "account_aba_numbers": "custLoan106"
}
```

<!--/source-->

##### Response

<!--source:api-specifications-->
200400403422500
<!--/source-->

<!--source:api-specifications-->
application/json Copy Setup API Triggered Successfully

```
{
 "message": "Custom fields configuration is saved"
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy Request data failed validation

```
{
 "message": "{'data': ['Missing data for required field.']}"
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy Invalid key for service

```
{
 "message": "Please check the key you used to call this service",
 "url": "https://staircase.stoplight.io/docs/api-reference/customer-account-manager-service.yml/paths/~1products~1refresh/post"
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy Request data failed validation

```
{
 "message": "{'data': ['Missing data for required field.']}"
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy The product has encountered an internal server error

```
{
 "message": "The product has encountered an internal server error"
}
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `x-api-key` required | `string` header | `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx` | <!--source:api-specifications-->Staircase Environment API Key<!--/source--> |

##### Request body`application/json`

<!--source:api-specifications-->
7 fields
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `closing_agent_requested`required | `string` | <!--source:api-specifications-->MeridianLink Mortgage custom field identifier for Closing Agent Requested.<!--/source--> |
| `closing_agent_requested_id`required | `string` | <!--source:api-specifications-->MeridianLink Mortgage custom field identifier for Closing Agent Requested ID.<!--/source--> |
| `closing_agent_status`required | `string` | <!--source:api-specifications-->MeridianLink Mortgage custom field identifier for Closing Agent Status.<!--/source--> |
| `request_id`required | `string` | <!--source:api-specifications-->MeridianLink Mortgage custom field identifier for Request ID.<!--/source--> |
| `request_status`required | `string` | <!--source:api-specifications-->MeridianLink Mortgage custom field identifier for Request Status.<!--/source--> |
| `report_expiration_date`required | `string` | <!--source:api-specifications-->MeridianLink Mortgage custom field identifier for Report Expiration Date.<!--/source--> |
| `account_aba_numbers`required | `string` | <!--source:api-specifications-->MeridianLink Mortgage custom field identifier for Account and ABA numbers.<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Setup API Triggered Successfully
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Request data failed validation
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message<!--/source--> |

##### Response `403``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Invalid key for service
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | — |
| `url` | `string` | — |

##### Response `422``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Request data failed validation
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
The product has encountered an internal server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Error Message<!--/source--> |

##### Other responses

`404`

`GET` `/meridian-setup/credentials`

<!--source:api-specifications-->

#### Retrieve Meridian Credentials Schema
<!--/source-->

`getMeridianCredentials`

<!--source:api-specifications-->
Get Credentials Schema
<!--/source-->

<!--source:api-specifications-->
Get credentials schema for Meridian. You can use retrieved schema for setting the Meridian credentials.

<!--/source-->

##### Response

<!--source:api-specifications-->
400403422500
<!--/source-->

<!--source:api-specifications-->
application/json Copy Request data failed validation

```
{
 "message": "{'data': ['Missing data for required field.']}"
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy Invalid key for service

```
{
 "message": "Please check the key you used to call this service",
 "url": "https://staircase.stoplight.io/docs/api-reference/customer-account-manager-service.yml/paths/~1products~1refresh/post"
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy Request data failed validation

```
{
 "message": "{'data': ['Missing data for required field.']}"
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy The product has encountered an internal server error

```
{
 "message": "The product has encountered an internal server error"
}
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `x-api-key` required | `string` header | `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx` | <!--source:api-specifications-->Staircase Environment API Key<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Create Adapter API Triggered Successfully
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Request data failed validation
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message<!--/source--> |

##### Response `403``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Invalid key for service
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | — |
| `url` | `string` | — |

##### Response `422``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Request data failed validation
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
The product has encountered an internal server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Error Message<!--/source--> |

##### Other responses

`404`

`GET` `/meridian-setup/custom-fields`

<!--source:api-specifications-->

#### Retrieve Meridian Custom Fields Identifiers schema
<!--/source-->

`getMeridianCustomFieldsIdentifiers`

<!--source:api-specifications-->
Get Custom Fields Identifiers Schema
<!--/source-->

<!--source:api-specifications-->
Get custom fields identifiers schema for Meridian. You can use retrieved schema for setting the Meridian custom fields identifier.

<!--/source-->

##### Response

<!--source:api-specifications-->
400403422500
<!--/source-->

<!--source:api-specifications-->
application/json Copy Request data failed validation

```
{
 "message": "{'data': ['Missing data for required field.']}"
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy Invalid key for service

```
{
 "message": "Please check the key you used to call this service",
 "url": "https://staircase.stoplight.io/docs/api-reference/customer-account-manager-service.yml/paths/~1products~1refresh/post"
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy Request data failed validation

```
{
 "message": "{'data': ['Missing data for required field.']}"
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy The product has encountered an internal server error

```
{
 "message": "The product has encountered an internal server error"
}
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `x-api-key` required | `string` header | `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx` | <!--source:api-specifications-->Staircase Environment API Key<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Create Adapter API Triggered Successfully
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Request data failed validation
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message<!--/source--> |

##### Response `403``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Invalid key for service
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | — |
| `url` | `string` | — |

##### Response `422``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Request data failed validation
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
The product has encountered an internal server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Error Message<!--/source--> |

##### Other responses

`404`

## Errors

`400``403``404``422``500`

## Products it serves

- Comply
- Credit
- Employment
- Identity
- Income
- Connection

## Position in the ordering

- Employment MeridianArgyleAtomicWageFinicityExperianPinwheelCitadelEquifaxTrueworkInstantTruework
- Income ArgyleAtomicEquifaxExperianFinicityMeridianPinwheelPlaidTrueworkTruework-Instant
- Credit configured per lender

## How this integration is built

- **connection configuration** — The wire protocol. One repository per vendor API call, not per vendor.

- **language configuration** — The field mapping between the vendor's vocabulary and the canonical model.

- **flow file** — The four-way translation: canonical request, vendor request, vendor response, canonical response.

- **waterfall priority** — One line naming where this vendor sits in the vertical's ordering.

- **status call** — Activating the vendor for a lender, optionally with the lender's own credentials.

## Evidence

This vendor is on the roster because each of the following resolves to a committed artifact.

- `StaircaseAPI/employment-product-product-data product/data/waterfall.json waterfall`
- `StaircaseAPI/income-pp-data product/data/waterfall/waterfall.json waterfall`
- `credit-meridian-integration-service`
- `credit-pp-data product/data/flows/meridian.json`
- `credit-pp-data product/data/flows/meridianlink.json`
- `employment-pp-data product/data/flows/Meridian.json`
- `identity-meridian-integration`
- `income-pp-data product/data/flows/meridian.json`
- `los-meridian-service`
- `meridian-data`
- `meridian-setup-service`
- `mortgage-verification-credit-meridian_link`
- `mortgage-verification-credit-verification-meridian-configuration`
- `partner-meridian-credit-language-configuration`
- `partner-meridian-verification-connection-configuration`
