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

# GET /v1/renter/check — look up a renter

> Look up a renter by email, phone, license number, member ID, or name. Returns a recommendation, risk tier, composite score, and a full incident summary.

The `/v1/renter/check` endpoint searches the RentFAX network for a renter record and returns a real-time screening result. You can pass any one of the supported identifiers — the API will match the first record found, working through the priority order `member_id → email → phone → license → name`. When no record exists, the API still returns `ok: true` with `found: false` and a default recommendation of `APPROVED`, so you can safely screen first-time renters without special-casing a 404.

<Note>
  Every call is logged against your API key and billed as one screening credit. The searched renter can also see which organizations have looked them up via the RentFAX Renter Portal.
</Note>

## Endpoint

```
GET https://api.rentfax.io/v1/renter/check
```

## Authentication

Include your API key in one of two ways:

```
x-api-key: <your-api-key>
```

```
Authorization: Bearer <your-api-key>
```

## Query parameters

<ParamField query="member_id" type="string">
  The renter's RentFAX member ID. Checked first when multiple identifiers are supplied.
</ParamField>

<ParamField query="email" type="string">
  The renter's email address. Normalized to lowercase before matching.
</ParamField>

<ParamField query="phone" type="string">
  The renter's phone number. Non-digit characters are stripped before matching, so `(555) 867-5309` and `5558675309` resolve to the same record.
</ParamField>

<ParamField query="license" type="string">
  The renter's driver's license number. Normalized to uppercase before matching.
</ParamField>

<ParamField query="name" type="string">
  The renter's full name. Matched against the normalized name index; useful as a last resort when no other identifier is available.
</ParamField>

<Note>
  At least one parameter is required. If you supply none, the API returns `400 Bad Request`.
</Note>

## Response fields

<ResponseField name="ok" type="boolean" required>
  `true` when the request was processed successfully, regardless of whether a record was found.
</ResponseField>

<ResponseField name="found" type="boolean" required>
  `true` if a matching renter record exists in the network; `false` otherwise.
</ResponseField>

<ResponseField name="recommendation" type="string" required>
  Screening recommendation derived from the composite score.

  | Value             | Score range | Meaning                                                 |
  | ----------------- | ----------- | ------------------------------------------------------- |
  | `APPROVED`        | 800 – 1000  | Clean record; proceed normally                          |
  | `CONDITIONAL`     | 600 – 799   | Minor history; review summary before proceeding         |
  | `REVIEW_REQUIRED` | 400 – 599   | Significant history; manual review strongly recommended |
  | `DENIED`          | 0 – 399     | High-risk record                                        |
  | `APPROVED`        | not found   | No record in network (no history)                       |
</ResponseField>

<ResponseField name="risk_tier" type="string" required>
  Bucketed risk classification.

  | Value      | Score range      |
  | ---------- | ---------------- |
  | `LOW`      | 800 – 1000       |
  | `MODERATE` | 600 – 799        |
  | `HIGH`     | 400 – 599        |
  | `CRITICAL` | 0 – 399          |
  | `UNKNOWN`  | record not found |
</ResponseField>

<ResponseField name="score" type="number">
  Composite risk score, 0 – 1000. Present only when `found` is `true`.
</ResponseField>

<ResponseField name="score_max" type="number">
  Maximum possible score. Always `1000`.
</ResponseField>

<ResponseField name="match_method" type="string">
  The identifier used to locate the record: `member_id`, `email`, `phone`, `license`, or `name`. Present only when `found` is `true`.
</ResponseField>

<ResponseField name="renter" type="object">
  Basic profile of the matched renter. Present only when `found` is `true`.

  <Expandable title="renter properties">
    <ResponseField name="member_id" type="string | null">
      The renter's RentFAX network member ID.
    </ResponseField>

    <ResponseField name="name" type="string | null">
      The renter's full name as recorded in the network.
    </ResponseField>

    <ResponseField name="verified" type="boolean">
      `true` if the renter's identity has been verified by RentFAX.
    </ResponseField>

    <ResponseField name="verification_level" type="string">
      Verification status. Common values: `IDENTITY_VERIFIED`, `UNVERIFIED`.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="summary" type="object">
  Aggregated incident and financial summary. Present only when `found` is `true`.

  <Expandable title="summary properties">
    <ResponseField name="total_rentals" type="number">
      Total number of completed rentals on record.
    </ResponseField>

    <ResponseField name="incidents" type="number">
      Number of incident reports associated with this renter.
    </ResponseField>

    <ResponseField name="outstanding_balance" type="number">
      Total unpaid balance across all reports, in cents.
    </ResponseField>

    <ResponseField name="last_incident_date" type="string | null">
      ISO 8601 timestamp of the most recent incident report, or `null` if none.
    </ResponseField>

    <ResponseField name="network_reports" type="number">
      Total number of reports filed against this renter across the network.
    </ResponseField>

    <ResponseField name="cross_operator_flags" type="number">
      Number of incident reports filed by organizations other than your own.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="flags" type="string[]">
  Array of risk flag identifiers attached to the renter's record. Empty array when no flags are set.
</ResponseField>

<ResponseField name="message" type="string">
  Human-readable summary of the screening result, suitable for display in your UI.
</ResponseField>

<ResponseField name="checked_at" type="string">
  ISO 8601 timestamp of when this check was performed.
</ResponseField>

<ResponseField name="api_version" type="string">
  Version of the API that served the response. Currently `"1.0"`.
</ResponseField>

## Examples

<CodeGroup>
  ```bash cURL — found theme={null}
  curl --request GET \
    --url "https://api.rentfax.io/v1/renter/check?email=jane.doe%40example.com" \
    --header "x-api-key: rfx_live_your_api_key_here"
  ```

  ```bash cURL — not found theme={null}
  curl --request GET \
    --url "https://api.rentfax.io/v1/renter/check?email=unknown%40example.com" \
    --header "x-api-key: rfx_live_your_api_key_here"
  ```
</CodeGroup>

### Response — renter found

```json theme={null}
{
  "ok": true,
  "found": true,
  "recommendation": "CONDITIONAL",
  "risk_tier": "MODERATE",
  "score": 710,
  "score_max": 1000,
  "match_method": "email",
  "renter": {
    "member_id": "MBR-00291847",
    "name": "Jane Doe",
    "verified": true,
    "verification_level": "IDENTITY_VERIFIED"
  },
  "summary": {
    "total_rentals": 14,
    "incidents": 2,
    "outstanding_balance": 0,
    "last_incident_date": "2025-11-03T18:42:00.000Z",
    "network_reports": 2,
    "cross_operator_flags": 1
  },
  "flags": ["LATE_RETURN"],
  "message": "Renter has minor history. Review summary before proceeding.",
  "checked_at": "2026-05-04T10:15:30.000Z",
  "api_version": "1.0"
}
```

### Response — renter not found

```json theme={null}
{
  "ok": true,
  "found": false,
  "recommendation": "APPROVED",
  "risk_tier": "UNKNOWN",
  "message": "No record found. Renter has no history in the RentFAX network.",
  "data": null
}
```

<Tip>
  When `found` is `false`, you can proceed with the rental. The renter simply has no history in the RentFAX network yet.
</Tip>
