MENU navbar-image

Introduction

This documentation aims to provide all the information you need to work with our API.

Authenticating requests

To authenticate requests, include a X-Authorization header with the value "{YOUR_AUTH_KEY}".

All authenticated endpoints are marked with a requires authentication badge in the documentation below.

You can retrieve your token by visiting your your profile in MonitorBase.com and clicking the icon next to API Key on the bottom left.

Optouts

Create Email Optout

requires authentication

End point to create an email optout within MonitorBase. An, optional header of X-offload = 1 is an option this will offload the prospect for creation and return a response faster.

Example request:
curl --request POST \
    "https://api.monitorbase.com/api/v1/optout/email/create" \
    --header "X-Authorization: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"optouts\": [
        \"test@example.com\",
        \"test2@example.com\"
    ]
}"
const url = new URL(
    "https://api.monitorbase.com/api/v1/optout/email/create"
);

const headers = {
    "X-Authorization": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "optouts": [
        "test@example.com",
        "test2@example.com"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.monitorbase.com/api/v1/optout/email/create';
$response = $client->post(
    $url,
    [
        'headers' => [
            'X-Authorization' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'optouts' => [
                'test@example.com',
                'test2@example.com',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.monitorbase.com/api/v1/optout/email/create'
payload = {
    "optouts": [
        "test@example.com",
        "test2@example.com"
    ]
}
headers = {
  'X-Authorization': '{YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (200, optouts offloaded for processing):


{
    "status": "success",
    "message": "## emails opted out"
}
 

Example response (200, optouts saved in current call. Response in order of array sent.):


{
  {
     "status": "success",
     "message": "Email Optout Saved"
  }
}
 

Example response (400, optouts array missing):


{
    "status": "failed",
    "message": "Emails array not set"
}
 

Example response (403, user not authorized):


{
    "error": "Unauthenticated"
}
 

Request   

POST api/v1/optout/email/create

Headers

X-Authorization      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

optouts   string[]   

An Array of Emails to be opted out

Create Address Optout

requires authentication

End point to create an address optout within MonitorBase. An, optional header of X-offload = 1 is an option this will offload the prospect for creation and return a response faster.

Example request:
curl --request POST \
    "https://api.monitorbase.com/api/v1/optout/address/create" \
    --header "X-Authorization: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"optouts\": [
        {
            \"address\": \"123 Fake Street\",
            \"city\": \"Salt Lake City\",
            \"state\": \"XX\",
            \"zip\": \"84106\",
            \"type\": 1
        }
    ]
}"
const url = new URL(
    "https://api.monitorbase.com/api/v1/optout/address/create"
);

const headers = {
    "X-Authorization": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "optouts": [
        {
            "address": "123 Fake Street",
            "city": "Salt Lake City",
            "state": "XX",
            "zip": "84106",
            "type": 1
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.monitorbase.com/api/v1/optout/address/create';
$response = $client->post(
    $url,
    [
        'headers' => [
            'X-Authorization' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'optouts' => [
                [
                    'address' => '123 Fake Street',
                    'city' => 'Salt Lake City',
                    'state' => 'XX',
                    'zip' => '84106',
                    'type' => 1,
                ],
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.monitorbase.com/api/v1/optout/address/create'
payload = {
    "optouts": [
        {
            "address": "123 Fake Street",
            "city": "Salt Lake City",
            "state": "XX",
            "zip": "84106",
            "type": 1
        }
    ]
}
headers = {
  'X-Authorization': '{YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (200, optouts offloaded for processing):


{
    "status": "success",
    "message": "## addresses opted out"
}
 

Example response (200, optouts saved in current call. Response in order of array sent. Possible errors: addressErrors, zipErrors, missingType, invalidType):


{
  {
     "status": "error",
     "message": "Missing Address"
  },
  {
     "status": "error",
     "message": "Missing Zip Code"
  },
  {
     "status": "error",
     "message": "Missing Opt Out Type"
  },
  {
     "status": "error",
     "message": "Invalid Opt Out Type"
  },
  {
     "status": "success",
     "message": "Optout Saved"
  }
}
 

Example response (400, optouts array missing):


{
    "status": "failed",
    "message": "Optouts array not set"
}
 

Example response (403, user not authorized):


{
    "error": "Unauthenticated"
}
 

Request   

POST api/v1/optout/address/create

Headers

X-Authorization      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

optouts   object[]   

Optouts array

address   string   

The Street Address for the address Example: 123 Fake Street

city   string   

The City for the address Example: Salt Lake City

state   string   

The State for the address Example: XX

zip   string   

The Zip Code for the address Example: 84106

type   integer   

The Type of Optout to be assigned the address Example: 1

Prospects

Show prospects

requires authentication

View all prospects

Example request:
curl --request GET \
    --get "https://api.monitorbase.com/api/v1/prospect/get" \
    --header "X-Authorization: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.monitorbase.com/api/v1/prospect/get"
);

const headers = {
    "X-Authorization": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.monitorbase.com/api/v1/prospect/get';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Authorization' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.monitorbase.com/api/v1/prospect/get'
headers = {
  'X-Authorization': '{YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
      "data": [
          {
            "id":16,
            "alt_id":"",
            "user":{
                  "username":"loanofficer",
                  "email":"loanofficer@example.com",
                  "first_name":"Loan",
                  "last_name":"Officer",
                  "mobile":"(801) 555-1234",
                  "NMLS":1234,
                  "active":1
            },
            "first_name":"",
            "last_name":"",
            "middle_name":"",
            "email":"",
            "gen_code":"",
            "addresses": [
              {
                "address": "123 FAKE ST1632770489",
                "city": "SALT LAKE CITY",
                "zip": "84106",
                "state": "UT",
                "address_type": "Primary Residence",
                "property_type": "Unknown"
              }
            ],
            "custom_1":"",
            "custom_2":"",
            "custom_3":"",
            "custom_4":"",
            "custom_5":"",
            "created_at":"2021-09-27T19:15:53.000000Z",
            "updated_at":"2021-10-13T21:05:20.000000Z",
            "tags":[],
            "phones": [
                "home":"(801) 555-1234",
                "cell":"(801) 555-1234",
                "work":"(801) 555-1234"
            ]
          },
          {
            "id":17,
            "alt_id":"",
            "user":
              {
                "username":"loanofficer",
                "email":"loanofficer@example.com",
                "first_name":"Loan",
                "last_name":"Officer",
                "mobile":"(801) 555-1234",
                "NMLS":1234,
                "active":1
              },
            "first_name":"",
            "last_name":"",
            "middle_name":"",
            "email":"",
            "gen_code":"",
            "addresses":[
                {
                    "address": "123 FAKE ST1632770489",
                    "city": "SALT LAKE CITY",
                    "zip": "84106",
                    "state": "UT",
                    "address_type": "Primary Residence",
                    "property_type": "Unknown"
                }
            ],
            "custom_1":"",
            "custom_2":"",
            "custom_3":"",
            "custom_4":"",
            "custom_5":"",
            "created_at":"2021-09-27T19:15:53.000000Z",
            "updated_at":"2021-10-13T21:05:17.000000Z",
            "tags":[],
            "phones": [
                "home":"(801) 555-1234",
                "cell":"(801) 555-1234",
                "work":"(801) 555-1234"
            ]
          }
        ]
      }
 

Request   

GET api/v1/prospect/get

Headers

X-Authorization      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Show paged prospects

requires authentication

Use the next/prev links provided in the data to get the next batch of data

Example request:
curl --request GET \
    --get "https://api.monitorbase.com/api/v1/prospect/paged?per_page=6" \
    --header "X-Authorization: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.monitorbase.com/api/v1/prospect/paged"
);

const params = {
    "per_page": "6",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "X-Authorization": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.monitorbase.com/api/v1/prospect/paged';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Authorization' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'per_page' => '6',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.monitorbase.com/api/v1/prospect/paged'
params = {
  'per_page': '6',
}
headers = {
  'X-Authorization': '{YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()

Example response (200):


{
"data": [
     {
         "id": 1234,
         "alt_id": "CRMID",
         "user": {
             "username": "user",
             "email": "user@monitorbase.com",
             "first_name": "Example",
             "last_name": "User",
             "mobile": "(801) 555-1234",
             "NMLS": 1234,
             "active": 1
         },
         "first_name": "Consumer",
         "last_name": "Example",
         "middle_name": "D",
         "email": "consumer@example.com",
         "gen_code": "",
         "addresses": [
             {
                 "address": "123 FAKE ST1632770489",
                 "city": "SALT LAKE CITY",
                 "zip": "84106",
                 "state": "UT",
                 "address_type": "Primary Residence",
                 "property_type": "Unknown"
             }
         ],
         "custom_1": "",
         "custom_2": "",
         "custom_3": "",
         "custom_4": "",
         "custom_5": "",
         "created_at": "2021-09-27T19:21:29.000000Z",
         "updated_at": "2021-10-13T21:03:48.000000Z",
         "tags": [],
         "phones": [
             "home":"(801) 555-1234",
             "cell":"(801) 555-1234",
             "work":"(801) 555-1234"
         ]
    }
],
    "links": {
       "first": null,
        "last": null,
       "prev": null,
       "next": "https://api.monitorbase.com/api/v1/prospect/paged?cursor=eyJwcm9zcGVjdHMuaWQiOjE0LCJfcG9pbnRzVG9OZXh0SXRlbXMiOnRydWV9"
     },
    "meta": {
        "path": "https://api.monitorbase.com/api/v1/prospect/paged",
        "per_page": "15"
    }
 }
 

Request   

GET api/v1/prospect/paged

Headers

X-Authorization      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

per_page   integer  optional  

How many results per page. Default is 15. Example: 6

View a prospect

requires authentication

Example request:
curl --request GET \
    --get "https://api.monitorbase.com/api/v1/prospect/show/sapiente" \
    --header "X-Authorization: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.monitorbase.com/api/v1/prospect/show/sapiente"
);

const headers = {
    "X-Authorization": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.monitorbase.com/api/v1/prospect/show/sapiente';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Authorization' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.monitorbase.com/api/v1/prospect/show/sapiente'
headers = {
  'X-Authorization': '{YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
     "data": {
         "id": 1234,
         "alt_id": "CRMID",
         "user": {
             "username": "user",
             "email": "user@monitorbase.com",
             "first_name": "Example",
             "last_name": "User",
             "mobile": "(801) 555-1234",
              "NMLS": 1234,
             "active": 1
         },
         "first_name": "Consumer",
         "last_name": "Example",
         "middle_name": "D",
         "email": "consumer@example.com",
         "gen_code": "",
         "addresses": [
             {
                 "address": "123 FAKE ST1632770489",
                 "city": "SALT LAKE CITY",
                 "zip": "84106",
                 "state": "UT",
                 "address_type": "Primary Residence",
                 "property_type": "Unknown"
             }
         ],
         "custom_1": "",
         "custom_2": "",
         "custom_3": "",
         "custom_4": "",
         "custom_5": "",
         "created_at": "2021-09-27T19:21:29.000000Z",
         "updated_at": "2021-10-13T21:03:48.000000Z",
         "tags": [
             "tag #1",
             "tag #2",
             " ..."
         ],
         "phones": [
             "home": "(XXX) XXX-XXXX",
             "cell": "(XXX) XXX-XXXX",
             "work": "(XXX) XXX-XXXX",
         ],
     }
 }
 

Example response (403, not authorized to view prospect):


{
    "status": "error",
    "message": "Forbidden"
}
 

Example response (404, prospect not found.):


{
    "status": "error",
    "message": "Prospect not found"
}
 

Request   

GET api/v1/prospect/show/{prospect}

Headers

X-Authorization      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

prospect   string   

Example: sapiente

Prospect   string   

The ID of the prospect. Example: 1

Create Prospect

requires authentication

End point to create/update prospects within MonitorBase. An, optional header of X-offload = 1 is an option this will offload the prospect for creation and return a response faster.

Example request:
curl --request POST \
    "https://api.monitorbase.com/api/v1/prospect/create" \
    --header "X-Authorization: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"prospects\": [
        {
            \"first_name\": \"John\",
            \"last_name\": \"Doe\",
            \"address\": \"123 E Fake St\",
            \"address_2\": \"Unit #123\",
            \"city\": \"Salt Lake City\",
            \"state\": \"XX\",
            \"zip\": \"84106\",
            \"email\": \"consumer@example.com\",
            \"birth_day\": \"sapiente\",
            \"phones\": {
                \"home_phone\": \"801-555-1234\",
                \"work_phone\": \"(801) 555-1234\",
                \"cell_phone\": \"+18015551234\"
            },
            \"ssn\": \"123-45-6789\",
            \"ssn_hash\": \"hidden\",
            \"loan_number\": \"1000493300\",
            \"alt_id\": \"A2003 or 100003\",
            \"tags\": \"Tag1, Tag2, Tag3\",
            \"lo_email\": \"kayleigh.white@example.net\",
            \"lo_id\": \"sapiente\",
            \"statuses\": [
                {
                    \"date\": \"2020-09-03\",
                    \"status\": \"Funded\"
                }
            ],
            \"notes\": [
                {
                    \"date\": \"YYYY-MM-DD\",
                    \"note\": \"sapiente\"
                }
            ],
            \"loan_info\": [
                {
                    \"interest_rate\": 3.125,
                    \"loan_type\": \"FHA\",
                    \"loan_purpose\": \"Purchase\",
                    \"loan_amount\": 2500000
                }
            ],
            \"monitors\": {
                \"inquiry\": true,
                \"migration\": true,
                \"predictive\": true,
                \"pre_mover\": true
            },
            \"update_dupe\": true,
            \"update_user\": true,
            \"add_tags\": true,
            \"remove_tags\": true,
            \"monitor_dupes\": true,
            \"addresses\": {
                \"investment_address\": \"123 E Fake St\",
                \"investment_address_2\": \"Unit #123\",
                \"investment_city\": \"Salt Lake City\",
                \"investment_state\": \"XX\",
                \"investment_zip\": \"84106\",
                \"second_address\": \"123 E Fake St\",
                \"second_address_2\": \"Unit #123\",
                \"second_city\": \"Salt Lake City\",
                \"second_state\": \"XX\",
                \"second_zip\": \"84106\",
                \"rental_address\": \"123 E Fake St\",
                \"rental_address_2\": \"Unit #123\",
                \"rental_city\": \"Salt Lake City\",
                \"rental_state\": \"XX\",
                \"rental_zip\": \"84106\",
                \"mailing_address\": \"123 E Fake St\",
                \"mailing_address_2\": \"Unit #123\",
                \"mailing_city\": \"Salt Lake City\",
                \"mailing_state\": \"XX\",
                \"mailing_zip\": \"84106\"
            }
        }
    ]
}"
const url = new URL(
    "https://api.monitorbase.com/api/v1/prospect/create"
);

const headers = {
    "X-Authorization": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "prospects": [
        {
            "first_name": "John",
            "last_name": "Doe",
            "address": "123 E Fake St",
            "address_2": "Unit #123",
            "city": "Salt Lake City",
            "state": "XX",
            "zip": "84106",
            "email": "consumer@example.com",
            "birth_day": "sapiente",
            "phones": {
                "home_phone": "801-555-1234",
                "work_phone": "(801) 555-1234",
                "cell_phone": "+18015551234"
            },
            "ssn": "123-45-6789",
            "ssn_hash": "hidden",
            "loan_number": "1000493300",
            "alt_id": "A2003 or 100003",
            "tags": "Tag1, Tag2, Tag3",
            "lo_email": "kayleigh.white@example.net",
            "lo_id": "sapiente",
            "statuses": [
                {
                    "date": "2020-09-03",
                    "status": "Funded"
                }
            ],
            "notes": [
                {
                    "date": "YYYY-MM-DD",
                    "note": "sapiente"
                }
            ],
            "loan_info": [
                {
                    "interest_rate": 3.125,
                    "loan_type": "FHA",
                    "loan_purpose": "Purchase",
                    "loan_amount": 2500000
                }
            ],
            "monitors": {
                "inquiry": true,
                "migration": true,
                "predictive": true,
                "pre_mover": true
            },
            "update_dupe": true,
            "update_user": true,
            "add_tags": true,
            "remove_tags": true,
            "monitor_dupes": true,
            "addresses": {
                "investment_address": "123 E Fake St",
                "investment_address_2": "Unit #123",
                "investment_city": "Salt Lake City",
                "investment_state": "XX",
                "investment_zip": "84106",
                "second_address": "123 E Fake St",
                "second_address_2": "Unit #123",
                "second_city": "Salt Lake City",
                "second_state": "XX",
                "second_zip": "84106",
                "rental_address": "123 E Fake St",
                "rental_address_2": "Unit #123",
                "rental_city": "Salt Lake City",
                "rental_state": "XX",
                "rental_zip": "84106",
                "mailing_address": "123 E Fake St",
                "mailing_address_2": "Unit #123",
                "mailing_city": "Salt Lake City",
                "mailing_state": "XX",
                "mailing_zip": "84106"
            }
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.monitorbase.com/api/v1/prospect/create';
$response = $client->post(
    $url,
    [
        'headers' => [
            'X-Authorization' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'prospects' => [
                [
                    'first_name' => 'John',
                    'last_name' => 'Doe',
                    'address' => '123 E Fake St',
                    'address_2' => 'Unit #123',
                    'city' => 'Salt Lake City',
                    'state' => 'XX',
                    'zip' => '84106',
                    'email' => 'consumer@example.com',
                    'birth_day' => 'sapiente',
                    'phones' => [
                        'home_phone' => '801-555-1234',
                        'work_phone' => '(801) 555-1234',
                        'cell_phone' => '+18015551234',
                    ],
                    'ssn' => '123-45-6789',
                    'ssn_hash' => 'hidden',
                    'loan_number' => '1000493300',
                    'alt_id' => 'A2003 or 100003',
                    'tags' => 'Tag1, Tag2, Tag3',
                    'lo_email' => 'kayleigh.white@example.net',
                    'lo_id' => 'sapiente',
                    'statuses' => [
                        [
                            'date' => '2020-09-03',
                            'status' => 'Funded',
                        ],
                    ],
                    'notes' => [
                        [
                            'date' => 'YYYY-MM-DD',
                            'note' => 'sapiente',
                        ],
                    ],
                    'loan_info' => [
                        [
                            'interest_rate' => 3.125,
                            'loan_type' => 'FHA',
                            'loan_purpose' => 'Purchase',
                            'loan_amount' => 2500000.0,
                        ],
                    ],
                    'monitors' => [
                        'inquiry' => true,
                        'migration' => true,
                        'predictive' => true,
                        'pre_mover' => true,
                    ],
                    'update_dupe' => true,
                    'update_user' => true,
                    'add_tags' => true,
                    'remove_tags' => true,
                    'monitor_dupes' => true,
                    'addresses' => [
                        'investment_address' => '123 E Fake St',
                        'investment_address_2' => 'Unit #123',
                        'investment_city' => 'Salt Lake City',
                        'investment_state' => 'XX',
                        'investment_zip' => '84106',
                        'second_address' => '123 E Fake St',
                        'second_address_2' => 'Unit #123',
                        'second_city' => 'Salt Lake City',
                        'second_state' => 'XX',
                        'second_zip' => '84106',
                        'rental_address' => '123 E Fake St',
                        'rental_address_2' => 'Unit #123',
                        'rental_city' => 'Salt Lake City',
                        'rental_state' => 'XX',
                        'rental_zip' => '84106',
                        'mailing_address' => '123 E Fake St',
                        'mailing_address_2' => 'Unit #123',
                        'mailing_city' => 'Salt Lake City',
                        'mailing_state' => 'XX',
                        'mailing_zip' => '84106',
                    ],
                ],
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.monitorbase.com/api/v1/prospect/create'
payload = {
    "prospects": [
        {
            "first_name": "John",
            "last_name": "Doe",
            "address": "123 E Fake St",
            "address_2": "Unit #123",
            "city": "Salt Lake City",
            "state": "XX",
            "zip": "84106",
            "email": "consumer@example.com",
            "birth_day": "sapiente",
            "phones": {
                "home_phone": "801-555-1234",
                "work_phone": "(801) 555-1234",
                "cell_phone": "+18015551234"
            },
            "ssn": "123-45-6789",
            "ssn_hash": "hidden",
            "loan_number": "1000493300",
            "alt_id": "A2003 or 100003",
            "tags": "Tag1, Tag2, Tag3",
            "lo_email": "kayleigh.white@example.net",
            "lo_id": "sapiente",
            "statuses": [
                {
                    "date": "2020-09-03",
                    "status": "Funded"
                }
            ],
            "notes": [
                {
                    "date": "YYYY-MM-DD",
                    "note": "sapiente"
                }
            ],
            "loan_info": [
                {
                    "interest_rate": 3.125,
                    "loan_type": "FHA",
                    "loan_purpose": "Purchase",
                    "loan_amount": 2500000
                }
            ],
            "monitors": {
                "inquiry": true,
                "migration": true,
                "predictive": true,
                "pre_mover": true
            },
            "update_dupe": true,
            "update_user": true,
            "add_tags": true,
            "remove_tags": true,
            "monitor_dupes": true,
            "addresses": {
                "investment_address": "123 E Fake St",
                "investment_address_2": "Unit #123",
                "investment_city": "Salt Lake City",
                "investment_state": "XX",
                "investment_zip": "84106",
                "second_address": "123 E Fake St",
                "second_address_2": "Unit #123",
                "second_city": "Salt Lake City",
                "second_state": "XX",
                "second_zip": "84106",
                "rental_address": "123 E Fake St",
                "rental_address_2": "Unit #123",
                "rental_city": "Salt Lake City",
                "rental_state": "XX",
                "rental_zip": "84106",
                "mailing_address": "123 E Fake St",
                "mailing_address_2": "Unit #123",
                "mailing_city": "Salt Lake City",
                "mailing_state": "XX",
                "mailing_zip": "84106"
            }
        }
    ]
}
headers = {
  'X-Authorization': '{YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (200, prospects offloaded for processing):


{
    "status": "success",
    "message": "## prospects offloaded"
}
 

Example response (200, prospects saved in current call. Response in order of array sent. Possible errors: userNotFound, nameErrors, addressErrors, permanentOptOuts):


{
  {
   "status": "error",
   "message": "No LO Email or ID",
   "prospect_id": 0
  },
  {
   "status": "success",
   "message": "Prospect saved",
   "prospect_id": 123456
  }
}
 

Example response (400, prospects array missing):


{
    "status": "failed",
    "message": "Prospects array not set"
}
 

Example response (403, user not authorized):


{
    "error": "Unauthenticated"
}
 

Request   

POST api/v1/prospect/create

Headers

X-Authorization      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

prospects   object[]   

Prospect array

first_name   string   

The prospect's first name Example: John

last_name   string   

The prospect's last name Example: Doe

address   string   

The prospect's address Example: 123 E Fake St

address_2   string  optional  

The prospect's address 2 Example: Unit #123

city   string   

The prospect's city Example: Salt Lake City

state   string   

The prospect's state Example: XX

zip   string   

The prospect's zip Example: 84106

email   string  optional  

The prospect's email address Example: consumer@example.com

birth_day   string  optional  

The prospect's DOB: 1980-01-01 Example: sapiente

phones   object  optional  

The prospect's phone numbers

home_phone   string  optional  

The prospect's phone numbers Example: 801-555-1234

work_phone   string  optional  

The prospect's phone numbers Example: (801) 555-1234

cell_phone   string  optional  

The prospect's phone numbers Example: +18015551234

ssn   string  optional  

The prospect's SSN number Example: 123-45-6789

ssn_hash   string  optional  

The prospect's SSN hash (preferred) Example: hidden

loan_number   string  optional  

The prospect's loan number Example: 1000493300

alt_id   string  optional  

The prospect's ID in a CRM system or similar Example: A2003 or 100003

tags   string  optional  

A comma separated list of tags to apply to the prospect Example: Tag1, Tag2, Tag3

lo_email   string   

The prospect's Loan Officer's email address. Required or use lo_id. One must be used Example: kayleigh.white@example.net

lo_id   string  optional  

The prospect's ID within MonitorBase Example: sapiente

statuses   object  optional  

An array of prospect statuses, usually used for loan status like funded, denied etc

date   date  optional  

Date status happened on Example: 2020-09-03

status   stating  optional  

Loan status Example: Funded

notes   object  optional  

Add notes for the prospect

date   date  optional  

Date of the note Example: YYYY-MM-DD

note   string  optional  

255 character max note Example: sapiente

loan_info   object  optional  

Information on prospects loan

interest_rate   number  optional  

Interest rate Example: 3.125

loan_type   string  optional  

Loan type Example: FHA

loan_purpose   string  optional  

Loan purpose Example: Purchase

loan_amount   number  optional  

Loan amount Example: 2500000

monitors   object  optional  

set default monitoring for the prospect

inquiry   boolean  optional  

Enable inquiry monitoring Example: true

migration   boolean  optional  

Enable inquiry monitoring Example: true

predictive   boolean  optional  

Enable inquiry monitoring Example: true

pre_mover   boolean  optional  

Enable inquiry monitoring Example: true

update_dupe   boolean  optional  

If MonitorBase should update an existing dupe prospect: email, phones, alt_id, ssn and reassign the user. Will not reassign the user if the current user is an active LO Example: true

update_user   boolean  optional  

If MonitorBase should update a user on an existing dupe prospect regardless of the current user status Example: true

add_tags   boolean  optional  

If MonitorBase apply tags to an existing dupe prospect Example: true

remove_tags   boolean  optional  

Remove existing tags on dupe Example: true

monitor_dupes   boolean  optional  

If MonitorBase apply monitors to dupes Example: true

blocking   object  optional  
remove   boolean  optional  

If MonitorBase should remove a prospect's blocking Example: true

update   boolean  optional  

If MonitorBase should update a prospect's blocking Example: true

block_until   date  optional  

Date to block prospect until, required if updating blocking Example: 2020-09-03

addresses   object  optional  

The prospect's investment address

investment_address   string  optional  

The prospect's investment address Example: 123 E Fake St

investment_address_2   string  optional  

The prospect's investment address 2 Example: Unit #123

investment_city   string  optional  

The prospect's investment city Example: Salt Lake City

investment_state   string  optional  

The prospect's investment state Example: XX

investment_zip   string  optional  

The prospect's investment zip Example: 84106

second_address   string  optional  

The prospect's 2nd Home address Example: 123 E Fake St

second_address_2   string  optional  

The prospect's 2nd Home address 2 Example: Unit #123

second_city   string  optional  

The prospect's 2nd Home city Example: Salt Lake City

second_state   string  optional  

The prospect's 2nd Home state Example: XX

second_zip   string  optional  

The prospect's 2nd Home zip Example: 84106

rental_address   string  optional  

The prospect's rental property address Example: 123 E Fake St

rental_address_2   string  optional  

The prospect's rental property address 2 Example: Unit #123

rental_city   string  optional  

The prospect's rental property city Example: Salt Lake City

rental_state   string  optional  

The prospect's rental property state Example: XX

rental_zip   string  optional  

The prospect's rental property zip Example: 84106

mailing_address   string  optional  

The prospect's mailing address Example: 123 E Fake St

mailing_address_2   string  optional  

The prospect's mailing address 2 Example: Unit #123

mailing_city   string  optional  

The prospect's mailing city Example: Salt Lake City

mailing_state   string  optional  

The prospect's mailing state Example: XX

mailing_zip   string  optional  

The prospect's mailing zip Example: 84106

Delete Prospect MB ID

requires authentication

Example request:
curl --request POST \
    "https://api.monitorbase.com/api/v1/prospect/delete" \
    --header "X-Authorization: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"type\": \"id\",
    \"value\": \"100030\"
}"
const url = new URL(
    "https://api.monitorbase.com/api/v1/prospect/delete"
);

const headers = {
    "X-Authorization": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "type": "id",
    "value": "100030"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.monitorbase.com/api/v1/prospect/delete';
$response = $client->post(
    $url,
    [
        'headers' => [
            'X-Authorization' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'type' => 'id',
            'value' => '100030',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.monitorbase.com/api/v1/prospect/delete'
payload = {
    "type": "id",
    "value": "100030"
}
headers = {
  'X-Authorization': '{YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (200, success):


{
    "status": "success",
    "message": "Prospect deleted."
}
 

Example response (403, user not authorized):


{
    "error": "Unauthenticated"
}
 

Example response (404, prospect not found):


{
    "status": "error",
    "message": "Prospect not found"
}
 

Request   

POST api/v1/prospect/delete

Headers

X-Authorization      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

type   string   

id or alt_id. id being MonitorBase id or alt_id being CRM ID. Example: id

Must be one of:
  • id
  • alt_id
value   string   

ID relating to type. Example: 100030

Generate Api Mapping Your mapping must contain a set 'prospects' that contains partitioned prospects for the mapping to work

requires authentication

After posting to this endpoint you may then proceed to http://my.monitorbase.com/prospects/integration/map to map the latest fields that you've provided to this endpoint to fields that the Create Mapped Prospect endpoint can then use to create prospects

i.e.

contact_first_name -> first_name

contact-last-name -> last_name

contact_street_address -> address

City -> city

STATE -> state

post_code -> zip

Example request:
curl --request POST \
    "https://api.monitorbase.com/api/v1/prospect/sandbox" \
    --header "X-Authorization: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"prospects\": [
        {
            \"first_name\": \"John\",
            \"last_name\": \"Doe\",
            \"address\": \"123 E Fake St\",
            \"city\": \"Salt Lake City\",
            \"state\": \"XX\",
            \"zip\": \"84106\",
            \"lo_email\": \"kayleigh.white@example.net\"
        }
    ]
}"
const url = new URL(
    "https://api.monitorbase.com/api/v1/prospect/sandbox"
);

const headers = {
    "X-Authorization": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "prospects": [
        {
            "first_name": "John",
            "last_name": "Doe",
            "address": "123 E Fake St",
            "city": "Salt Lake City",
            "state": "XX",
            "zip": "84106",
            "lo_email": "kayleigh.white@example.net"
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.monitorbase.com/api/v1/prospect/sandbox';
$response = $client->post(
    $url,
    [
        'headers' => [
            'X-Authorization' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'prospects' => [
                [
                    'first_name' => 'John',
                    'last_name' => 'Doe',
                    'address' => '123 E Fake St',
                    'city' => 'Salt Lake City',
                    'state' => 'XX',
                    'zip' => '84106',
                    'lo_email' => 'kayleigh.white@example.net',
                ],
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.monitorbase.com/api/v1/prospect/sandbox'
payload = {
    "prospects": [
        {
            "first_name": "John",
            "last_name": "Doe",
            "address": "123 E Fake St",
            "city": "Salt Lake City",
            "state": "XX",
            "zip": "84106",
            "lo_email": "kayleigh.white@example.net"
        }
    ]
}
headers = {
  'X-Authorization': '{YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (400, prospects array missing):


{
    "status": "failed",
    "message": "Prospects array not set"
}
 

Example response (403, user not authorized):


{
    "error": "Unauthenticated"
}
 

Request   

POST api/v1/prospect/sandbox

Headers

X-Authorization      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

prospects   object[]  optional  

Prospect array

first_name   string  optional  

The prospect's first name Example: John

last_name   string  optional  

The prospect's last name Example: Doe

address   string  optional  

The prospect's address Example: 123 E Fake St

city   string  optional  

The prospect's city Example: Salt Lake City

state   string  optional  

The prospect's state Example: XX

zip   string  optional  

The prospect's zip Example: 84106

lo_email   string  optional  

The prospect's Loan Officer's email address. Required or use lo_id. One must be used Example: kayleigh.white@example.net

Update Prospect

requires authentication

End point to update a contact within MonitorBase. Please be careful as there is no undo for this feature. Type can be the contacts email, id (MonitorBase ID) or alt_id (CRM ID)

Example request:
curl --request POST \
    "https://api.monitorbase.com/api/v1/prospect/update/sapiente/sapiente" \
    --header "X-Authorization: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"update\": [
        {
            \"first_name\": \"John\",
            \"last_name\": \"Doe\",
            \"address\": \"123 E Fake St\",
            \"address_2\": \"Unit #123\",
            \"city\": \"Salt Lake City\",
            \"state\": \"XX\",
            \"zip\": \"84106\",
            \"email\": \"consumer@example.com\",
            \"birth_day\": \"sapiente\",
            \"phones\": {
                \"home_phone\": \"801-555-1234\",
                \"work_phone\": \"(801) 555-1234\",
                \"cell_phone\": \"+18015551234\"
            },
            \"loan_number\": \"1000493300\",
            \"remove_tags\": true,
            \"tags\": \"Tag1, Tag2, Tag3\",
            \"lo_email\": \"kayleigh.white@example.net\",
            \"lo_id\": \"sapiente\",
            \"statuses\": [
                {
                    \"date\": \"2020-09-03\",
                    \"status\": \"Funded\"
                }
            ],
            \"notes\": [
                {
                    \"note\": \"sapiente\"
                }
            ],
            \"loan_info\": [
                {
                    \"interest_rate\": 3.125,
                    \"loan_type\": \"FHA\",
                    \"loan_purpose\": \"Purchase\",
                    \"loan_amount\": 2500000
                }
            ],
            \"monitors\": {
                \"inquiry\": true,
                \"migration\": true,
                \"predictive\": true,
                \"pre_mover\": true
            },
            \"addresses\": {
                \"investment_address\": \"123 E Fake St\",
                \"investment_address_2\": \"Unit #123\",
                \"investment_city\": \"Salt Lake City\",
                \"investment_state\": \"XX\",
                \"investment_zip\": \"84106\",
                \"second_address\": \"123 E Fake St\",
                \"second_address_2\": \"Unit #123\",
                \"second_city\": \"Salt Lake City\",
                \"second_state\": \"XX\",
                \"second_zip\": \"84106\",
                \"rental_address\": \"123 E Fake St\",
                \"rental_address_2\": \"Unit #123\",
                \"rental_city\": \"Salt Lake City\",
                \"rental_state\": \"XX\",
                \"rental_zip\": \"84106\",
                \"mailing_address\": \"123 E Fake St\",
                \"mailing_address_2\": \"Unit #123\",
                \"mailing_city\": \"Salt Lake City\",
                \"mailing_state\": \"XX\",
                \"mailing_zip\": \"84106\"
            }
        }
    ]
}"
const url = new URL(
    "https://api.monitorbase.com/api/v1/prospect/update/sapiente/sapiente"
);

const headers = {
    "X-Authorization": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "update": [
        {
            "first_name": "John",
            "last_name": "Doe",
            "address": "123 E Fake St",
            "address_2": "Unit #123",
            "city": "Salt Lake City",
            "state": "XX",
            "zip": "84106",
            "email": "consumer@example.com",
            "birth_day": "sapiente",
            "phones": {
                "home_phone": "801-555-1234",
                "work_phone": "(801) 555-1234",
                "cell_phone": "+18015551234"
            },
            "loan_number": "1000493300",
            "remove_tags": true,
            "tags": "Tag1, Tag2, Tag3",
            "lo_email": "kayleigh.white@example.net",
            "lo_id": "sapiente",
            "statuses": [
                {
                    "date": "2020-09-03",
                    "status": "Funded"
                }
            ],
            "notes": [
                {
                    "note": "sapiente"
                }
            ],
            "loan_info": [
                {
                    "interest_rate": 3.125,
                    "loan_type": "FHA",
                    "loan_purpose": "Purchase",
                    "loan_amount": 2500000
                }
            ],
            "monitors": {
                "inquiry": true,
                "migration": true,
                "predictive": true,
                "pre_mover": true
            },
            "addresses": {
                "investment_address": "123 E Fake St",
                "investment_address_2": "Unit #123",
                "investment_city": "Salt Lake City",
                "investment_state": "XX",
                "investment_zip": "84106",
                "second_address": "123 E Fake St",
                "second_address_2": "Unit #123",
                "second_city": "Salt Lake City",
                "second_state": "XX",
                "second_zip": "84106",
                "rental_address": "123 E Fake St",
                "rental_address_2": "Unit #123",
                "rental_city": "Salt Lake City",
                "rental_state": "XX",
                "rental_zip": "84106",
                "mailing_address": "123 E Fake St",
                "mailing_address_2": "Unit #123",
                "mailing_city": "Salt Lake City",
                "mailing_state": "XX",
                "mailing_zip": "84106"
            }
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.monitorbase.com/api/v1/prospect/update/sapiente/sapiente';
$response = $client->post(
    $url,
    [
        'headers' => [
            'X-Authorization' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'update' => [
                [
                    'first_name' => 'John',
                    'last_name' => 'Doe',
                    'address' => '123 E Fake St',
                    'address_2' => 'Unit #123',
                    'city' => 'Salt Lake City',
                    'state' => 'XX',
                    'zip' => '84106',
                    'email' => 'consumer@example.com',
                    'birth_day' => 'sapiente',
                    'phones' => [
                        'home_phone' => '801-555-1234',
                        'work_phone' => '(801) 555-1234',
                        'cell_phone' => '+18015551234',
                    ],
                    'loan_number' => '1000493300',
                    'remove_tags' => true,
                    'tags' => 'Tag1, Tag2, Tag3',
                    'lo_email' => 'kayleigh.white@example.net',
                    'lo_id' => 'sapiente',
                    'statuses' => [
                        [
                            'date' => '2020-09-03',
                            'status' => 'Funded',
                        ],
                    ],
                    'notes' => [
                        [
                            'note' => 'sapiente',
                        ],
                    ],
                    'loan_info' => [
                        [
                            'interest_rate' => 3.125,
                            'loan_type' => 'FHA',
                            'loan_purpose' => 'Purchase',
                            'loan_amount' => 2500000.0,
                        ],
                    ],
                    'monitors' => [
                        'inquiry' => true,
                        'migration' => true,
                        'predictive' => true,
                        'pre_mover' => true,
                    ],
                    'addresses' => [
                        'investment_address' => '123 E Fake St',
                        'investment_address_2' => 'Unit #123',
                        'investment_city' => 'Salt Lake City',
                        'investment_state' => 'XX',
                        'investment_zip' => '84106',
                        'second_address' => '123 E Fake St',
                        'second_address_2' => 'Unit #123',
                        'second_city' => 'Salt Lake City',
                        'second_state' => 'XX',
                        'second_zip' => '84106',
                        'rental_address' => '123 E Fake St',
                        'rental_address_2' => 'Unit #123',
                        'rental_city' => 'Salt Lake City',
                        'rental_state' => 'XX',
                        'rental_zip' => '84106',
                        'mailing_address' => '123 E Fake St',
                        'mailing_address_2' => 'Unit #123',
                        'mailing_city' => 'Salt Lake City',
                        'mailing_state' => 'XX',
                        'mailing_zip' => '84106',
                    ],
                ],
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.monitorbase.com/api/v1/prospect/update/sapiente/sapiente'
payload = {
    "update": [
        {
            "first_name": "John",
            "last_name": "Doe",
            "address": "123 E Fake St",
            "address_2": "Unit #123",
            "city": "Salt Lake City",
            "state": "XX",
            "zip": "84106",
            "email": "consumer@example.com",
            "birth_day": "sapiente",
            "phones": {
                "home_phone": "801-555-1234",
                "work_phone": "(801) 555-1234",
                "cell_phone": "+18015551234"
            },
            "loan_number": "1000493300",
            "remove_tags": true,
            "tags": "Tag1, Tag2, Tag3",
            "lo_email": "kayleigh.white@example.net",
            "lo_id": "sapiente",
            "statuses": [
                {
                    "date": "2020-09-03",
                    "status": "Funded"
                }
            ],
            "notes": [
                {
                    "note": "sapiente"
                }
            ],
            "loan_info": [
                {
                    "interest_rate": 3.125,
                    "loan_type": "FHA",
                    "loan_purpose": "Purchase",
                    "loan_amount": 2500000
                }
            ],
            "monitors": {
                "inquiry": true,
                "migration": true,
                "predictive": true,
                "pre_mover": true
            },
            "addresses": {
                "investment_address": "123 E Fake St",
                "investment_address_2": "Unit #123",
                "investment_city": "Salt Lake City",
                "investment_state": "XX",
                "investment_zip": "84106",
                "second_address": "123 E Fake St",
                "second_address_2": "Unit #123",
                "second_city": "Salt Lake City",
                "second_state": "XX",
                "second_zip": "84106",
                "rental_address": "123 E Fake St",
                "rental_address_2": "Unit #123",
                "rental_city": "Salt Lake City",
                "rental_state": "XX",
                "rental_zip": "84106",
                "mailing_address": "123 E Fake St",
                "mailing_address_2": "Unit #123",
                "mailing_city": "Salt Lake City",
                "mailing_state": "XX",
                "mailing_zip": "84106"
            }
        }
    ]
}
headers = {
  'X-Authorization': '{YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (200, prospects saved in current call. Response in order of array sent. Possible errors: userNotFound, nameErrors, addressErrors, permanentOptOuts):


{
  {
   "status": "error",
   "message": "No LO Email or ID",
   "prospect_id": 0
  },
  {
   "status": "success",
   "message": "Prospect saved",
   "prospect_id": 123456
  }
}
 

Example response (400, prospects array missing):


{
    "status": "failed",
    "message": "Prospects array not set"
}
 

Example response (403, user not authorized):


{
    "error": "Unauthenticated"
}
 

Request   

POST api/v1/prospect/update/{type}/{id}

Headers

X-Authorization      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

type   string   

Example: sapiente

id   string   

The ID of the {type}. Example: sapiente

Body Parameters

update   object[]   

array

first_name   string  optional  

first name Example: John

last_name   string  optional  

last name Example: Doe

address   string  optional  

address Example: 123 E Fake St

address_2   string  optional  

address 2 Example: Unit #123

city   string  optional  

city Example: Salt Lake City

state   string  optional  

state Example: XX

zip   string  optional  

zip Example: 84106

email   string  optional  

email address Example: consumer@example.com

birth_day   string  optional  

DOB: 1980-01-01 Example: sapiente

phones   object  optional  

phone numbers

home_phone   string  optional  

phone numbers Example: 801-555-1234

work_phone   string  optional  

phone numbers Example: (801) 555-1234

cell_phone   string  optional  

phone numbers Example: +18015551234

loan_number   string  optional  

loan number Example: 1000493300

remove_tags   boolean  optional  

If update should remove all tags Example: true

tags   string  optional  

A comma separated list of tags to apply to the prospect Example: Tag1, Tag2, Tag3

lo_email   string   

Loan Officer's email address. Required or use lo_id. One must be used Example: kayleigh.white@example.net

lo_id   string  optional  

ID within MonitorBase Example: sapiente

statuses   object  optional  

An array of prospect statuses, usually used for loan status like funded, denied etc

date   date  optional  

Date status happened on Example: 2020-09-03

status   stating  optional  

Loan status Example: Funded

notes   object  optional  

Add notes for the prospect

note   string  optional  

255 character max note Example: sapiente

loan_info   object  optional  

Information on prospects loan

interest_rate   number  optional  

Interest rate Example: 3.125

loan_type   string  optional  

Loan type Example: FHA

loan_purpose   string  optional  

Loan purpose Example: Purchase

loan_amount   number  optional  

Loan amount Example: 2500000

monitors   object  optional  

set default monitoring for the prospect

inquiry   boolean  optional  

Enable inquiry monitoring Example: true

migration   boolean  optional  

Enable inquiry monitoring Example: true

predictive   boolean  optional  

Enable inquiry monitoring Example: true

pre_mover   boolean  optional  

Enable inquiry monitoring Example: true

addresses   object  optional  

investment address

investment_address   string  optional  

investment address Example: 123 E Fake St

investment_address_2   string  optional  

investment address 2 Example: Unit #123

investment_city   string  optional  

investment city Example: Salt Lake City

investment_state   string  optional  

investment state Example: XX

investment_zip   string  optional  

investment zip Example: 84106

second_address   string  optional  

2nd Home address Example: 123 E Fake St

second_address_2   string  optional  

2nd Home address 2 Example: Unit #123

second_city   string  optional  

2nd Home city Example: Salt Lake City

second_state   string  optional  

2nd Home state Example: XX

second_zip   string  optional  

2nd Home zip Example: 84106

rental_address   string  optional  

rental property address Example: 123 E Fake St

rental_address_2   string  optional  

rental property address 2 Example: Unit #123

rental_city   string  optional  

rental property city Example: Salt Lake City

rental_state   string  optional  

rental property state Example: XX

rental_zip   string  optional  

rental property zip Example: 84106

mailing_address   string  optional  

mailing address Example: 123 E Fake St

mailing_address_2   string  optional  

mailing address 2 Example: Unit #123

mailing_city   string  optional  

mailing city Example: Salt Lake City

mailing_state   string  optional  

mailing state Example: XX

mailing_zip   string  optional  

mailing zip Example: 84106

Create Mapped Prospect

requires authentication

End point to create/update prospects within MonitorBase. An, optional header of X-offload = 1 is an option this will offload the prospect for creation and return a response faster.

The mapping will be based off the Authenticated User

A mapping for the body parameters provided for this method must be present to create a prospect in the system.

Example request:
curl --request POST \
    "https://api.monitorbase.com/api/v1/prospect/mapped/create" \
    --header "X-Authorization: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"prospects\": [
        {
            \"first_name\": \"John\",
            \"last_name\": \"Doe\",
            \"address\": \"123 E Fake St\",
            \"city\": \"Salt Lake City\",
            \"state\": \"XX\",
            \"zip\": \"84106\",
            \"lo_email\": \"kayleigh.white@example.net\"
        }
    ]
}"
const url = new URL(
    "https://api.monitorbase.com/api/v1/prospect/mapped/create"
);

const headers = {
    "X-Authorization": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "prospects": [
        {
            "first_name": "John",
            "last_name": "Doe",
            "address": "123 E Fake St",
            "city": "Salt Lake City",
            "state": "XX",
            "zip": "84106",
            "lo_email": "kayleigh.white@example.net"
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.monitorbase.com/api/v1/prospect/mapped/create';
$response = $client->post(
    $url,
    [
        'headers' => [
            'X-Authorization' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'prospects' => [
                [
                    'first_name' => 'John',
                    'last_name' => 'Doe',
                    'address' => '123 E Fake St',
                    'city' => 'Salt Lake City',
                    'state' => 'XX',
                    'zip' => '84106',
                    'lo_email' => 'kayleigh.white@example.net',
                ],
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.monitorbase.com/api/v1/prospect/mapped/create'
payload = {
    "prospects": [
        {
            "first_name": "John",
            "last_name": "Doe",
            "address": "123 E Fake St",
            "city": "Salt Lake City",
            "state": "XX",
            "zip": "84106",
            "lo_email": "kayleigh.white@example.net"
        }
    ]
}
headers = {
  'X-Authorization': '{YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (200, prospects offloaded for processing):


{
    "status": "success",
    "message": "## prospects offloaded"
}
 

Example response (200, prospects saved in current call. Response in order of array sent. Possible errors: userNotFound, nameErrors, addressErrors, permanentOptOuts):


{
  {
   "status": "error",
   "message": "No LO Email or ID",
   "prospect_id": 0
  },
  {
   "status": "success",
   "message": "Prospect saved",
   "prospect_id": 123456
  }
}
 

Example response (400, prospects array missing):


{
    "status": "failed",
    "message": "Prospects array not set"
}
 

Example response (403, user not authorized):


{
    "error": "Unauthenticated"
}
 

Request   

POST api/v1/prospect/mapped/create

Headers

X-Authorization      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

prospects   object[]   

Prospect array

first_name   string   

The prospect's first name Example: John

last_name   string   

The prospect's last name Example: Doe

address   string   

The prospect's address Example: 123 E Fake St

city   string   

The prospect's city Example: Salt Lake City

state   string   

The prospect's state Example: XX

zip   string   

The prospect's zip Example: 84106

lo_email   string   

The prospect's Loan Officer's email address. Required or use lo_id. One must be used Example: kayleigh.white@example.net

Teams

Create Branch

requires authentication

Create a new Branch in MoniorBase

Example request:
curl --request POST \
    "https://api.monitorbase.com/api/v1/branch/create" \
    --header "X-Authorization: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"branch_id\": \"B1234\"
}"
const url = new URL(
    "https://api.monitorbase.com/api/v1/branch/create"
);

const headers = {
    "X-Authorization": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "branch_id": "B1234"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.monitorbase.com/api/v1/branch/create';
$response = $client->post(
    $url,
    [
        'headers' => [
            'X-Authorization' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'branch_id' => 'B1234',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.monitorbase.com/api/v1/branch/create'
payload = {
    "branch_id": "B1234"
}
headers = {
  'X-Authorization': '{YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (200, branch successfully created):


{
    "status": "success",
    "message": "Branch created",
    "branch_id": "B1234"
}
 

Example response (400, the required attribute field is missing):


{
    "status": "error",
    "message": "The {attribute} field is required"
}
 

Example response (400, The {attribute} field provided is empty/null/void):


{
 "status": "error",
 "message": "The {attribute} field must not be empty
}
 

Example response (400, The {attribute} field is either too short or too long):


{
    "status": "error",
    "message": "The {attribute} field must be between {min} - {max} characters"
}
 

Example response (400, The {attribute} field is an inappropriate type):


{
    "status": "error",
    "message": "The {attribute} field must be a {type}"
}
 

Example response (400, The branch_number field does not match a given pattern):


{
    "status": "error",
    "message": "The branch_number field is not an appropriate phone number"
}
 

Example response (400, unable to find division with given ID):


{
    "status": "error",
    "message": "Division not found"
}
 

Example response (400, a branch with that branch_id already exists in your company):


{
    "status": "error",
    "message": "A branch with that branch_id already exists"
}
 

Request   

POST api/v1/branch/create

Headers

X-Authorization      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

branch_id   string   

Branch ID (unique) Example: B1234

Create Division

requires authentication

Create a new division in MonitorBase.

Example request:
curl --request POST \
    "https://api.monitorbase.com/api/v1/division/create" \
    --header "X-Authorization: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"sapiente\",
    \"division_id\": \"sapiente\",
    \"region_id\": \"sapiente\",
    \"address\": \"sapiente\",
    \"city\": \"sapiente\",
    \"state\": \"XX\",
    \"zip\": \"sapiente\"
}"
const url = new URL(
    "https://api.monitorbase.com/api/v1/division/create"
);

const headers = {
    "X-Authorization": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "sapiente",
    "division_id": "sapiente",
    "region_id": "sapiente",
    "address": "sapiente",
    "city": "sapiente",
    "state": "XX",
    "zip": "sapiente"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.monitorbase.com/api/v1/division/create';
$response = $client->post(
    $url,
    [
        'headers' => [
            'X-Authorization' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'sapiente',
            'division_id' => 'sapiente',
            'region_id' => 'sapiente',
            'address' => 'sapiente',
            'city' => 'sapiente',
            'state' => 'XX',
            'zip' => 'sapiente',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.monitorbase.com/api/v1/division/create'
payload = {
    "name": "sapiente",
    "division_id": "sapiente",
    "region_id": "sapiente",
    "address": "sapiente",
    "city": "sapiente",
    "state": "XX",
    "zip": "sapiente"
}
headers = {
  'X-Authorization': '{YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (200, division successfully created):


{
    "status": "success",
    "message": "Division created"
}
 

Example response (400, required division name field missing):


{
    "status": "error",
    "message": "Division name required"
}
 

Example response (400, required division_id field missing):


{
    "status": "error",
    "message": "Division ID required"
}
 

Example response (400, division ID already exits):


{
    "status": "error",
    "message": "Division ID already exists"
}
 

Request   

POST api/v1/division/create

Headers

X-Authorization      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

name   string   

Division name Example: sapiente

division_id   string   

Division ID (unique) Example: sapiente

region_id   string   

region that this division belongs to Example: sapiente

address   string  optional  

address Example: sapiente

city   string  optional  

city Example: sapiente

state   string  optional  

state Example: XX

zip   string  optional  

zip code Example: sapiente

Create Region

requires authentication

Create a new region in MonitorBase. This is a required step before creating a division.

Example request:
curl --request POST \
    "https://api.monitorbase.com/api/v1/region/create" \
    --header "X-Authorization: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"sapiente\",
    \"region_id\": \"sapiente\",
    \"address\": \"sapiente\",
    \"city\": \"sapiente\",
    \"state\": \"XX\",
    \"zip\": \"sapiente\"
}"
const url = new URL(
    "https://api.monitorbase.com/api/v1/region/create"
);

const headers = {
    "X-Authorization": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "sapiente",
    "region_id": "sapiente",
    "address": "sapiente",
    "city": "sapiente",
    "state": "XX",
    "zip": "sapiente"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.monitorbase.com/api/v1/region/create';
$response = $client->post(
    $url,
    [
        'headers' => [
            'X-Authorization' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'sapiente',
            'region_id' => 'sapiente',
            'address' => 'sapiente',
            'city' => 'sapiente',
            'state' => 'XX',
            'zip' => 'sapiente',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.monitorbase.com/api/v1/region/create'
payload = {
    "name": "sapiente",
    "region_id": "sapiente",
    "address": "sapiente",
    "city": "sapiente",
    "state": "XX",
    "zip": "sapiente"
}
headers = {
  'X-Authorization': '{YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (200, region successfully created):


{
    "status": "success",
    "message": "Region created"
}
 

Example response (400, required region name field missing):


{
    "status": "error",
    "message": "Region name required"
}
 

Example response (400, required region_id field missing):


{
    "status": "error",
    "message": "Region ID required"
}
 

Example response (400, region ID already exits):


{
    "status": "error",
    "message": "Region ID already exists"
}
 

Request   

POST api/v1/region/create

Headers

X-Authorization      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

name   string   

Region name Example: sapiente

region_id   string   

Region ID (unique) Example: sapiente

address   string  optional  

address Example: sapiente

city   string  optional  

city Example: sapiente

state   string  optional  

state Example: XX

zip   string  optional  

zip code Example: sapiente

User

Get

requires authentication

Example request:
curl --request GET \
    --get "https://api.monitorbase.com/api/v1/user/get/loanofficer@example.com" \
    --header "X-Authorization: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.monitorbase.com/api/v1/user/get/loanofficer@example.com"
);

const headers = {
    "X-Authorization": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.monitorbase.com/api/v1/user/get/loanofficer@example.com';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Authorization' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.monitorbase.com/api/v1/user/get/loanofficer@example.com'
headers = {
  'X-Authorization': '{YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200, user successfully updated):


{
"status": "success",
  "message": "User found",
 "data": {
   "email": "lo@example.com",
   "first_name": "first",
   "last_name": "Last",
   "phone_number": "801-555-1234",
   "loan_officer": 0,
   "lo_id": "ABC123",
   "NMLS": 0,
   "u_custom_1": "Custom",
   "branch": {
     "id": 1,
     "alt_id": "CCCC1",
     "name": "Branch Name"
   },
   "licensed_state": ["UT", "CA"],
   "url": "https://www.example.com"/loan.officer,
   "apply_now_url": "https://www.example.com/loan.officer/apply",
 }
}
 

Example response (400, required email field missing):


{
    "status": "error",
    "message": "The email field is required"
}
 

Example response (400, The email provided is does not conform to email standards):


{
    "status": "error",
    "message": "A valid email is required"
}
 

Example response (400, the email field was empty/null/void):


{
    "status": "error",
    "message": "The email field must not be empty"
}
 

Example response (400, No record exists for that user):


{
    "status": "error",
    "message": "A User with that email does not exist"
}
 

Example response (401, user authentication failed):


{
    "status": "failed",
    "message": "Not authorized"
}
 

Request   

GET api/v1/user/get/{email}

Headers

X-Authorization      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

email   string   

User's email address Example: loanofficer@example.com

Create

requires authentication

Create a new user in MonitorBase. Branch name/ID and email are the only things required other information can be filled out by the user on first login

Example request:
curl --request POST \
    "https://api.monitorbase.com/api/v1/user/create" \
    --header "X-Authorization: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"email\": \"loanofficer@example.com\",
    \"branch_id\": \"sapiente\",
    \"first_name\": \"sapiente\",
    \"last_name\": \"sapiente\",
    \"phone_number\": \"##########, ### ### ####, ###-###-####, (###)#######, (###) ### ####, (###)-###-####\",
    \"loan_officer\": true,
    \"lo_id\": \"sapiente\",
    \"NMLS\": \"sapiente\",
    \"url\": \"http:\\/\\/www.rolfson.org\\/enim-tempore-ad-consequuntur-magni-consectetur-ut.html\",
    \"apply_now_url\": \"http:\\/\\/www.rolfson.org\\/enim-tempore-ad-consequuntur-magni-consectetur-ut.html\",
    \"is_manager\": true,
    \"send_welcome\": true,
    \"licenses[]\": [],
    \"u_custom_1\": \"sapiente\"
}"
const url = new URL(
    "https://api.monitorbase.com/api/v1/user/create"
);

const headers = {
    "X-Authorization": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "email": "loanofficer@example.com",
    "branch_id": "sapiente",
    "first_name": "sapiente",
    "last_name": "sapiente",
    "phone_number": "##########, ### ### ####, ###-###-####, (###)#######, (###) ### ####, (###)-###-####",
    "loan_officer": true,
    "lo_id": "sapiente",
    "NMLS": "sapiente",
    "url": "http:\/\/www.rolfson.org\/enim-tempore-ad-consequuntur-magni-consectetur-ut.html",
    "apply_now_url": "http:\/\/www.rolfson.org\/enim-tempore-ad-consequuntur-magni-consectetur-ut.html",
    "is_manager": true,
    "send_welcome": true,
    "licenses[]": [],
    "u_custom_1": "sapiente"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.monitorbase.com/api/v1/user/create';
$response = $client->post(
    $url,
    [
        'headers' => [
            'X-Authorization' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'email' => 'loanofficer@example.com',
            'branch_id' => 'sapiente',
            'first_name' => 'sapiente',
            'last_name' => 'sapiente',
            'phone_number' => '##########, ### ### ####, ###-###-####, (###)#######, (###) ### ####, (###)-###-####',
            'loan_officer' => true,
            'lo_id' => 'sapiente',
            'NMLS' => 'sapiente',
            'url' => 'http://www.rolfson.org/enim-tempore-ad-consequuntur-magni-consectetur-ut.html',
            'apply_now_url' => 'http://www.rolfson.org/enim-tempore-ad-consequuntur-magni-consectetur-ut.html',
            'is_manager' => true,
            'send_welcome' => true,
            'licenses[]' => [],
            'u_custom_1' => 'sapiente',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.monitorbase.com/api/v1/user/create'
payload = {
    "email": "loanofficer@example.com",
    "branch_id": "sapiente",
    "first_name": "sapiente",
    "last_name": "sapiente",
    "phone_number": "##########, ### ### ####, ###-###-####, (###)#######, (###) ### ####, (###)-###-####",
    "loan_officer": true,
    "lo_id": "sapiente",
    "NMLS": "sapiente",
    "url": "http:\/\/www.rolfson.org\/enim-tempore-ad-consequuntur-magni-consectetur-ut.html",
    "apply_now_url": "http:\/\/www.rolfson.org\/enim-tempore-ad-consequuntur-magni-consectetur-ut.html",
    "is_manager": true,
    "send_welcome": true,
    "licenses[]": [],
    "u_custom_1": "sapiente"
}
headers = {
  'X-Authorization': '{YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (200, user successfully created):


{
    "status": "success",
    "message": "User created"
}
 

Example response (400, a required {attribute} field missing was left out of your post):


{
    "status": "error",
    "message": "The {attribute} field is required"
}
 

Example response (400, The {attribute} field providied was empty/null/void):


{
    "status": "error",
    "message": "The {attribute} must not be empty"
}
 

Example response (400, The {attribute} field is either too short or too long):


{
    "status": "error",
    "message": "The {attribute} field must be between {min} - {max} characters"
}
 

Example response (400, The {attribute} field is an inappropriate type):


{
    "status": "error",
    "message": "The {attribute} field must be a {type}"
}
 

Example response (400, The email provided is does not conform to email standards):


{
    "status": "error",
    "message": "A valid email is required"
}
 

Example response (400, the email provided matched another user's record):


{
    "status": "error",
    "message": "A User with this email already exists"
}
 

Example response (400, invalid branch. unable to find the branch based on name or alt_id):


{
    "status": "error",
    "message": "Invalid branch"
}
 

Example response (400, user email already exists):


{
    "status": "error",
    "message": "User with this email already exists"
}
 

Example response (400, lo_id already exists):


{
    "status": "error",
    "message": "Loan officer ID already exists"
}
 

Example response (400):


scenario"One of the states you provided is not a valid US State or Territory" {
 "status": "error",
 "message": "The licenses.* field is not a valid State or territory"
}
 

Example response (401, user authentication failed):


{
    "status": "failed",
    "message": "Not authorized"
}
 

Request   

POST api/v1/user/create

Headers

X-Authorization      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

email   string   

User's email address Example: loanofficer@example.com

branch_id   string   

Branch ID or name Example: sapiente

first_name   string   

User's first name Example: sapiente

last_name   string   

User's last name Example: sapiente

phone_number   string   

User's phone number Example: ##########, ### ### ####, ###-###-####, (###)#######, (###) ### ####, (###)-###-####

loan_officer   boolean  optional  

If user is a loan officer Example: true

lo_id   Alternate  optional  

User ID Example: sapiente

NMLS   string  optional  

NMLS number Example: sapiente

url   string  optional  

The LO's website Example: http://www.rolfson.org/enim-tempore-ad-consequuntur-magni-consectetur-ut.html

apply_now_url   string  optional  

The LO's apply now url (form to fill out, etc.) Example: http://www.rolfson.org/enim-tempore-ad-consequuntur-magni-consectetur-ut.html

is_manager   boolean  optional  

Is user a branch manager Example: true

send_welcome   boolean  optional  

Send welcome email Example: true

licenses[]   object  optional  

States the user is licensed in

u_custom_1   An  optional  

optional field to store various data for this User Example: sapiente

Deactivate

requires authentication

Example request:
curl --request POST \
    "https://api.monitorbase.com/api/v1/user/delete" \
    --header "X-Authorization: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"email\": \"loanofficer@example.com\",
    \"alt_id\": \"sapiente\"
}"
const url = new URL(
    "https://api.monitorbase.com/api/v1/user/delete"
);

const headers = {
    "X-Authorization": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "email": "loanofficer@example.com",
    "alt_id": "sapiente"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.monitorbase.com/api/v1/user/delete';
$response = $client->post(
    $url,
    [
        'headers' => [
            'X-Authorization' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'email' => 'loanofficer@example.com',
            'alt_id' => 'sapiente',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.monitorbase.com/api/v1/user/delete'
payload = {
    "email": "loanofficer@example.com",
    "alt_id": "sapiente"
}
headers = {
  'X-Authorization': '{YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (200, user successfully deactivated):


{
    "status": "success",
    "message": "User deactivated"
}
 

Example response (400, required email field missing):


{
    "status": "error",
    "message": "The email field is required"
}
 

Example response (400, The email provided is does not conform to email standards):


{
    "status": "error",
    "message": "A valid email is required"
}
 

Example response (400, the email field was empty/null/void):


{
    "status": "error",
    "message": "The email field must not be empty"
}
 

Example response (400, No record exists for that user):


{
    "status": "error",
    "message": "A User with that email does not exist"
}
 

Example response (401, user authentication failed):


{
    "status": "failed",
    "message": "Not authorized"
}
 

Request   

POST api/v1/user/delete

Headers

X-Authorization      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

email   string   

User's email address Example: loanofficer@example.com

alt_id   string  optional  

Alternate User ID Example: sapiente

Update

requires authentication

Example request:
curl --request POST \
    "https://api.monitorbase.com/api/v1/user/update/loanofficer@example.com" \
    --header "X-Authorization: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"email\": \"loanofficer@example.com\",
    \"branch_id\": \"sapiente\",
    \"first_name\": \"sapiente\",
    \"last_name\": \"sapiente\",
    \"phone_number\": \"##########, ### ### ####, ###-###-####, (###)#######, (###) ### ####, (###)-###-####\",
    \"loan_officer\": true,
    \"lo_id\": \"sapiente\",
    \"NMLS\": \"sapiente\",
    \"url\": \"http:\\/\\/www.rolfson.org\\/enim-tempore-ad-consequuntur-magni-consectetur-ut.html\",
    \"apply_now_url\": \"http:\\/\\/www.rolfson.org\\/enim-tempore-ad-consequuntur-magni-consectetur-ut.html\",
    \"is_manager\": true,
    \"send_welcome\": true,
    \"licenses[]\": [],
    \"u_custom_1\": \"sapiente\"
}"
const url = new URL(
    "https://api.monitorbase.com/api/v1/user/update/loanofficer@example.com"
);

const headers = {
    "X-Authorization": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "email": "loanofficer@example.com",
    "branch_id": "sapiente",
    "first_name": "sapiente",
    "last_name": "sapiente",
    "phone_number": "##########, ### ### ####, ###-###-####, (###)#######, (###) ### ####, (###)-###-####",
    "loan_officer": true,
    "lo_id": "sapiente",
    "NMLS": "sapiente",
    "url": "http:\/\/www.rolfson.org\/enim-tempore-ad-consequuntur-magni-consectetur-ut.html",
    "apply_now_url": "http:\/\/www.rolfson.org\/enim-tempore-ad-consequuntur-magni-consectetur-ut.html",
    "is_manager": true,
    "send_welcome": true,
    "licenses[]": [],
    "u_custom_1": "sapiente"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.monitorbase.com/api/v1/user/update/loanofficer@example.com';
$response = $client->post(
    $url,
    [
        'headers' => [
            'X-Authorization' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'email' => 'loanofficer@example.com',
            'branch_id' => 'sapiente',
            'first_name' => 'sapiente',
            'last_name' => 'sapiente',
            'phone_number' => '##########, ### ### ####, ###-###-####, (###)#######, (###) ### ####, (###)-###-####',
            'loan_officer' => true,
            'lo_id' => 'sapiente',
            'NMLS' => 'sapiente',
            'url' => 'http://www.rolfson.org/enim-tempore-ad-consequuntur-magni-consectetur-ut.html',
            'apply_now_url' => 'http://www.rolfson.org/enim-tempore-ad-consequuntur-magni-consectetur-ut.html',
            'is_manager' => true,
            'send_welcome' => true,
            'licenses[]' => [],
            'u_custom_1' => 'sapiente',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.monitorbase.com/api/v1/user/update/loanofficer@example.com'
payload = {
    "email": "loanofficer@example.com",
    "branch_id": "sapiente",
    "first_name": "sapiente",
    "last_name": "sapiente",
    "phone_number": "##########, ### ### ####, ###-###-####, (###)#######, (###) ### ####, (###)-###-####",
    "loan_officer": true,
    "lo_id": "sapiente",
    "NMLS": "sapiente",
    "url": "http:\/\/www.rolfson.org\/enim-tempore-ad-consequuntur-magni-consectetur-ut.html",
    "apply_now_url": "http:\/\/www.rolfson.org\/enim-tempore-ad-consequuntur-magni-consectetur-ut.html",
    "is_manager": true,
    "send_welcome": true,
    "licenses[]": [],
    "u_custom_1": "sapiente"
}
headers = {
  'X-Authorization': '{YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (200, user successfully updated):


{
    "status": "success",
    "message": "User updated"
}
 

Example response (400, required email field missing):


{
    "status": "error",
    "message": "The email field is required"
}
 

Example response (400, The email provided is does not conform to email standards):


{
    "status": "error",
    "message": "A valid email is required"
}
 

Example response (400, the email field was empty/null/void):


{
    "status": "error",
    "message": "The email field must not be empty"
}
 

Example response (400, No record exists for that user):


{
    "status": "error",
    "message": "A User with that email does not exist"
}
 

Example response (401, user authentication failed):


{
    "status": "failed",
    "message": "Not authorized"
}
 

Request   

POST api/v1/user/update/{email}

Headers

X-Authorization      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

email   string   

User's email address Example: loanofficer@example.com

Body Parameters

email   string  optional  

User's email address Example: loanofficer@example.com

branch_id   string  optional  

Branch ID or name Example: sapiente

first_name   string  optional  

User's first name Example: sapiente

last_name   string  optional  

User's last name Example: sapiente

phone_number   string  optional  

User's phone number Example: ##########, ### ### ####, ###-###-####, (###)#######, (###) ### ####, (###)-###-####

loan_officer   boolean  optional  

If user is a loan officer Example: true

lo_id   Alternate  optional  

User ID Example: sapiente

NMLS   string  optional  

NMLS number Example: sapiente

url   string  optional  

The LO's website Example: http://www.rolfson.org/enim-tempore-ad-consequuntur-magni-consectetur-ut.html

apply_now_url   string  optional  

The LO's apply now url (form to fill out, etc.) Example: http://www.rolfson.org/enim-tempore-ad-consequuntur-magni-consectetur-ut.html

is_manager   boolean  optional  

Is user a branch manager Example: true

send_welcome   boolean  optional  

Send welcome email Example: true

licenses[]   object  optional  

States the user is licensed in

u_custom_1   An  optional  

optional field to store various data for this User Example: sapiente

Webhook Out

Alert

requires authentication

Send an Alert to your endpoint. This example is of a json post but you can select in the admin to use POST to send as form_data and content type will be application/x-www-form-urlencoded. The end point in this example is on MonitorBase.com but would be set to your end point you've developed. Additionally, you can setup your own custom header name and value. Shown in this example as token.

Please contact support@monitorbase.com for information on setting up your webhook via the MonitorBase web app.

Possible Types: Inquiry Migration Predictive Premover Payoff

Example request:
curl --request POST \
    "https://api.monitorbase.com/api/v1/alert/webhook/form" \
    --header "X-Authorization: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Optional-Header: example"
const url = new URL(
    "https://api.monitorbase.com/api/v1/alert/webhook/form"
);

const headers = {
    "X-Authorization": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Optional-Header": "example",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.monitorbase.com/api/v1/alert/webhook/form';
$response = $client->post(
    $url,
    [
        'headers' => [
            'X-Authorization' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Optional-Header' => 'example',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.monitorbase.com/api/v1/alert/webhook/form'
headers = {
  'X-Authorization': '{YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Optional-Header': 'example'
}

response = requests.request('POST', url, headers=headers)
response.json()

Example response (200):


{
 "source": "MonitorBase - Test",
"lo_email": "loan-officer@example.com",
"lo_name": "Loan Officer",
'lo_alt_id': '1234',
"first_name": "Stacey",
"last_name": "Labadie",
"address": "760 Keven Highway Suite 274",
"city": "Jerelshire",
"state": "SC",
"zip": "18805",
"custom_1": "custom-1",
"custom_2": "custom-2",
"custom_3": "custom-3",
"custom_4": "custom-4",
"custom_5": "custom-5",
"home_phone": "1-888-357-7440",
"cell_phone": "1-855-794-9070",
"work_phone": "1-800-728-4989",
"email": "consumer@example.com",
"url": "https://my.monitorbase.com/prospects/show/1955",
"loan_id": "1607110335",
"loan_number": "1607110335",
"prospect_id": "1955",
"alt_id": "25683017",
"type": "Inquiry",
"alert_intel": "Alert Intel: Test Alert Intel Data",
"alert_id": "2364",
"alert_date": "2020-12-04",
"alert_intel_id": 1
"alert_intel_playbook_url": "https://my.monitorbase.com/playbook/1"
"tags": ["tag1","tag2","tag3"]
}
 

Request   

POST api/v1/alert/webhook/form

Headers

X-Authorization      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Optional-Header      

Example: example

SoftPull

requires authentication

Send a SoftPull to your endpoint. This example is of a json post but you can select in the admin to use POST to send as form_data and content type will be application/x-www-form-urlencoded. The end point in this example is on MonitorBase.com but would be set to your end point you've developed. Additionally, you can setup your own custom header name and value. Shown in this example as token.

Please contact support@monitorbase.com for information on setting up your webhook via the MonitorBase web app.

Possible Types: SoftPull Qualified SoftPull Not Qualified

Example request:
curl --request POST \
    "https://api.monitorbase.com/api/v1/softpull/webhook/form" \
    --header "X-Authorization: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Optional-Header: example"
const url = new URL(
    "https://api.monitorbase.com/api/v1/softpull/webhook/form"
);

const headers = {
    "X-Authorization": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Optional-Header": "example",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.monitorbase.com/api/v1/softpull/webhook/form';
$response = $client->post(
    $url,
    [
        'headers' => [
            'X-Authorization' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Optional-Header' => 'example',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.monitorbase.com/api/v1/softpull/webhook/form'
headers = {
  'X-Authorization': '{YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Optional-Header': 'example'
}

response = requests.request('POST', url, headers=headers)
response.json()

Example response (200):


{
    "source": "MonitorBase - Test",
    "lo_email": "loan-officer@example.com",
    "lo_name": "Loan Officer",
    "first_name": "Jaylan",
    "last_name": "Rogahn",
    "address": "2754 Frank Lane Suite 517",
    "city": "North Jonasburgh",
    "state": "NE",
    "zip": "13321",
    "custom_1": "custom-1",
    "custom_2": "custom-2",
    "custom_3": "custom-3",
    "custom_4": "custom-4",
    "custom_5": "custom-5",
    "home_phone": "(877) 947-3273",
    "cell_phone": "(877) 508-5655",
    "work_phone": "(855) 522-3533",
    "email": "consumer@example.com",
    "url": "https://my.monitorbase.com/prospects/show/3473",
    "loan_id": "1607113366",
    "loan_number": "1607113366",
    "prospect_id": "3473",
    "alt_id": "25683017",
    "type": "SoftPull Qualified",
    "softpull_date": "2020-12-04 13:22:46",
    "softpull_source": "Kacey"
}
 

Request   

POST api/v1/softpull/webhook/form

Headers

X-Authorization      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Optional-Header      

Example: example

Email Actions

requires authentication

Send a email action to your endpoint. The end point in this example is on MonitorBase.com but would be set to your end point you've developed. Additionally, you can setup your own custom header name and value. Shown in this example as token.

Please contact support@monitorbase.com for information on setting up your webhook via the MonitorBase web app.

Possible Types: open viewed clicked apply_now request_call request_email

Example request:
curl --request POST \
    "https://api.monitorbase.com/api/v1/email/actions" \
    --header "X-Authorization: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Optional-Header: example"
const url = new URL(
    "https://api.monitorbase.com/api/v1/email/actions"
);

const headers = {
    "X-Authorization": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Optional-Header": "example",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.monitorbase.com/api/v1/email/actions';
$response = $client->post(
    $url,
    [
        'headers' => [
            'X-Authorization' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Optional-Header' => 'example',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.monitorbase.com/api/v1/email/actions'
headers = {
  'X-Authorization': '{YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Optional-Header': 'example'
}

response = requests.request('POST', url, headers=headers)
response.json()

Example response (200):


{
    "source": "MonitorBase - Test",
    "contact_email": "consumer@example.com",
    "contact_id": "AZ1234",
    "prospect_id": "Jaylan",
    "action": "open"
}
 

Request   

POST api/v1/email/actions

Headers

X-Authorization      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Optional-Header      

Example: example

Endpoints

POST api/v1/pm/inbound

requires authentication

Example request:
curl --request POST \
    "https://api.monitorbase.com/api/v1/pm/inbound" \
    --header "X-Authorization: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.monitorbase.com/api/v1/pm/inbound"
);

const headers = {
    "X-Authorization": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.monitorbase.com/api/v1/pm/inbound';
$response = $client->post(
    $url,
    [
        'headers' => [
            'X-Authorization' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.monitorbase.com/api/v1/pm/inbound'
headers = {
  'X-Authorization': '{YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers)
response.json()

Request   

POST api/v1/pm/inbound

Headers

X-Authorization      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json