# Read this deal's lender recommendations

The newest run the recommendation engine made for ONE deal, with every lender it had an opinion about — the ranked ones first with their scores and expected terms, then every lender it refused with the stage and reason it was dropped on. `everRun` is false when the engine has never looked at this deal, which is a different answer from a run that recommended nobody. Reach for it to answer "why was this lender not offered" about a deal in front of you; the operator's cross-tenant view of the same ledger is GET /v1/internal/lender-recommendation-runs.

Access class: `def:read`.

## Endpoint

`GET /v1/definitions/{key}/rows/{rowId}/lender-recommendations`

## Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| key | path | string | Yes |
| rowId | path | string | Yes |
| body | query | null | No |
| params | query | object | No |
| query | query | object | No |

## Responses

### 200

the action's answer

Content type: `application/json`.

```json
{
  "data": {
    "dealRowId": "",
    "everRun": true,
    "latest": {
      "counts": "string",
      "createdAt": "string",
      "crmFacilityId": 1,
      "dealProfile": "string",
      "dealRowId": "",
      "engine": "string",
      "engineVersion": "string",
      "filterStats": "string",
      "id": "",
      "intelligenceLastUpdated": "string",
      "intelligencePath": "string",
      "items": [
        "string"
      ],
      "jobId": "",
      "processorRunId": "",
      "rankingCriteria": "string",
      "submissionError": "string"
    }
  }
}
```

### default

a refusal: `{"error": "<what a person needs to read>"}`. 401 no credential, 402 the plan does not include this, 403 the seat does not, 404 the thing does not exist or is not yours to see.

Content type: `application/json`.

```json
{
  "error": "string"
}
```
