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

# Title Check

> Look up property title records, ownership history, and lien data

```
POST /v1/screening/title-check
```

Runs a property/title search for a US address via DataTree and returns the result synchronously. The endpoint geocodes the supplied address, resolves the matching property, and responds with a discriminated union describing the outcome.

## Request

### Headers

| Header         | Required | Description        |
| -------------- | -------- | ------------------ |
| `x-api-key`    | Yes      | Your API key       |
| `Content-Type` | Yes      | `application/json` |

### Body parameters

| Parameter   | Type   | Required | Description                                  |
| ----------- | ------ | -------- | -------------------------------------------- |
| `email`     | string | Yes      | Applicant email address                      |
| `firstName` | string | Yes      | Applicant first name (1–255 chars)           |
| `lastName`  | string | Yes      | Applicant last name (1–255 chars)            |
| `address`   | string | Yes      | US property address to look up (1–500 chars) |

### Example request

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://api.deepidv.com/v1/screening/title-check \
    -H "Content-Type: application/json" \
    -H "x-api-key: YOUR_API_KEY" \
    -d '{
      "email": "applicant@example.com",
      "firstName": "John",
      "lastName": "Doe",
      "address": "1600 Amphitheatre Parkway, Mountain View, CA 94043"
    }'
  ```

  ```javascript Node.js theme={null}
  const response = await fetch("https://api.deepidv.com/v1/screening/title-check", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      "x-api-key": "YOUR_API_KEY",
    },
    body: JSON.stringify({
      email: "applicant@example.com",
      firstName: "John",
      lastName: "Doe",
      address: "1600 Amphitheatre Parkway, Mountain View, CA 94043",
    }),
  });

  const data = await response.json();
  ```

  ```python Python theme={null}
  import requests

  response = requests.post(
      "https://api.deepidv.com/v1/screening/title-check",
      headers={
          "Content-Type": "application/json",
          "x-api-key": "YOUR_API_KEY",
      },
      json={
          "email": "applicant@example.com",
          "firstName": "John",
          "lastName": "Doe",
          "address": "1600 Amphitheatre Parkway, Mountain View, CA 94043",
      },
  )

  data = response.json()
  ```
</CodeGroup>

## Response

### 200 — Success

The body is a **discriminated union on `status`**:

| `status`              | Description                                                          |
| --------------------- | -------------------------------------------------------------------- |
| `found`               | A single property matched — includes the property detail fields      |
| `multiple_properties` | The address matched more than one property — disambiguation required |
| `unsupported_region`  | The address is outside the supported (US) coverage area              |
| `not_found`           | No property/title record matched the address                         |

When `status` is `found`, the response carries the property detail. Each object is `null` when the underlying data is unavailable:

| Field                       | Type           | Description                                                       |
| --------------------------- | -------------- | ----------------------------------------------------------------- |
| `subjectProperty`           | object \| null | APN, full address, city, state, zoning, lot/building size, etc.   |
| `ownerInformation`          | object \| null | Owner names, mailing address, vesting/ownership rights            |
| `locationInformation`       | object \| null | County, census tract/block, school district, flood zone           |
| `ownerTransferInformation`  | object \| null | Most recent ownership transfer (document, date, deed type, price) |
| `lastMarketSaleInformation` | object \| null | Last market sale (date, price, buyer, seller, deed type)          |

When `status` is `multiple_properties`, the response includes `message`, an `availableUnits` array, and a `properties` array of `{ owner, apartmentOrUnit }` to disambiguate. When `status` is `unsupported_region` or `not_found`, the response includes a human-readable `message`.

### Error responses

| Status             | Description                               |
| ------------------ | ----------------------------------------- |
| `400 Bad Request`  | Request body failed schema validation     |
| `401 Unauthorized` | API key is invalid                        |
| `403 Forbidden`    | API key is missing or resource not in org |
| `404 Not Found`    | Referenced resource was not found         |
| `500 Server Error` | Unexpected server error                   |

<ResponseExample>
  ```json 200 (found) theme={null}
  {
    "status": "found",
    "subjectProperty": {
      "APNFormatted": "123-456-789",
      "PropertyFullStreetAddress": "1600 Amphitheatre Pkwy",
      "PropertyCity": "Mountain View",
      "PropertyState": "CA",
      "PropertyZipCode": "94043",
      "PropertyCounty": "Santa Clara",
      "YearBuilt": 1998
    },
    "ownerInformation": {
      "Owner1LastName": "Doe",
      "Owner1FirstNameMiddleInitial": "John",
      "MailingCity": "Mountain View",
      "MailingState": "CA"
    },
    "locationInformation": null,
    "ownerTransferInformation": null,
    "lastMarketSaleInformation": null
  }
  ```

  ```json 200 (not_found) theme={null}
  {
    "status": "not_found",
    "message": "Could not resolve the provided address."
  }
  ```
</ResponseExample>
