Introduction
Welcome to the LossExpress Vendor API! This API is designed for use by varying third-party vendors that wish to trigger processing events within LossExpress and view the results of those events, on behalf of insurance carriers.
When going through the integration process with your organization’s systems and LossExpress, it’s important to keep in mind the idea at the core of the LossExpress product and underlying APIs: we act simply as a conduit of information, from carriers to lenders.
As a result, we have done our best when building out this API to give the power to make decisions to the carrier (where that power belongs), not ourselves, and recommend that our vendors do their best to leave decisioning to the carriers whenever possible.
Testing
Upon receiving authentication credentials, vendors are initially put into a testing phase. This is a sandbox environment where you can create and manipulate claims - and make mistakes - without affecting production data or processes. Once testing has been thoroughly completed, let us know and we will take you out of the testing phase.
Test VINs
During testing, you can create claims with these VINs to trigger actions which emulate ones that LossExpress or lenders may make for a claim.
VIN | Action |
---|---|
JHMGE8H35DC074448 | LossExpress sends a direct message for the claim |
JHMGE8H35DC075558 | Payoff information is attached to the claim |
JHMGE8H35DC076668 | Loss Express updates the claim's information |
1GCHC29U62E142306 | Loss Express calls the claim's lender |
1GCHC29U62E147776 | Loss Express attaches a document to the claim |
JHMFA36246S006140 | LossExpress sends a document to the claim's lender |
JN1CV6AP7CM621670 | A letter of guarantee is attached to the claim |
1FAHP3EN7BW114135 | The lender countered for the settlement |
Authentication
Our Vendor API utilizes a standard OAuth 2.0 Client Credentials flow, where the external server authenticates itself using a provided client ID and client secret and is provided an access token that will be used on every request.
Once a token has been received, every request is expected to have a header that looks like the following:
Authorization: Bearer exampletokenbutreplacewithyourown
HTTP Request
POST https://xapi.lossexpress.com/oauth/token
This route is for generating OAuth tokens that can be used for all other requests.
Request Body
This route accepts a JSON payload of an object comprising of:
Body Parameter | Description |
---|---|
clientId | Your unique identifier in Loss Express systems |
secret | An OAuth secret provided by Loss Express |
Activities
LossExpress provides a simple way to view events that have taken place within our system, relevant to an organization’s claims. We currently allow for two different methods for keeping up with the activities that can occur on a claim within LossExpress: fetching via our Activity Feed route and directly receiving via our supported webhook.
As a general rule, all Activity objects include the following keys:
Key | Description |
---|---|
createdAt | GMT timestamp marking when the Activity occured in our system |
claimId | The LossExpress UUID given to the claim the Activity occurred on |
type | A string containing one of the available Activity Types |
claimNumber | The claim number entered for the claim the Activity occurred on |
data | An object containing relevant information for the Activity |
activityId | A GUID uniquely identifying the activity |
Fetch Activities (Activity Feed)
This route returns a paginated set of results that looks like this:
{
"requestUrl": "https://xapi.lossexpress.com/activities?createdBefore=2021-01-08T22:03:09.598Z",
"results": [
...array of activity objects
],
"pagination": {
"pageSize": 100,
"page": 0,
"totalPages": 3,
"totalResults": 296
}
}
Note that the result will return a
requestUrl
object, which will allow you to perfectly replay the request.
Our Activity Feed provides access to all scoped activities while allowing for a large variety of filtering options to suit any organization’s needs. One of our core tenants at LossExpress is transparency, so you may find that we provide access to too many activities. Feel free to use only what’s important to your organization!
This route will allow you to view Activities.
HTTP Request
GET https://xapi.lossexpress.com/activities
Query Parameters
Parameter | Default | Description |
---|---|---|
types | all | A comma separated list of types to view |
createdBefore | current time | Allows for filtering activities to only those that were created before a certain timestamp |
createdAfter | 30 minutes earlier | Allows for filtering activities to only those that were created after a certain timestamp |
pageSize | 100 | Sets the size of pages in paginated results. Maximum is currently 500. |
pageNumber | 0 | Sets the zero-indexed page number in paginated results. |
claimId | Filters the activities to only contain activities for the specific LossExpress Claim ID. | |
activityId | Show activity types starting from the activity and moving into the future. |
Note
You can only supply activityId
or createdBefore
in a request, not both.
Trigger Activities (Testing)
This route enables you to trigger a variety of activities that would typically be triggered by actions taken by our claim fulfillment specialists.
HTTP Request
POST https://xapi.lossexpress.com/activities/trigger-activity/{claimId}?activityType={activityType}
Query Parameters
Parameter | Description |
---|---|
activityType | Must be one of: 'direct-message-added', 'document-sent-to-lender', 'letter-of-guarantee-added', 'payoff-data-added', 'claim-updated', 'call-made', 'document-added', 'settlement-counter-added', 'payoff-request-cancelled' |
Activity Feed Webhook
If you wish to be notified when activities occur for your claims, we offer real-time notifications via a webhook. After registering your URL, it will start receiving POST requests whenever activities get generated in our system.
Validating Webhook Payloads
Example HMAC header validation
const crypto = require('crypto');
const apiKey = 'your API key';
const clientId = 'your client ID';
const hmacHeader = request.headers["X-LossExpress-Signature"];
const body = request.payload;
const message = `${JSON.stringify(body)}:${clientId}`;
const generatedHmac = crypto.createHmac('sha256', apiKey)
.update(message)
.digest('hex');
if (generatedHmac === hmacHeader) {
// Webhook is valid!
}
To help you verify that webhook requests are valid and come from us, we provide the following:
- A
X-LossExpress-Signature
header on every request, which contains an HMAC hash for a string with the structure:{{ webhook payload }}:{{ clientId }}
- An API key that can be used, along with the request payload and your xAPI client ID, to recreate the HMAC
By recreating the HMAC hash and comparing it with the request's X-LossExpress-Signature
header, you can determine whether the request was generated using the secret API key. As long as you keep the API key secret, matching HMACs indicate that the request is valid and comes from our system.
Register Webhook
This endpoint can be used to set your webhook's URL. A test payload (a direct-message-added activity) will be sent to the provided URL, and a response with a 200 status code is expected.
This endpoint also generates an API key secret that can be used to validate incoming payloads. A new API key is generated whenever this endpoint is used, and it can be retrieved anytime via the Fetch Webhook Information endpoint.
HTTP Request
POST https://xapi.lossexpress.com/activities/webhook
Key | Description |
---|---|
endpoint | The URL that will receive your activity feed data. |
types | Allows you to subscribe to and only be sent specific activity types. This optional parameter accepts either the string "all" or an array of activity type strings. |
If your endpoint returns a status code of 200, this route returns a success object that looks like this:
{
"success": true,
"statusCode": 200,
}
Note that the result will return a
success: false
object, if your endpoint does not yield a 200.
Fetch Webhook Information
For fetching information about your webhook status, current endpoint, and API key.
HTTP Request
GET https://xapi.lossexpress.com/activities/webhook-info
This route returns an object with your webhook information that looks like this:
{
"success": true,
"webhookInfo": {
"endpoint": "https://yourendpointthatreturnsa200.com",
"verified": true,
"apiKey": "exampleapikey1234",
"activityTypeSubscriptions": [ "order-status-changed", "direct-message-added", "claim-updated" ]
}
}
Deactivate Webhook
For deactivating your current webhook, this will not delete your entry and you can turn your webhook back on by using the POST route in the 'Register Webhook' section.
HTTP Request
PUT https://xapi.lossexpress.com/carriers/deactivate-webhook
Activity Types
List of Types
Below is a list of Activity Types that will be available within the Activity Feed:
Type | Will appear when... | Triggered by |
---|---|---|
account-number-viewed | Account number is viewed | LossExpress |
call-made | A call is made by LossExpress | LossExpress |
claim-created | A claim is originally created | Carrier |
claim-updated | A claim's primary information is updated | Carrier/LossExpress |
direct-message-added | A direct message is added to a claim | Carrier/LossExpress |
document-added | A document is added to a claim | Carrier/LossExpress |
document-sent-to-lender | A document is sent to a lender | LossExpress |
letter-of-guarantee-added | A letter of guarantee is added to a claim | LossExpress |
letter-of-guarantee-request-created | A letter of guarantee request is created on a claim | Carrier |
letter-of-guarantee-request-cancelled | A letter of guarantee request on a claim has been cancelled | Carrier/LossExpress |
lender-alias-verified | A lender has been verified as an alias of an existing lender | LossExpress |
new-lender-verified | A lender has been verified as a new lender to our system | LossExpress |
order-attempted | An attempt to fulfill an order has been added to claim | LossExpress |
order-created | A new order has been added to a claim | Carrier |
order-cancelled | An order on a claim has been cancelled | Carrier/LossExpress |
order-fulfilled | An order on a claim has been successfully fulfilled | LossExpress |
order-status-changed | The status for an order has changed | LossExpress |
order-updated | An order on a claim has been updated | LossExpress |
payment-sent | Payment has been sent for a claim | Carrier |
payoff-data-added | Payoff information is added to a claim | LossExpress |
payoff-request-created | A payoff request is created on a claim | Carrier |
payoff-request-cancelled | A payoff request on a claim has been cancelled | Carrier/LossExpress |
request-pending-lender-contacted | The lender has been contacted on behalf of the carrier | LossExpress |
settlement-counter-added | A lender adds a counter to the proposed settlement amount | LossExpress |
settlement-counter-updated | The settlement counter is either accepted or disputed by the carrier | Carrier |
account-number-viewed
account-number-viewed example object
{
"activityId": "fed62fa0-c048-46b5-b994-6e3e69fb0f37",
"createdAt": "2021-01-08T22:03:09.598Z",
"claimId": "c30ae9da-9222-4de5-81fe-fe1ac590fa0f",
"type": "account-number-viewed",
"claimNumber": "EXAMPLE1",
"externalId": "COO-30022",
"data": {
"viewedByLossExpress": true
}
}
This activity type will appear in the feed whenever an account number is viewed by someone on LossExpress.
call-made
call-made example object
{
"activityId": "fed62fa0-c048-46b5-b994-6e3e69fb0f37",
"createdAt": "2021-01-08T22:03:09.598Z",
"claimId": "c30ae9da-9222-4de5-81fe-fe1ac590fa0f",
"type": "call-made",
"claimNumber": "EXAMPLE2",
"externalId": "COO-30022",
"data": {
"callLength": 30 // in minutes
}
}
This activity type will appear in the feed whenever a call was made on behalf of the carrier by LossExpress.
claim-created
claim-created example object
{
"activityId": "fed62fa0-c048-46b5-b994-6e3e69fb0f37",
"createdAt": "2021-01-08T22:03:09.598Z",
"claimId": "c30ae9da-9222-4de5-81fe-fe1ac590fa0f",
"type": "claim-created",
"claimNumber": "EXAMPLE3",
"externalId": "COO-30022",
"data": {
"accountNumber": "TEST-AN",
"adjusterName": "Mike Mclaren",
"adjusterEmailAddress": "mike@lossexpress.com",
"adjusterPhoneNumber": "+13332225555",
"causeOfLoss": "Fire",
"dateOfLoss": "2020-10-20",
"deductible": 400,
"financeType": "Retail",
"insurerType": "First Party",
"lenderName": "Test Lender",
"lenderId": "c30ae9da-9222-4de5-81fe-fe1ac590fa0f",
"odometer": 39993,
"ownersName": "Test Owner",
"ownersPhoneNumber": "+12223334444",
"ownerRetained": false,
"ownersStreetAddress": "12200 Test Avenue Dallas TX 75204",
"settlementAmount": 5553,
"titleRemittanceAddress": "1000 Main Street Dallas TX 75204",
"vehicle": {
"make": "TEST",
"model": "Car",
"year": 2034
},
"vehicleLocation": "1200 Main Street Dallas TX 75204",
"vin": "1N4AL3AP8JC231503"
}
}
This activity type will appear in the feed whenever a claim is created in our system by a carrier. This activity will contain in its data all claim information that had
been passed on create along with Make/Model/Year information for the VIN passed, if available. Any information not sent on creation will not appear in the data object and
would appear as undefined
when parsed.
If desired, we do give carriers the ability to not have account numbers added to this event type for security purposes.
claim-updated
claim-updated example object
{
"activityId": "fed62fa0-c048-46b5-b994-6e3e69fb0f37",
"createdAt": "2021-01-08T22:03:09.598Z",
"claimId": "c30ae9da-9222-4de5-81fe-fe1ac590fa0f",
"type": "claim-updated",
"claimNumber": "EXAMPLE3",
"externalId": "COO-30022",
"data": {
"update": { // contains the updated information
"accountNumber": "TEST-AN1"
},
"previous": { // contains the information just prior to update
"accountNumber": "TEST-AN"
},
"updatedByLossExpress": true
}
}
This activity type will appear in the feed whenever primary claim information is updated. In LossExpress, we define primary claim information as any piece of data that can be sent in the update or create claim routes. Updated claim data may include any claim parameters.
Note that this activity type could be triggered by actions made by LossExpress. Some examples that could cause LossExpress to trigger this activity type:
- Account number was empty or incorrect, so was updated when talking to the lender.
- Finance type was set to Retail but was actually a Lease.
- Lender name was incorrect or updated.
direct-message-added
direct-message-added example object (sent by LossExpress)
{
"activityId": "fed62fa0-c048-46b5-b994-6e3e69fb0f37",
"createdAt": "2021-01-08T22:03:09.598Z",
"claimId": "c30ae9da-9222-4de5-81fe-fe1ac590fa0f",
"type": "direct-message-added",
"claimNumber": "EXAMPLE3",
"externalId": "COO-30022",
"data": {
"sentByLossExpress": true,
"message": "A photo of the odometer reading is required.",
"category": "ADDITIONAL INFORMATION REQUIRED (NON-DISPUTE)",
"actionRequired": true
}
direct-message-added example object (sent by carrier user)
{
"activityId": "fed62fa0-c048-46b5-b994-6e3e69fb0f37",
"createdAt": "2021-01-08T22:03:09.598Z",
"claimId": "c30ae9da-9222-4de5-81fe-fe1ac590fa0f",
"type": "direct-message-added",
"claimNumber": "EXAMPLE3",
"externalId": "COO-30022",
"data": {
"sentByLossExpress": false,
"message": "The LoG looks to have the wrong settlement amount, please get an LoG with the proper amount. Thanks!",
"sentBy": "User Name",
"actionRequired": false
}
}
direct-message-added example object (Including the orders array)
{
"activityId": "19c2c62f-0437-5657-b745-09e73b878bd3",
"claimId": "39a7617f-296f-44e3-a080-32e95cdf7d27",
"claimNumber": "DMtest30",
"createdAt": "2022-05-10T21:11:55.153Z",
"data": {
"sentByLossExpress": true,
"message": "Attention Needed: A loan/lease account is unable to be located with the account information provided. Confirmation of account information, specifically the account number, will need to be provided in order for a Copy of Title, Letter of Guarantee to continue to be processed. If the account number is confirmed as being the same as previously provided, the loan/lease account may be at a different financial institution.",
"category": "OTHER",
"actionRequired": true,
"orders": [
{
"orderType": "Copy of Title",
"orderId": "618bf9ac-ed18-4d19-9861-ef387bd390a4"
},
{
"orderType": "Letter of Guarantee",
"orderId": "47b521f0-7e82-41b7-b9e2-79e120f72588"
}
]
},
"externalId": "306126",
"type": "direct-message-added"
},
This activity type will appear in the feed whenever a direct message is added to a claim, either by LossExpress or by a carrier user.
When a direct message is sent from LossExpress, you can expect to see a category
value passed in the activity data. The following values are currently supported:
Category |
---|
TITLE |
ADDITIONAL INFORMATION REQUIRED (NON-DISPUTE) |
SETTLEMENT DISPUTE |
OWNER RETAINED SETTLEMENT |
BANKRUPTCY |
CUSTOMER AUTHORIZATION |
GENERAL |
OTHER |
For DM activities where actionRequired: true
, an orders
array will be included in the data object containing the orderType
and orderId
of the corresponding orders. If actionRequired: false
, there will not be an orders array.
document-added
document-added example object
{
"activityId": "fed62fa0-c048-46b5-b994-6e3e69fb0f37",
"createdAt": "2021-01-08T22:03:09.598Z",
"claimId": "c30ae9da-9222-4de5-81fe-fe1ac590fa0f",
"type": "document-added",
"claimNumber": "EXAMPLE3",
"externalId": "COO-30022",
"data": {
"type": "settlement breakdown",
"documentUrl": "https://xapi.lossexpress.com/documents/555ae9da-9222-4de5-81fe-fe1ac590fa0f",
"sentByLossExpress": false,
"sentBy": "John Doe"
}
}
This activity type will appear in the feed whenever a document has been added to a claim.
Note that when sentByLossexpress
is true, this indicates that the document was attached to the claim by LossExpress, not a carrier user, and sentBy
will be null.
document-sent-to-lender
document-sent-to-lender example object
{
"activityId": "fed62fa0-c048-46b5-b994-6e3e69fb0f37",
"createdAt": "2021-01-08T22:03:09.598Z",
"claimId": "c30ae9da-9222-4de5-81fe-fe1ac590fa0f",
"type": "document-sent-to-lender",
"claimNumber": "EXAMPLE3",
"externalId": "COO-30022",
"data": {
"documentUrl": "https://xapi.lossexpress.com/documents/555ae9da-9222-4de5-81fe-fe1ac590fa0f"
}
}
This activity type is added to the feed whenever a document is sent by LossExpress to the lender for a particular claim. The documentUrl
contains a link to the document that was sent to the lender.
letter-of-guarantee-added
letter-of-guarantee-added example object
{
"activityId": "fed62fa0-c048-46b5-b994-6e3e69fb0f37",
"createdAt": "2021-01-08T22:03:09.598Z",
"claimId": "c30ae9da-9222-4de5-81fe-fe1ac590fa0f",
"type": "letter-of-guarantee-added",
"claimNumber": "EXAMPLE3",
"externalId": "COO-30022",
"data": {
"documentUrl": "https://xapi.lossexpress.com/documents/555ae9da-9222-4de5-81fe-fe1ac590fa0f",
"xLoG": true
}
}
This activity type is added to the feed whenever a letter of guarantee is added to a claim. The documentUrl
contains a link to the letter of guarantee that was received. When a customer has requested additional information on whether the document is an xLOG or not, the "xLoG" boolean field will be added to the result.
letter-of-guarantee-request-created
letter-of-guarantee-request-created example object
{
"activityId": "fed62fa0-c048-46b5-b994-6e3e69fb0f37",
"createdAt": "2021-01-08T22:03:09.598Z",
"claimId": "c30ae9da-9222-4de5-81fe-fe1ac590fa0f",
"type": "letter-of-guarantee-request-created",
"claimNumber": "EXAMPLE3",
"externalId": "COO-30022",
"data": {
"estimatedResponseTime": "2021-01-20T22:03:09.598Z"
}
}
This activity type is added to the feed whenever a letter of guarantee request is created for a claim.
Note that although we typically request letters of guarantee whenever we reach out to a lender, we do not follow-up on the status of letters of guarantee nor can we absolutely guarantee that a letter of guarantee will be added to a claim unless a letter of guarantee request is created on a claim.
letter-of-guarantee-request-cancelled
letter-of-guarantee-request-cancelled example object
{
"activityId": "fed62fa0-c048-46b5-b994-6e3e69fb0f37",
"createdAt": "2021-01-08T22:03:09.598Z",
"claimId": "c30ae9da-9222-4de5-81fe-fe1ac590fa0f",
"type": "letter-of-guarantee-request-cancelled",
"claimNumber": "EXAMPLE3",
"externalId": "COO-30022",
"data": {}
}
This activity type is added to the feed whenever a letter of guarantee request is cancelled for a claim.
lender-alias-verified
lender-alias-verified example object
{
"activityId": "fed62fa0-c048-46b5-b994-6e3e69fb0f37",
"createdAt": "2021-01-08T22:03:09.598Z",
"claimId": "c30ae9da-9222-4de5-81fe-fe1ac590fa0f",
"type": "lender-alias-verified",
"claimNumber": "EXAMPLE3",
"externalId": "COO-30022",
"data": {
"previousLenderId": "4ace4d96-2b7f-425e-a3c7-d162879a792b",
"lenderId": "a720ef63-e6f5-4fed-bbf8-0edcd6eb8485",
"lenderName": "EXAMPLE NEW LENDER ALIAS"
}
}
This activity type is added to the feed whenever a lender is verified as an alias for an existing lender.
new-lender-verified
new-lender-verified example object
{
"activityId": "fed62fa0-c048-46b5-b994-6e3e69fb0f37",
"createdAt": "2021-01-08T22:03:09.598Z",
"claimId": "c30ae9da-9222-4de5-81fe-fe1ac590fa0f",
"type": "new-lender-verified",
"claimNumber": "EXAMPLE3",
"externalId": "COO-30022",
"data": {
"lenderId": "a720ef63-e6f5-4fed-bbf8-0edcd6eb8485",
"lenderName": "EXAMPLE NEW LENDER"
}
}
This activity type is added to the feed whenever a lender is verified as a new lender to our system.
order-attempted
order-attempted example object
{
"activityId": "fed62fa0-c048-46b5-b994-6e3e69fb0f37",
"createdAt": "2021-01-08T22:03:09.598Z",
"claimId": "c30ae9da-9222-4de5-81fe-fe1ac590fa0f",
"type": "order-attempted",
"claimNumber": "EXAMPLE3",
"externalId": "COO-30022",
"data": {
"type": "Payment History",
"message": "Lender unable to find requested document",
"count": 2,
"orderId": "93f0983d-5702-4bf4-9728-86d425edd7d5"
}
}
This activity type is added to the feed whenever an attempt on an order is made.
Key | Value |
---|---|
type | The type of order |
message | The note related to the order attempt |
count | The current number of attempts on the order |
orderId | The specific identification number for the order that was attempted |
order-created
order-created example object
{
"activityId": "fed62fa0-c048-46b5-b994-6e3e69fb0f37",
"createdAt": "2021-01-08T22:03:09.598Z",
"claimId": "c30ae9da-9222-4de5-81fe-fe1ac590fa0f",
"type": "order-created",
"claimNumber": "EXAMPLE3",
"externalId": "COO-30022",
"data": {
"orderId": "24907dea-2bd2-4547-bae6-8305b4256256",
"orderType": "Copy of Title"
}
}
This activity type is added to the feed whenever an order is created for a claim.
order-cancelled
order-cancelled example object
{
"activityId": "fed62fa0-c048-46b5-b994-6e3e69fb0f37",
"createdAt": "2021-01-08T22:03:09.598Z",
"claimId": "c30ae9da-9222-4de5-81fe-fe1ac590fa0f",
"type": "order-cancelled",
"claimNumber": "EXAMPLE3",
"externalId": "COO-30022",
"data": {
"orderId": "24907dea-2bd2-4547-bae6-8305b4256256"
}
}
This activity type is added to the feed whenever an order is cancelled for a claim.
order-fulfilled
order-fulfilled example object
{
"activityId": "fed62fa0-c048-46b5-b994-6e3e69fb0f37",
"createdAt": "2021-01-08T22:03:09.598Z",
"claimId": "c30ae9da-9222-4de5-81fe-fe1ac590fa0f",
"type": "order-fulfilled",
"claimNumber": "EXAMPLE3",
"data": {
"orderId": "24907dea-2bd2-4547-bae6-8305b4256256",
"orderType": "Copy of Title",
"documentUrl": "https://xapi.lossexpress.com/documents/555ae9da-9222-4de5-81fe-fe1ac590fa0f"
}
}
This activity type is added to the feed whenever an order is fulfilled for a claim. If the order utilizes a document, it can be accessed via the documentUrl
.
order-status-changed
order-status-changed example object
{
"activityId": "fed62fa0-c048-46b5-b994-6e3e69fb0f37",
"createdAt": "2021-01-08T22:03:09.598Z",
"claimId": "c30ae9da-9222-4de5-81fe-fe1ac590fa0f",
"type": "order-status-changed"
"claimNumber": "EXAMPLE3",
"externalId": "COO-30022",
"data": {
"updatedOrder": {
"orderId": "8ebc4790-a0cb-40f8-bff7-140b9f0260cc",
"orderType": "Letter of Guarantee",
"status": "fulfilled",
"documentUrl": "https://xapi-dev.lossexpress.com/documents/fb498779-7464-469f-bb3b-a6d647cf7541"
},
"orders": [
{
"orderId": "bce319ea-11f2-4965-821d-c36bca62b506",
"orderType": "Copy of Title",
"status": "pending",
},
{
"orderId": "8ebc4790-a0cb-40f8-bff7-140b9f0260cc",
"orderType": "Letter of Guarantee",
"status": "fulfilled",
"documentUrl": "https://xapi.lossexpress.com/documents/fb498779-7464-469f-bb3b-a6d647cf7541"
},
{
"orderId": "c60fe8f7-653a-47a6-acaa-e23f46a603bb",
"orderType": "Loan Payoff Request",
"status": "fulfilled",
"documentUrl": "https://xapi.lossexpress.com/documents/d48e2ff8-cb79-49fd-ad6c-f5a35e5525cf"
"fulfillmentData": {
"payoffAmount": 99999,
"perDiem": 10,
"validThroughDate": "2022-04-01T21:28:40.256Z",
"remittanceInformation": {
"standard": {
"attn": "That Person",
"streetAddress": "77 E No St",
"city": "No",
"state": "CO",
"zipCode": "90000",
"makeCheckPayableTo": "Some Entity"
},
"overnight": {
"streetAddress": "55 Address Place",
"city": "City",
"state": "CA",
"zipCode": "10011",
"streetAddress2": "2",
"makeCheckPayableTo": "Some Entity"
}
}
},
}
]
},
}
This activity type is added to the feed whenever the status for an order is changed (typically to fulfilled
or cancelled
).
The actvity data includes an updatedOrder
object for the order who's status was changed, as well as an orders
array that includes all of the claim's orders. The orders
array allows you to compare a claim's order statuses and data as they existed at the moment the activity was generated.
Each order object, whether the updatedOrder
or those in the orders
array will have the following structure:
Key | Description | Will be included when... |
---|---|---|
orderId | The LossExpress UUID for the order | Always |
orderType | The order's type | Always |
status | pending , fulfilled , or cancelled |
Always |
documentUrl | A URL that can be used to fetch a document attached to an order | A document was attached to the order during fulfillment |
fulfillmentData | Data pertaining to the order's fulfillment | Various data was gathered in order to fulfill the order |
order-updated
order-updated example object
{
"activityId": "fed62fa0-c048-46b5-b994-6e3e69fb0f37",
"createdAt": "2021-01-08T22:03:09.598Z",
"claimId": "c30ae9da-9222-4de5-81fe-fe1ac590fa0f",
"type": "order-updated",
"claimNumber": "EXAMPLE3",
"externalId": "COO-30022",
"data": {
"orderId": "24907dea-2bd2-4547-bae6-8305b4256256",
"nextFollowupDate": "2021-08-31"
}
}
This activity type is added to the feed whenever an order is updated for a claim.
payment-sent
payment-sent example object
{
"activityId": "fed62fa0-c048-46b5-b994-6e3e69fb0f37",
"createdAt": "2021-01-08T22:03:09.598Z",
"claimId": "c30ae9da-9222-4de5-81fe-fe1ac590fa0f",
"type": "payment-sent",
"claimNumber": "EXAMPLE3",
"externalId": "COO-30022",
"data": {
"checkAmount": 20000,
"sentAt": "2021-01-08T22:03:09.598Z",
"sentTo": {
"streetAddress": "1000 Main Street",
"streetAddress2": "Ste. 500",
"city": "Dallas",
"state": "TX",
"zipCode": "75204"
},
"sentVia": "USPS",
"trackingNumber": "EXAMPLENUMBER"
}
}
This activity type is added to the feed whenever acknowledgement that payment has been sent has been added to LossExpress; this can be trigged by either the carrier or our payment processing partner, if that partner is enabled in the carrier's system and set-up properly in LossExpress.
payoff-data-added
payoff-data-added example object
{
"activityId": "fed62fa0-c048-46b5-b994-6e3e69fb0f37",
"createdAt": "2021-01-08T22:03:09.598Z",
"claimId": "c30ae9da-9222-4de5-81fe-fe1ac590fa0f",
"type": "payoff-data-added",
"claimNumber": "EXAMPLE3",
"externalId": "COO-30022",
"data": {
"payoffAmount": 10222.33,
"perDiem": 2.3,
"validThroughDate": "2021-01-18T00:00:00.000Z",
"remittanceInformation": {
"standard": {
"makeCheckPayableTo": "ALLY FINANCIAL",
"attn": "ATTN LINE",
"streetAddress": "1000 Main Street",
"streetAddress2": "Ste. 500",
"city": "Dallas",
"state": "TX",
"zipCode": "75204"
},
"overnight": {
"makeCheckPayableTo": "ALLY FINANCIAL",
"attn": "ATTN LINE",
"streetAddress": "1000 Main Street",
"streetAddress2": "Ste. 500",
"city": "Dallas",
"state": "TX",
"zipCode": "75204"
}
},
"documentUrl": "https://xapi.lossexpress.com/documents/555ae9da-9222-4de5-81fe-fe1ac590fa0f"
}
}
This activity type is added to the feed whenever payoff data is added to a claim.
payoff-request-created
payoff-request-created example object
{
"activityId": "fed62fa0-c048-46b5-b994-6e3e69fb0f37",
"createdAt": "2021-01-08T22:03:09.598Z",
"claimId": "c30ae9da-9222-4de5-81fe-fe1ac590fa0f",
"type": "payoff-request-created",
"claimNumber": "EXAMPLE3",
"externalId": "COO-30022",
"data": {}
}
This activity type is added to the feed whenever a payoff request is created on a particular claim.
payoff-request-cancelled
payoff-request-cancelled example object
{
"activityId": "fed62fa0-c048-46b5-b994-6e3e69fb0f37",
"createdAt": "2021-01-08T22:03:09.598Z",
"claimId": "c30ae9da-9222-4de5-81fe-fe1ac590fa0f",
"type": "payoff-request-cancelled",
"claimNumber": "EXAMPLE3",
"externalId": "COO-30022",
"data": {}
}
This activity type is added to the feed whenever a payoff request is cancelled on a particular claim.
request-pending-lender-contacted
request-pending-lender-contacted example object
{
"activityId": "fed62fa0-c048-46b5-b994-6e3e69fb0f37",
"createdAt": "2021-01-08T22:03:09.598Z",
"claimId": "c30ae9da-9222-4de5-81fe-fe1ac590fa0f",
"type": "request-pending-lender-contacted",
"claimNumber": "EXAMPLE2",
"data": {}
}
This activity type will appear in the feed whenever a lender is contacted by LossExpress on behalf of the carrier.
settlement-counter-added
settlement-counter-added example object
{
"activityId": "fed62fa0-c048-46b5-b994-6e3e69fb0f37",
"createdAt": "2021-01-08T22:03:09.598Z",
"claimId": "c30ae9da-9222-4de5-81fe-fe1ac590fa0f",
"type": "settlement-counter-added",
"claimNumber": "EXAMPLE3",
"data": {
"description": "missing options",
"documentUrl": "https://xapi.lossexpress.com/documents/555ae9da-9222-4de5-81fe-fe1ac590fa0f"
}
}
This activity type is added to the feed whenever a settlement counter is added to a claim by a lender. Typically, this comes with a document that can be accessed via the documentUrl
.
settlement-counter-updated
settlement-counter-updated example object (dispute)
{
"activityId": "fed62fa0-c048-46b5-b994-6e3e69fb0f37",
"createdAt": "2021-01-08T22:03:09.598Z",
"claimId": "c30ae9da-9222-4de5-81fe-fe1ac590fa0f",
"type": "settlement-counter-updated",
"claimNumber": "EXAMPLE3",
"externalId": "COO-30022",
"data": {
"disputed": true,
"reasonForDispute": "Vehicle is not missing any options, verified in person."
}
}
settlement-counter-updated example object (accepted)
{
"activityId": "fed62fa0-c048-46b5-b994-6e3e69fb0f37",
"createdAt": "2021-01-08T22:03:09.598Z",
"claimId": "c30ae9da-9222-4de5-81fe-fe1ac590fa0f",
"type": "settlement-counter-updated",
"claimNumber": "EXAMPLE3",
"externalId": "COO-30022",
"data": {
"disputed": false,
"documentUrl": "https://xapi.lossexpress.com/documents/555ae9da-9222-4de5-81fe-fe1ac590fa0f"
}
}
This activity type is added to the feed whenever a settlement counter is either accepted or disputed by the carrier. documentUrl
will contain a link to the settlment breakdown passed to the lender with the new settlement amount.
Carriers
In order to create a claim using the LossExpress API, all vendors must pass in a LossExpress UUID associated with that carrier in our system. You can manage carriers in our system using the routes in this section.
Create Carrier
Example Response:
{
"carrierId": "150ae9da-9222-4ca5-43fe-fe1dc650fa0f"
}
This route allows vendors to create a carrier in our system and associate it with their account.
HTTP Request
POST https://xapi.lossexpress.com/carriers
Request Body
This route accepts a JSON payload of an object comprising of:
Body Parameter | Description | Required? |
---|---|---|
businessName | The name the carrier places on documentation related to claims | Y |
View Carriers
Example Response:
{
"carriers": [
{
"carrierId": "150ae9da-9222-4ca5-43fe-fe1dc650fa0f",
"carrierName": "LossExpress Test Carrier"
}
]
}
HTTP Request
GET https://xapi.lossexpress.com/carriers
Claims
Example Claim Object
{
"accountNumber": "TEST-AN",
"adjusterName": "Mike Mclaren",
"adjusterEmailAddress": "mike@lossexpress.com",
"adjusterPhoneNumber": "+13332225555",
"causeOfLoss": "Fire",
"carrierId": "150ae9da-9222-4ca5-43fe-fe1dc650fa0f",
"claimId": "c30ae9da-9222-4de5-81fe-fe1ac590fa0f",
"claimNumber": "EXAMPLE3",
"createdAt": "2021-01-08T22:03:09.598Z",
"dateOfLoss": "2020-10-20",
"deductible": 400,
"documents": [
{
"createdAt": "2021-01-08T22:03:09.598Z",
"updatedAt": "2021-01-08T22:03:09.598Z",
"documentUrl": "https://xapi.lossexpress.com/documents/555ae9da-9222-4de5-81fe-fe1ac590fa0f",
"type": "settlement breakdown & valuation report"
}
],
"externalId": "COO-30022",
"financeType": "Retail",
"insurerType": "First Party",
"lenderName": "Test Lender",
"lenderId": "c30ae9da-9222-4de5-81fe-fe1ac590fa0f",
"letterOfGuaranteeRequest": {
"createdAt": "2021-01-08T22:03:09.598Z",
"updatedAt": "2021-01-08T22:03:09.598Z",
"documentUrl": "https://xapi.lossexpress.com/documents/555ae9da-9222-4de5-81fe-fe1ac590fa0f",
},
"odometer": 39993,
"ownersName": "Test Owner",
"ownersPhoneNumber": "+12223334444",
"ownerRetained": false,
"ownersStreetAddress": "12200 Test Avenue Dallas TX 75204",
"payoffData": {
"createdAt": "2021-01-08T22:03:09.598Z",
"updatedAt": "2021-01-08T22:03:09.598Z",
"payoffAmount": 10222.33,
"perDiem": 2.3,
"validThroughDate": "2021-01-18T00:00:00.000Z",
"remittanceInformation": {
"standard": {
"makeCheckPayableTo": "ALLY FINANCIAL",
"attn": "ATTN LINE",
"streetAddress": "1000 Main Street",
"streetAddress2": "Ste. 500",
"city": "Dallas",
"state": "TX",
"zipCode": "75204"
},
"overnight": {
"makeCheckPayableTo": "ALLY FINANCIAL",
"attn": "ATTN LINE",
"streetAddress": "1000 Main Street",
"streetAddress2": "Ste. 500",
"city": "Dallas",
"state": "TX",
"zipCode": "75204"
}
}
},
"settlementAmount": 5553,
"titleRemittanceAddress": {
"streetAddress": "1000 Main Street",
"streetAddress2": "Suite 400",
"city": "Dallas",
"state": "TX",
"zipCode": "75204"
},
"titledOwners": [
{
"type": "person",
"name": "Bob Dobbs",
"streetAddress": "1234 Slack St.",
"city": "Dallas",
"state": "TX",
"zipCode": "75217"
}
],
"titledState": "TX",
"titleTransfer": {
"isSalvage": true,
"titleTransferDate": "2021-01-08T22:03:09.598Z",
"titleNumber": "1234567890",
"requestedFormat": "DIGITAL",
"odometerExempt": true,
"odometerExemptReason": "exceeds mechanical limit",
"existingFormat": "PAPER",
"representative": {
"name": "Murray Bookchin",
"title": "Adjuster",
"emailAddress": "bookchin@lossexpress.com",
},
"requestedBrand": "FIRE",
"damages": [ "VANDALISM" ],
},
"updatedAt": "2021-01-08T22:03:09.598Z",
"vehicle": {
"make": "TEST",
"model": "Car",
"year": 2034
},
"vehicleLocation": "1200 Main Street Dallas TX 75204",
"vin": "1N4AL3AP8JC231503"
}
The routes in the section are scoped specifically to claims. Our Vendor API provides a couple ways to search and fetch claim information on top of the ability to create claims.
The Claim object itself contains the following keys:
Object Key | Description |
---|---|
accountNumber | The customer's account number for the loan associated with the claim |
adjusterName | The primary adjuster for the claim |
adjusterEmailAddress | The email address associated with the primary adjuster for the claim |
adjusterPhoneNumber | The phone number associated with the primary adjuster for the claim |
carrierId | The LossExpress UUID associated with the carrier that the claim should be filed under |
causeOfLoss | The cause of loss listed on the claim. These causes can be one of the following: "Single-Vehicle Collision", "Multi-Vehicle Collision", "Collision", "Wind/Hail", "Fire", "Flood", "Vandalism", "Theft", "Water", "Other" |
claimId | The LossExpress UUID associated with the claim |
claimNumber | The claim number as noted by the carrier |
createdAt | The timestamp the claim was created in the system |
dateOfLoss | The date the loss occurred |
deductible | The current deductible for the payoff |
documents | An array of Document objects |
externalId | A string that can contain any identifier desired; not used by LossExpress, but passed on all claim activities for easier handling. There are no unique checks on this field. |
financeType | Either "Retail" or "Lease" |
insurerType | Either "First Party" or "Third Party" |
lenderName | The lender's name |
lenderId | The LossExpress UUID associated with that lender, if that lender exists in our lender database |
letterOfGuaranteeRequest | A letter of guarantee request object, containing basic information about the letter of guarantee request |
odometer | The mileage on the vehicle associated with the claim |
ownersName | The vehicle owner's name |
ownersPhoneNumber | The vehicle owner's phone number |
ownersRetained | Whether the owner is retaining the vehicle (boolean) |
ownersStreetAddress | The full address of the vehicle owner |
payoffData | A Payoff Data object |
settlementAmount | The settlement amount for the claim |
titleRemittanceAddress | The full address that the vehicle title should be sent to |
updatedAt | The timestamp the claim was last updated; this can happen in a number of scenarios and is not recommended to be used to track claim changes - please use the activity feed instead |
vehicle | A vehicle object containing the make, model, and year of the vehicle, if available |
vehicleLocation | The full address where the vehicle is located, if different from the titleRemittanceAddress |
vin | The Vehicle Identification Number for the vehicle on the claim |
Fetch Claim
Example Response:
{
"claim": ...claim object,
"requestUrl": "https://xapi.lossexpress.com/claims/c30ae9da-9222-4de5-81fe-fe1ac590fa0f"
}
This route allows for access to a claim's data in one location.
HTTP Request
GET https://xapi.lossexpress.com/claims/{claimId}
URL Parameters
Parameter | Description |
---|---|
claimId | The LossExpress UUID associated with the claim |
Create Claim
Create Claim Response:
STATUS 201
{
"claimId": "c30ae9da-9222-4de5-81fe-fe1ac590fa0f"
}
This route creates a claim in LossExpress, which can be used to generate requests.
HTTP Request
POST https://xapi.lossexpress.com/claims
Request Body
This route accepts a JSON payload of an object comprising of:
Body Parameter | Description | Required? |
---|---|---|
accountNumber | The customer's account number for the loan associated with the claim | N |
adjusterName | The primary adjuster for the claim | N |
adjusterEmailAddress | The email address associated with the primary adjuster for the claim | N |
adjusterPhoneNumber | The phone number associated with the primary adjuster for the claim | N |
carrierId | The GUID of the carrier associated with the claim | Y |
causeOfLoss | The cause of loss listed on the claim. These causes can be one of the following: "Single-Vehicle Collision", "Multi-Vehicle Collision", "Wind/Hail", "Fire", "Flood", "Vandalism", "Theft", "Other" | N |
claimNumber | The claim number as noted by the carrier | Y |
dateOfLoss | The date the loss occurred | N |
deductible | The current deductible for the payoff | N |
externalId | A string that can contain any identifier desired; not used by LossExpress, but passed on all claim activities for easier handling. There are no unique checks on this field. | N |
financeType | Either "Retail" or "Lease" | Y |
insurerType | Either "First Party" or "Third Party" | N |
lenderName | The lender's name | Y (if lenderId not passed) |
lenderPhoneNumber | The lender's phone number | N |
lenderAddress | The lender's address - an object with keys consisting of streetAddress, streetAddress2 (suite #, etc), city, state, zipCode | N |
lenderId | The LossExpress ID for the lender | Y (if lenderName not passed) |
odometer | The mileage on the vehicle associated with the claim | N |
ownersName | The vehicle owner's name | N |
ownersPhoneNumber | The vehicle owner's phone number | N |
ownersRetained | Whether the owner is retaining the vehicle (boolean) | N |
ownersStreetAddress | The full address of the vehicle owner | N |
settlementAmount | The settlement amount for the claim | N |
titledOwners | An array of objects containing data for each titled owner | N |
titleRemittanceAddress | The full address that the vehicle title should be sent to | N |
titledState | The two-character abbreviation of the state listed on the vehicle's title | N |
titleTransfer | An object containing various data required for title transfer orders | N |
vehicleLocation | The full address where the vehicle is located, if different from the titleRemittanceAddress | N |
vin | The Vehicle Identification Number for the vehicle on the claim | Y |
titledOwners
The titledOwners
parameter must be an array of objects with the following structure:
Parameter | Description | Required? |
---|---|---|
type | Must be one of: 'person', 'dealer', 'company', 'trust' |
Y |
name | The owner's name as listed on the title | Y |
phoneNumber | The owner's phone number | N |
streetAddress | The owner's street address | Y |
streetAddress2 | Address line 2 (apartment number, etc) | N |
city | The owner's city | Y |
state | The 2-character abbreviation for the owner's state | Y |
zipCode | The 5-character zip code for the owner's address | Y |
titleTransfer
The titleTransfer
object can include the following parameters:
Parameter | Description | Required? |
---|---|---|
damages | An array containing vehicle damages. See possible values below. | Y (if isSalvage is true) |
existingFormat | The format of the existing title (must be one of: PAPER, DIGITAL ) |
Y |
isSalvage | A boolean indicating whether the title transfer is for a salvage | Y |
odometerExempt | A boolean indicating whether the vehicle is exempt from mileage disclosure. | Y |
odometerExemptReason | The reason for the mileage disclosure exemption. For example, if the mileage exceeds the odometer's mechanical limit or if the odometer has been tampered with. | Y (if odometerExempt is true) |
odometerReadDate | The date that the odometer value was read | Y (if odometerExempt is false) |
representative | An object containing information about the representative for the acquiring party | Y |
requestedBrand | Branding to be used for the title. See possible values below. | Y (if isSalvage is true) |
requestedFormat | The format that the new title should be issued as (must be one of: PAPER, DIGITAL ) |
Y |
titleNumber | The existing title's number | Y |
titleTransferDate | The date that the title transfer should occur | Y |
titleTransfer.representative
The titleTransfer
object must include the following parameters:
Parameter | Description | Required? |
---|---|---|
name | The representative's name | Y |
title | The representative's title | Y |
emailAddress | The representative's email address | Y |
titleRemittanceAddress
While we accept a single string for titleRemittanceAddress
for most orders, an address object can also be provided. For title transfers in particular, an address object is required.
Parameter | Required? |
---|---|
streetAddress | Y |
streetAddress2 | N |
city | Y |
state | Y |
zipCode | Y |
Update Claim
Update Claim response body:
{
"claimId": "c30ae9da-9222-4de5-81fe-fe1ac590fa0f",
...claim object (with updated claim info)
}
This route allows for updating a claim. It is recommended that you only pass in data that has been changed, as opposed to a full object payload. This is recommended to reduce the size and complexity of claim-updated
activities.
HTTP Request
PUT https://xapi.lossexpress.com/claims/{claimId}
URL Parameters
Parameter | Description |
---|---|
claimId | The LossExpress UUID associated with the claim |
Request Body
This route accepts a JSON payload of an object comprising of:
Body Parameter | Description | Required? |
---|---|---|
accountNumber | The customer's account number for the loan associated with the claim | N |
adjusterName | The primary adjuster for the claim | N |
adjusterEmailAddress | The email address associated with the primary adjuster for the claim | N |
adjusterPhoneNumber | The phone number associated with the primary adjuster for the claim | N |
causeOfLoss | The cause of loss listed on the claim. These causes can be one of the following: "Single-Vehicle Collision", "Multi-Vehicle Collision", "Wind/Hail", "Fire", "Flood", "Vandalism", "Theft", "Other" | N |
claimNumber | The claim number as noted by the carrier | N |
dateOfLoss | The date the loss occurred | N |
deductible | The current deductible for the payoff | N |
externalId | A string that can contain any identifier desired; not used by LossExpress, but passed on all claim activities for easier handling. There are no unique checks on this field. | N |
financeType | Either "Retail" or "Lease" | N |
insurerType | Either "First Party" or "Third Party" | N |
lenderId | The LossExpress UUID for the lender | N |
lenderName | The lender's name | N |
odometer | The mileage on the vehicle associated with the claim | N |
ownersName | The vehicle owner's name | N |
ownersPhoneNumber | The vehicle owner's phone number | N |
ownersRetained | Whether the owner is retaining the vehicle (boolean) | N |
ownersStreetAddress | The full address of the vehicle owner | N |
settlementAmount | The settlement amount for the claim | N |
titledOwners | An array of objects containing data for each titled owner | N |
titleRemittanceAddress | The full address that the vehicle title should be sent to | N |
titledState | The two-character abbreviation of the state listed on the vehicle's title | N |
titleTransfer | An object containing various data required for title transfer orders | N |
vehicleLocation | The full address where the vehicle is located, if different from the titleRemittanceAddress | N |
vin | The Vehicle Identification Number for the vehicle on the claim | N |
Search Claims
Search Claims response body:
Status: 200
{
"claims": [
...claim information
],
}
This route allows for searching our claims database for records. This route can return multiple claims in certain scenarios.
HTTP Request
GET https://xapi.lossexpress.com/claims
Query Parameters
Parameters | Description |
---|---|
vin | Vehicle Identification Number to search by |
claimNumber | Claim number to search by (case insensitive) |
Direct Messages
Create Direct Message
Example Response Body:
{
"claimId": "c30ae9da-9222-4de5-81fe-fe1ac590fa0f",
"message": "Test message."
}
This route allows for sending a direct message to our Claim Specialists.
HTTP Request
POST https://xapi.lossexpress.com/claims/{claimId}/direct-messages
URL Parameters
Parameter | Description |
---|---|
claimId | The LossExpress UUID associated with the claim |
Request Body
This route accepts a JSON payload of an object comprising of:
Body Parameter | Description | Required? |
---|---|---|
message | The direct message to be sent to LossExpress | Y |
Embed Direct Messages
This allows for the above Direct Message functionality to be embedded into an iframe, serving the same experience we currently offer via our interface.
Iframe Link
https://{subdomain}.lossexpress.com/direct-messages/{claimId}/{oauthToken}
URL Parameters
Parameter | Description |
---|---|
subdomain | The subdomain associated with carrier/vendor |
claimId | The LossExpress UUID associated with the claim |
oauthToken | The token received via secret and clientId |
Documents
Document Types
Some documents are required in order to receive a payoff quote. The accepted (case-insensitive) standard document types for a claim are:
Description | Required |
---|---|
settlement breakdown | Y (if carrier configuration does not allow combined documents) |
valuation report | Y (if carrier configuration does not allow combined documents) |
total loss evaluation | Y (if valuation report is not added, and carrier configuration does not allow combined documents) |
valuation report & settlement breakdown | Y (if carrier configuration allows combined documents) |
title image signed | N (required for title transfers) |
lien release signed | N (required for title transfers with liens) |
odometer disclosure signed | N (required for title transfers unless odometer is exempt) |
bill of sale signed | N (required for title transfers) |
cause of loss | N |
cause of loss statement | N |
police report | N |
declaration page | N |
proof of payment | N |
other | N |
Add Document to Claim
Example Response Body:
{
"documentUrl": "https://xapi.lossexpress.com/documents/c30ae9da-9222-4de5-81fe-fe1ac590fa0f",
}
This route allows for adding documents to claims
HTTP Request
POST https://xapi.lossexpress.com/claims/documents/{claimId}
Request Body
This route accepts a JSON payload of an object comprising of:
Parameter | Description |
---|---|
document | A base64-encoded file string. Acceptable formats: pdf , jpeg , jpg , tiff , gif , png |
documentUrl | A url that points to a downloadable file of the above formats |
description | A brief description of the document (eg, Settlement Breakdown) |
Fetch Document
This route allows for fetching documents from our system as PDFs. Any activity that references a document in our system will include a URL for this request.
HTTP Request
GET https://xapi.lossexpress.com/documents/{documentId}
Lenders
Example Lender Object
{
"lenderId": "c30ae9da-9222-4de5-81fe-fe1ac590fa0f",
"lenderName": "Test Lender",
"aliases": [
"Test Lender Bank",
"Bank of Test Lender"
],
"integratedPayoff": true
}
The route in this section is meant to be used for providing a robust search solution for the end users of our vendor partners. We do not currently provide an index containing all of our lenders, as that information is frequently updated and added to.
The Lender object itself contains the following keys:
Object Key | Description |
---|---|
aliases | An array of strings containing common aliases that have been indexed in LossExpress for this lender |
integratedPayoff | true when a lender can return a payoff via integration; false for lenders that are not fully integrated with LossExpress for payoff information |
lenderId | The LossExpress UUID for the lender |
lenderName | The name of the lender in LossExpress |
Search Lenders
Example Search Response:
{
"lenders": [
...lender objects,
],
"requestUrl": "https://xapi.lossexpress.com/lenders?name=Test%20Lender"
}
This route allows for searching LossExpress's lender database for matches. We recommend showing a full list of the lenders returned for selection by the end user, while also allowing users to move forward with the text they've entered, in case there is no exact match.
Lenders with aliases that match the text provided are also returned in this query. We recommend displaying information to the user notifying them that the text they've entered is an alias for another lender in this situation.
If a lender is not found in our database, simply pass the lender name in place of a lenderId
when creating a claim in LossExpress, and our team will add the lender to the database for future requests, if possible.
HTTP Request
GET https://xapi.lossexpress.com/lenders
Query Parameters
Parameter | Description |
---|---|
integratedPayoffOnly | true if only lenders with payoff integrations with LossExpress should be returned |
name | Name being queried against in LossExpress. Must be at least 3 characters long, and must be properly encoded |
customerAuthorizationRequired | Queries the lenders based on whether they are required in customer authorization or not. Must be boolean |
Letter of Guarantee Requests
Create Letter of Guarantee Request
Create Letter of Guarantee Request Example Response Body:
{
"claimId": "c30ae9da-9222-4de5-81fe-fe1ac590fa0f",
"turnAroundTimeEstimate": "2021-01-08T22:03:09.598Z"
}
This route will throw a
400: BAD REQUEST
if it fails due to lack of information on a claim.Create Letter of Guarantee Request Example Error Response:
{
"statusCode": 400,
"error": "Bad Request",
"message": "Claim is missing one or more required documents: 'settlement breakdown' & 'valuation report'"
}
This route will create a letter of guarantee request on a claim. If the customer has manual xLOG requests enabled, you must specify TRUE on the xLogRequested variable for an xLOG to be processed. Null or False will not return an xLOG. Customers without this configuration can ignore this. The letter of guarantee request can be added at any time, but will fail when:
- IF documents with type
settlement breakdown
andvaluation report
are not available (or a document with typesettlement breakdown & valuation report
)
HTTP Request
POST https://xapi.lossexpress.com/claims/{claimId}/letter-of-guarantee-request
When an xLOG is specifically requested:
POST https://xapi.lossexpress.com/claims/{claimId}/letter-of-guarantee-request?xLogRequested=true
URL Parameters
Parameter | Description |
---|---|
claimId | The LossExpress UUID associated with the claim |
Cancel Letter of Guarantee Request
Cancel Letter of Guarantee Request Example Response Body:
{
"claimId": "c30ae9da-9222-4de5-81fe-fe1ac590fa0f",
"success": true
}
This route will throw a
404: NOT FOUND
if a Letter of Guarantee request is not available on the claim.Cancel Letter of Guarantee Request Example Error Response:
{
"statusCode": 404,
"error": "Not Found",
"message": "Letter of Guarantee does not exist for this claim."
}
This route will cancel a letter of guarantee request on a claim. This route will return an error if a letter of guarantee request has not been added on a claim yet.
This route will not return an error if a letter of guarantee request has been previously cancelled or completed.
HTTP Request
DELETE https://xapi.lossexpress.com/claims/{claimId}/letter-of-guarantee-request
URL Parameters
Parameter | Description |
---|---|
claimId | The LossExpress UUID associated with the claim |
Refresh Letter of Guarantee Request
Refresh Letter of Guarantee Request Example Response Body:
{
"claimId": "c30ae9da-9222-4de5-81fe-fe1ac590fa0f",
"turnAroundTimeEstimate": "2021-01-08T22:03:09.598Z"
}
This route will throw a
400: BAD REQUEST
if it fails due to lack of information on a claim.This route will throw a
404: NOT FOUND
if a Letter of Guarantee request is not available on the claim.Refresh Letter of Guarantee Request Example Error Responses:
{
"statusCode": 404,
"error": "Not Found",
"message": "Letter of Guarantee does not exist for this claim."
}
{
"statusCode": 400,
"error": "Bad Request",
"message": "Claim is missing one or more required documents: 'settlement breakdown' & 'valuation report'"
}
This route will refresh an existing letter of guarantee request on a claim, notifying our system that vital information has changed and additional work may be required. The letter of guarantee request can be added at any time, but will fail when:
- IF documents with type
settlement breakdown
andvaluation report
are not available (or a document with typesettlement breakdown & valuation report
) - IF a letter of guarantee request does not exist on a claim
HTTP Request
POST https://xapi.lossexpress.com/claims/{claimId}/letter-of-guarantee-request/refresh
URL Parameters
Parameter | Description |
---|---|
claimId | The LossExpress UUID associated with the claim |
Payoff Requests
Create Payoff Request
Create Payoff Request Example Response Body:
{
"claimId": "c30ae9da-9222-4de5-81fe-fe1ac590fa0f"
}
This route will throw a
400: BAD REQUEST
if the payoff request fails due to missing information on the claim.Create Payoff Request Example Error Response:
{
"statusCode": 400,
"error": "Bad Request",
"message": "Claim is missing one or more required documents: 'settlement breakdown' & 'valuation report'"
}
This route will create a payoff request on a claim. The request will fail when:
- IF documents with type
settlement breakdown
andvaluation report
are not available (or a document with typesettlement breakdown & valuation report
)
HTTP Request
POST https://xapi.lossexpress.com/claims/{claimId}/payoff-request
URL Parameters
Parameter | Description |
---|---|
claimId | The LossExpress UUID associated with the claim |
Cancel Payoff Request
Cancel Payoff Request Example Response Body:
{
"claimId": "c30ae9da-9222-4de5-81fe-fe1ac590fa0f",
"success": true
}
This route will throw a
404: NOT FOUND
if a Payoff request is not available on the claim.Cancel Payoff Request Example Error Response:
{
"statusCode": 404,
"error": "Not Found",
"message": "A payoff request does not exist for this claim."
}
This route will cancel a payoff request on a claim. This route will return an error if a payoff request has not been added on a claim yet.
This route will not return an error if a payoff request has been previously cancelled or completed.
HTTP Request
DELETE https://xapi.lossexpress.com/claims/{claimId}/payoff-request
URL Parameters
Parameter | Description |
---|---|
claimId | The LossExpress UUID associated with the claim |
Refresh Payoff Request
Refresh Payoff Request Example Response Body:
{
"claimId": "c30ae9da-9222-4de5-81fe-fe1ac590fa0f"
}
This route will throw a
400: BAD REQUEST
if the payoff request fails due to missing information on the claim.This route will throw a
404: NOT FOUND
if a payoff request is not available on the claim.Refresh Payoff Request Example Error Responses:
{
"statusCode": 404,
"error": "Not Found",
"message": "A payoff request does not exist for this claim."
}
{
"statusCode": 400,
"error": "Bad Request",
"message": "Claim is missing one or more required documents: 'settlement breakdown' & 'valuation report'"
}
This route will refresh a payoff request on a claim, notifying our system that vital information has changed and additional work may be required. The request will fail when:
- IF documents with type
settlement breakdown
andvaluation report
are not available (or a document with typesettlement breakdown & valuation report
) - IF a payoff request does not exist on the claim
HTTP Request
POST https://xapi.lossexpress.com/claims/{claimId}/payoff-request/refresh
URL Parameters
Parameter | Description |
---|---|
claimId | The LossExpress UUID associated with the claim |
Orders
Fetch Order Types
Fetch Order Types Request Example Response Body
{
"orderTypes": ["...array of current order types"],
"success": true
}
This route returns an array of strings, which consist of the current types of orders that can be requested on a claim.
HTTP Request
GET https://xapi.lossexpress.com/claims/order-types
Create Order(s) Request
Create Order(s) Request Example Response Body:
{
"claimId": "c30ae9da-9222-4de5-81fe-fe1ac590fa0f",
"orders": [
{
"orderId": "3e8c38f3-f4ef-4414-88da-1793d25ef6f0",
"type": "Repo Affidavit"
},
{
"orderId": "77462941-7b6c-4bd0-9749-588c32654864",
"type": "Copy of Title"
}
],
"success": true
}
This route will create a new order on a claim.
HTTP Request
POST https://xapi.lossexpress.com/claims/{claimId}/orders
URL Parameters
Parameter | Description |
---|---|
claimId | The LossExpress UUID associated with the claim |
Request Body
This route accepts a JSON payload of an object comprising of:
Body Parameter | Description | Required? |
---|---|---|
types | An array containing strings with types of orders to be created | Y |
Cancel Order(s) Request
Cancel Order(s) Request Example Response Body:
{
"claimId": "c30ae9da-9222-4de5-81fe-fe1ac590fa0f",
"success": true
}
HTTP Request
DELETE https://xapi.lossexpress.com/claims/{claimId}/cancel-orders
URL Parameters
Parameter | Description |
---|---|
claimId | The LossExpress UUID associated with the claim |
Request Body
This route accepts a JSON payload of an object comprising of:
Body Parameter | Description | Required? |
---|---|---|
orderIds | An array containing orderIds of orders to be cancelled | Y |
Refresh Order(s) Request
Refresh Order(s) Request Example Response Body:
{
"claimId": "c30ae9da-9222-4de5-81fe-fe1ac590fa0f",
"orders": [
{
"orderId": "3e8c38f3-f4ef-4414-88da-1793d25ef6f0",
"type": "Copy of Title"
},
{
"orderId": "77462941-7b6c-4bd0-9749-588c32654864",
"type": "Lien Release Letter"
}
],
"success": true
}
This route will refresh "cancelled" or "fulfilled" orders on a claim, and is effectively a re-order. Refreshing an order will result in an additional billing event being created.
HTTP Request
POST https://xapi.lossexpress.com/claims/{claimId}/orders/refresh
URL Parameters
Parameter | Description |
---|---|
claimId | The LossExpress UUID associated with the claim |
Request Body
This route accepts a JSON payload of an object comprising of:
Body Parameter | Description | Required? |
---|---|---|
types | An array containing strings with types of orders to be refreshed | Y |
*Accepted types
:
Bill of Sale
Copy of Title
Installment Contract
Lien Release Letter
One and the Same Letter
Payment History
Payment Status
Repo Affidavit
Title Status
Letter of Guarantee
Loan Payoff Request
Payments
Acknowledge Payment Sent
We offer support for carriers to give us acknowledgement that payment has been sent to the lender. Enabling this allows us to more effectively answer questions directed at us by lenders regarding payment status. Additionally, this step can be skipped if an integration with our designated payment processing partner has been enabled.
HTTP Request
POST https://xapi.lossexpress.com/claims/{claimId}/payoff-sent
Request Body
This route accepts a JSON payload of an object comprising of:
Body Parameter | Description | Required? |
---|---|---|
sentTo | An object containing streetAddress, streetAddress2, city, state, and zipCode keys | N |
trackingNumber | A string containing the relevant tracking number for the check | N |
sentVia | A string describing how the check was sent; mailing provider if sent via mail | N |
sentAt | A JSON date that the payment was sent | Y |
checkAmount | An integer describing the amount sent | Y |
Settlement Counter
Accept or Dispute Counter
Example Response Body:
{
"claimId": "c30ae9da-9222-4de5-81fe-fe1ac590fa0f",
"success": true
}
This route will throw a
404: NOT FOUND
if there are no settlement counters present on the claim.Example Error Response:
{
"statusCode": 404,
"error": "Not Found",
"message": "A settlement counter does not exist for this claim."
}
This route allows for either accepting or disputing a settlement counter presented by a lender.
To accept a counter, you must send a new settlement breakdown document. To dispute a counter, you must set dispute
to true and provide a reasonForDispute
.
This route will throw an error if there are no settlement counters.
HTTP Request
POST https://xapi.lossexpress.com/claims/{claimId}/settlement-counter
URL Parameters
Parameter | Description |
---|---|
claimId | The LossExpress UUID associated with the claim |
Request Body
This route accepts a JSON payload of an object comprising of:
Body Parameter | Description | Required? |
---|---|---|
dispute | True if it should be disputed, false otherwise (boolean) | Y |
settlementBreakdown | Y if not dispute | |
reasonForDispute | Message containing the reason for dispute | Y if dispute |
VIN Inquiry
Fetch VIN Information
This route returns information about one or more vins.
Example Response Body
{
"time": "2023-04-20T13:29:33.935Z",
"vehicleCount": 2,
"results": [
{
"vin": "KL1TD526X5B4XXXXX",
"owner": {
"name": "Jared",
"address": "test address 1",
"county": "Wichita"
},
"vehicle": {
"year": "2005",
"make": "example 1",
"model": "example 1",
"trim": "LS / Special Value",
"titleProblem": true,
"vehicleProblem": true,
"vehicleOrTitleProblems": [
"Title brand or other problem",
"Accident",
"Rebuilt"
]
},
"registration": {
"tagNumber": "example 1",
"earliestDate": "2005-04-22",
"latestDate": "2012-02-10",
"expirationDate": "2016-04-25",
"titleNumber": "10831838959165444"
},
"financial": {
"titleIssueDate": "2012-02-10",
"titledState": "MO",
"lienholder": [
{
"accountType": "example 1",
"companyName": "example 1"
}
],
},
"accident": {
"count": "2",
"earliestDate": "December 15, 1995 03:24:00",
"lastReportedEvent": "string",
"lastReportedAccidentDate": "string",
"city": "string",
"state": "string",
"reportedAccidents": [
{
"accidentSeqNum": "0",
"reportedDate": "December 17, 1995 03:24:00",
"type": "string a",
"city": "string a",
"state": "string a"
},
{
"accidentSeqNum": "1",
"reportedDate": "December 15, 1995 03:24:00",
"type": "string b",
"city": "string b",
"state": "string b"
}
]
}
},
{
"vin": "1GNFC130X8R2XXXXX",
"owner": {
"name": "John Doe",
"address": "123 Main St.",
"county": "New York"
},
"vehicle": {
"year": "2016",
"make": "BMW",
"model": "4 Series",
"trim": "435i",
"titleProblem": false,
"vehicleProblem": true,
"vehicleOrTitleProblems": [
"Title brand or other problem",
"Accident",
"Rebuilt"
]
},
"registration": {
"tagNumber": "ABC123",
"earliestDate": "2015-06-01",
"latestDate": "2022-03-15",
"expirationDate": "2022-03-15",
"titleNumber": "123456789"
},
"financial": {
"titleIssueDate": "2022-03-15",
"titledState": "NY",
"lienholder": [
{
"accountType": "example 1",
"companyName": "example 1"
}
],
},
"accident": {
"count": "1",
"earliestDate": "December 1, 2020 03:24:00",
"lastReportedEvent": "Collision with animal",
"lastReportedAccidentDate": "2020-09-30",
"city": "New York",
"state": "NY",
"reportedAccidents": [
{
"accidentSeqNum": "1",
"reportedDate": "December 1, 2020 03:24:00",
"type": "Rear-end collision",
"city": "Brooklyn",
"state": "NY"
}
]
}
},
]
}
HTTP Request
POST https://xapi.lossexpress.com/vin-check
Request Body
Body Parameter | Description | Required |
---|---|---|
vins | An array of 17-digit VINs | Y |
requestedData | An array of data types to fetch* | Y |
*Accepted data types are "OWNER", "VEHICLE", "ACCIDENT", "FINANCIAL", "REGISTRATION"
Errors
400 Bad Request Example Error Response:
{
"statusCode": 400,
"error": "Bad Request",
"message": "vin is required",
"validation": {
"errors": [
{
"key": [
"vin"
],
"path": [
"vin"
],
"message": "vin is required",
"type": "any",
"constraint": "required",
"label": "vin"
}
]
}
}
401 Auth Token Example Error Response:
{
"statusCode": 401,
"error": "Unauthorized",
"message": "The provided token has expired."
}
403 Forbidden Example Error Response:
{
"statusCode": 403,
"error": "Forbidden",
"message": "This claim is not available during testing."
}
500 Internal Server Error Example Error Response:
{
"statusCode": 500,
"error": "Internal Server Error",
"message": "An internal server error occurred"
}
Our Vendor API uses the following error codes:
Error Code | Meaning |
---|---|
400 | Bad Request -- Your request is invalid. |
401 | Unauthorized -- Your API key is wrong. |
403 | Forbidden -- You do not have access to that route. |
404 | Not Found -- The specified information could not be found. |
405 | Method Not Allowed -- You tried to access a route with an invalid method. |
406 | Not Acceptable -- You requested a format that isn't json. |
500 | Internal Server Error -- We had a problem with our server. Try again later. |
503 | Service Unavailable -- We're temporarily offline for maintenance. Please try again later. |