Dotloop External API Developer Guide
Dotloop External API Developer Guide
Updated: 7/2/2016
Introduction
How to Use the API
A Note on Resource Paths
Exploring the API with curl
What’s a Profile?
Loop ID vs Loop View ID
OAuth Security
Use the API key to access dotloop resources
Getting an API key
List of REST Endpoints
Endpoint Reference
Profiles
Loop Summary
Loop Details
Loop Activities
Loop Documents
Loop Document
Loop Participants
Loop Tasks
Loop Folders
Employees
Document Activities
Contacts
Contact Details
Profile Admins
Introduction
The dotloop API provides access to the most important pieces of data from dotloop. This data can be used for business reporting and integration
with other systems. Our goal is to provide a secure and comprehensive platform for interacting with dotloop data.
Since the API is an application programming interface, it’s necessary to have programming experience to use the API. This documentation
assumes you are a programmer familiar with consuming RESTful web services. All responses are JSON unless otherwise noted.
a. This API key will be sent in an HTTP header along with all API calls
a. Parse the JSON response and choose the appropriate profile id for the brokerage
3. Call the /profile/{id}/loop endpoint to get a list of loops for this profile
To demonstrate we will pretend that we generated an API key for use and it is 1234-5678-90123. Using curl on a UNIX command line we could
perform the following steps:
[
{
"profileId": 1234,
"companyName": "Demo Brokerage"
"phoneNumber": "5131234567",
"faxNumber": "",
"name": "Demo Brokerage",
"address1": "123 Main St.",
"address2": "",
"suite": "",
"city": "Cincinnati",
"state": "OH",
"zipcode": "45203",
"active": true,
"deleted": false,
"profileType": "BROKERAGE"
},
{
"profileId": 4234,
"name": "Personal Profile",
"active": true,
"deleted": false,
"profileType": "INDIVIDUAL"
}
]
In this case, we would be interested in pulling all loops from profile 1234, the Brokerage account. Loops can be retrieved with the following call:
The response would look something like this (formatted for readability):
[
{
}
]
From this response, a client can pull the names of all loops
What’s a Profile?
A dotloop account has one or more profiles. For example, a user might have admin access to a brokerage profile, an office profile, and a personal
profile. Each profile has its own set of loops and templates. Most calls to the dotloop API require you to specify a profile.
OAuth Security
The dotloop API uses OAuth 2.0 for authentication. We use the two-legged flow intended for system-to-system authentication.
A dotloop user with access to the API feature can generate an API key within the dotloop account management screens. This API key is passed
in with each call to the dotloop API.
It is important to remember that the API key should be treated with the same level of security as your dotloop password. If your API key is ever
compromised, a new key can be issued through the dotloop account management.
For example, to authenticate using curl if your API key was 1234-5678-90123 you would use the following command:
If you have API access you should see the following at the bottom of the screen:
Endpoint Reference
Profiles
Get all profiles associated with user
URL
www.dotloop.com/my/api/v1_0/profile
Method
GET
Parameters
Sample Response
[
{
"profileId": 294625,
"name": "Profile 1",
"userId": 0,
"active": true,
"deleted": false,
"profileType": "INDIVIDUAL"
},
{
"profileId": 294626,
"name": "Profile 2",
"userId": 0,
"active": true,
"deleted": false,
"profileType": "OFFICE"
}
Loops
Returns a list of up to 50 summaries for loops in a profile. To get the next 50 increment the batch number.
URL
www.dotloop.com/my/api/v1_0/profile/{profileId}/loop
Method
GET
Parameters
Name Location Description
batchNumber query Increment the batch number to page through results. The default is 1.
batchSize query Number of records to return. The maximum and default value is 50
statusIds query filter loops by status id:
id description
1 Private Listing
2 Active Listing
3 Under Contract
4 Sold
5 Leased
6 Archived
7 Pre-Listing
8 Pre-Offer
9 New
10 In-Progress
11 Done
complianceStatusIds query filter loops by compliance status id (ask support for compliance status id values, if needed)
tagIds query filter loops by tag id (ask support for tag id values, if needed)
id description
1 dotloop default
2 agent name
3 address
5 mls number
6 purchase price
7 listed date
8 expiration date
9 closing date
id description
0 descending
1 ascending
searchQuery query free-form text search, can be used for loop name, address, agent name, mls number, or tag name
createdByMe query shows only loops created by user associated with API token (true/false). Default is false.
Sample Response
[
{
"loopName": "Atturo Garay 123Main Street, Chicago, IL 60605",
"loopId": 34242,
"loopStatus": "Archived",
"loopTags": [
{
"tagId": 2,
"tagName": "Buying",
"profileId": 4533
}
],
"createdBy": 2097622,
"lastUpdated": "2013-12-03T11:38:22-05:00",
"loopViewId": 76046,
"transactionType": "Listing for Sale"
},
{
"loopName": "Atturo Garay 3059main, chicago, IL 60614",
"loopId": 34308,
"loopStatus": "Archived",
"loopTags": [
{
"tagId": 2,
"tagName": "Buying",
"profileId": 69020
}
],
"createdBy": 2097622,
"lastUpdated": "2013-12-03T11:46:16-05:00",
"loopViewId": 80269,
"transactionType": "Purchase"
}
]
Loop Summary
Details of loop view
URL
www.dotloop.com/my/api/v1_0/profile/{profileId}/loop/{loopViewId}
Method
GET
Parameters
Sample Response
[
{
"loopName": "buyers",
"loopId": 274231,
"loopStatus": "Private",
"loopTags": [
0
],
"createdBy": 2571509,
"lastUpdated": "20140728T16:11:5604:00",
"loopViewId": 404271,
"transactionType": "Purchase"
}
]
Loop Details
Retrieve the loop details for a single loop. Empty fields are not included in the details. Callers should not expect
specific properties to always be included.
URL
www.dotloop.com/my/api/v1_0/profile/{profileId}/loop/{loopViewId}/detail
Method
GET
Parameters
Sample Response
"loopId": 15751,
"sections": {
"Listing Brokerage": {
"postalCode": "45242",
"name": "DotLoop Final Review",
"stateOrProvince": "OH",
"streetName": "Lake Forest Dr.",
"streetNumber": "4445",
"officePhone": "",
"city": "Cincinnati"
},
"Buying Brokerage": {
"postalCode": "90210",
"name": "Bob's Buying Brokerage",
"stateOrProvince": "CA",
"streetName": "Mockingbird Ln",
"streetNumber": "1313",
"suite": "#1",
"city": "LA"
},
"Property Address": {
"mlsNumber": "1234567890",
"propertyAddressCountry": "USA",
"postalCode": "32123",
"stateOrProvince": "KS",
"streetName": "manor ",
"streetNumber": "1234",
"country": "USA",
"city": "lauderdale"
},
"Financials": {
"comissionRate": "7%",
"earnestMoneyHeldBy": "Steve",
"originalListingPrice": "500,000",
"currentPrice": "425000",
"purchasePrice": "400,000"
}
Loop Activities
Retrieves the activity log for a single loop.
URL
www.dotloop.com/my/api/v1_0/profile/{profileId}/loop/{loopViewId}/activity
Method
GET
Parameters
batchNumber query Increment the batch number to page through results. The default is 1.
batchSize query Number of records to return. The maximum and default value is 50
Sample Response
[
{
"message": "K Fouts (Admin for DotLoop Final Review) viewed document <activity
action=\"contracteditor\" viewId=\"15751\" documentId=\"129497\">Agency Disclosure Statement -
Seller<\/activity>",
"activityDate": "2014-01-09T13:10:14-05:00"
},
{
"message": "K Fouts (Admin for DotLoop Final Review) viewed document <activity
action=\"contracteditor\" viewId=\"15751\" documentId=\"129493\">ThaiCatering<\/activity>",
"activityDate": "2014-01-09T13:10:14-05:00"
},
{
"message": "K Fouts (Admin for DotLoop Final Review) viewed document <activity
action=\"contracteditor\" viewId=\"15751\" documentId=\"129493\">ThaiCatering<\/activity>",
"activityDate": "2014-01-09T13:08:39-05:00"
},
{
"message": "K Fouts (Admin for DotLoop Final Review) viewed document <activity
action=\"contracteditor\" viewId=\"15751\" documentId=\"129497\">Agency Disclosure Statement -
Seller<\/activity>",
"activityDate": "2014-01-09T13:08:27-05:00"
},
{
"message": "K Fouts (Admin for DotLoop Final Review) viewed document <activity
action=\"contracteditor\" viewId=\"15751\" documentId=\"129497\">Agency Disclosure Statement -
Seller<\/activity>",
"activityDate": "2014-01-09T13:07:43-05:00"
},
{
"message": "K Fouts (Admin for DotLoop Final Review) viewed document <activity
action=\"contracteditor\" viewId=\"15751\" documentId=\"129493\">ThaiCatering<\/activity>",
"activityDate": "20140109T13:07:4305:00"
},
{
"message": "K Fouts (Admin for DotLoop Final Review) viewed document <activity
action=\"contracteditor\" viewId=\"15751\" documentId=\"129497\">Agency Disclosure Statement -
Seller<\/activity>",
"activityDate": "2014-01-09T13:07:08-05:00"
}
]
Loop Documents
Retrieve a list of documents within a loop
URL
www.dotloop.com/my/api/v1_0/profile/{profileId}/loop/{loopViewId}/document
Method
GET
Parameters
Sample Response
[
{
"loopId": 405260,
"folderName": "Folder",
"documentId": 561622,
"documentName": "Agency Disclosure Statement Seller",
"signatureVerficationLink": "DL5616224301S",
"lastModifiedDate": "2014-08-25T18:33:46-04:00",
"createdDate": "2014-08-25T23:29:31-04:00",
"sharedWith": [
"405246",
"405247",
"405260"
],
"createdBy": 2462
},
"loopId": 405260,
"folderName": "Folder",
"documentId": 561621,
"documentName": "sfr3",
"signatureVerficationLink": "DL56162131X3D",
"lastModifiedDate": "2014-08-25T18:26:38-04:00",
"createdDate": "2014-08-25T23:37:47-04:00",
"sharedWith": [
"405246",
"405247",
"405260"
],
"createdBy": 2462
}
]
Loop Document
Returns a PDF for single document. The parameter “documentName” can be any text, it is provided to let the client
choose the file name.
URL
www.dotloop.com/my/api/v1_0/profile/{profileId}/loop/{loopViewId}/document/{documentId}/{documentName}.pdf
Method
GET
Parameters
Sample Response
Loop Participants
List of participants in a loop
URL
www.dotloop.com/my/api/v1_0/profile/{profileId}/loop/{loopViewId}/participant
Method
GET
Parameters
Name Location Description
Sample Response
[
{
{
"name": "K Fouts",
"email": "kfouts@email_address.com",
"role": "Listing Agent",
"memberOfMyTeam": "Y"
}
]
Loop Tasks
List of tasks in a loop
URL
www.dotloop.com/my/api/v1_0/profile/{profileId}/loop/{loopViewId}/task
Method
GET
Parameters
Sample Response
[
{
"name": "Task New",
"dueDateType": "2013-04-16T00:00:00-04:00",
"dueDate": "2013-04-16T00:00:00-04:00",
"createdDate": "2013-04-30T08:32:43-04:00",
"listName": "My Tasks",
"listId": 208,
"createdBy": 3104719,
"lockedStatus": "N",
"completionStatus": "N"
}
]
Loop Folders
List of folders in a loop.
URL
www.dotloop.com/my/api/v1_0/profile/{profileId}/loop/{loopViewId}/folder
Method
GET
Parameters
Sample Response
[
{
"viewId": 259626,
"folderId": 314074,
"name": "Folder",
"archived": false,
"minimized": false,
"folderEmailName": "7f9e7d88c31e49ccbf38199689a7e0ea",
"lastUpdatedDateISO": "2014-05-27T10:58:21-04:00"
}
]
Employees
List of up to 5000 summarized employees
URL
www.dotloop.com/my/api/v1_0/profile/{profileId}/employee
Method
GET
Parameters
batchNumber query Increment the batch number to page through results. The default is 1.
batchSize query Number of records to return. The maximum is 5000 and default value is 50
Sample Response
[
{
"memberId": 294132,
"emailAddress": "smurphy@emailaddress.com",
"firstName": "Scott",
"lastName": "Murphy",
"loopsCreated": 4,
"totalLoops": 5,
"status": "ACTIVE",
"isAdmin": "false"
},
{
"memberId": 290767,
"emailAddress": "rmurphy@emailaddress.com",
"firstName": "Rob",
"lastName": "Murphy",
"loopsCreated": 1,
"totalLoops": 1,
"status": "ACTIVE",
"isAdmin": "false"
}
]
Document Activities
Activities associated with document
URL
www.dotloop.com/my/api/v1_0/profile/{profileId}/document/{documentId}/activity
Method
GET
Parameters
batchNumber query Increment the batch number to page through results. The default is 1.
batchSize query Number of records to return. The maximum and default value is 50
Sample Response
[
{
"message": "Meyyalagan Chandrasekaran (Admin for DotLoop Final Review) viewed document
<activity action=\"contracteditor\" viewId=\"404271\" documentId=\"560621\">Buyers Sign
here<\/activity>",
"activityDate": "2014-08-19T18:44:52-04:00"
},
{
"message": "Mike Kiburz viewed document <activity action=\"contract-editor\"
Contacts
List of contacts associated with an user
URL
www.dotloop.com/my/api/v1_0/profile/{profileId}/person
Method
GET
Parameters
batchNumber query Increment the batch number to page through results. The default is 1.
batchSize query Number of records to return. The maximum value is 100 and default value is 20
Sample Response
[
{
"personId": 3623822,
"firstName": "Test FirstName",
"lastName": "Test LastName",
"email": "FirstLast@test.com"
},
{
"personId": 3603862,
"firstName": "Test Name",
"lastName": "Test Name",
"email": "abc@test.com"
}
]
Contact Details
Get contact details
URL
www.dotloop.com/my/api/v1_0/profile/{profileId}/person/{contactId}
Method
GET
Parameters
Sample Response
[
{
"personId": 3603862,
"firstName": "Brian",
"lastName": "Erwin",
"email": "brianerwin@newkyhome.com",
"homephone": "2138936332",
"officephone": "1121213656",
"streetAddress01": "2100 Waterview dr",
"city": "Richardson",
"zipOrPostalCode": "75081",
"fax": "1118655686",
"stateOrProv": "TX"
}
]
Profile Admins
List of admins associated with profile
URL
www.dotloop.com/my/api/v1_0/profile/{profileId}/admin
Method
GET
Parameters
batchNumber query Increment the batch number to page through results. The default is 1.
batchSize query Number of records to return. The maximum value and default value is 50
Sample Response
[
{
"memberId": 2629538,
"emailAddress": "listingAgent@emailaddress.com",
"firstName": "TestFirstName1",
"lastName": "TestLastName1",
"status": "ACTIVE",
"isAdmin": "true"
},
{
"memberId": 2570270,
"emailAddress": "sellingAgent@emailaddress.com",
"firstName": "TestFirstName2",
"lastName": "TestLastName2",
"status": "ENROLLED",
"isAdmin": "true"
}
]