Download OpenAPI specification:
The Conveyancing API is where you quote for, instruct, and manage conveyancing work with Landmark. Whether you're referring work to a panel conveyancer or handling the cases that come your way, you do it through one API and against one shared case record.
The first thing it supports is panel conveyancing through Optimus: as an introducer you create a quote, choose a conveyancer, and instruct them on your client's behalf; as a conveyancer you pick up the cases assigned to you and keep the introducer updated as the work moves forward. That's the workflow this documentation focuses on, though the API will grow to cover more of how you connect to conveyancing over time.
Throughout, a quote becomes a case once instructed, both sides share one case record, and you only see the cases your account is party to.
Functionality is being made available in UAT as it becomes ready to test. We'll keep this section updated as each drop lands.
The Quotes and Cases endpoints have a settled schema and you can use them as a reference to start your integration work. Endpoints still undergoing final design and build work are marked Preview in the reference below — currently Add Document and Retrieve Document. They're here so you can see where the API is heading, but please don't build against them yet.
Your Landmark contact will confirm what's available to you and when.
The API is a REST service over HTTPS. You send and receive JSON, apart from document uploads, which use multipart/form-data, and PDF or document downloads, which return the file itself.
| Environment | Base URL | Use it for |
|---|---|---|
| UAT | https://uat-api.landmarkcloudservices.com/conveyances |
Building and testing your integration |
| Production | https://api.landmarkcloudservices.com/conveyances |
Live cases |
You'll start with UAT credentials, then move to production once your integration is ready to go live.
The API uses OAuth 2.0 with the client credentials grant. When you're onboarded you'll receive a client ID and secret. These identify your account, so there's no separate account header to send.
1. Get an access token by POSTing your credentials to the token endpoint for your environment:
https://lmkmaster-uat.eu.auth0.com/oauth/tokenhttps://lmkmaster.eu.auth0.com/oauth/token{
"client_id": "your-client-id",
"client_secret": "your-client-secret",
"audience": "https://api.landmarkcloudservices.com",
"grant_type": "client_credentials"
}
You'll get back an access_token (a JWT) and an expires_in value. Cache and reuse the token until it's close to expiring rather than fetching a new one for every call.
2. Send the token on every request:
Authorization: Bearer <access_token>A 401 means your token is missing or invalid. A 403 means your account isn't entitled to that operation; contact support if you think that's wrong.
Standard HTTP status codes apply: 400 validation, 401 authentication, 403 not entitled, 404 not found, 429 too many requests, 5xx server error.
When something goes wrong you'll get back a consistent JSON shape:
{
"status": "400",
"code": "40001",
"title": "Validation error",
"messages": [
{ "property": "propertyAddress.postcode", "message": "Postcode is required" }
]
}
Every response includes a traceresponse header that uniquely identifies your request. Quote it when you contact support so we can find it quickly.
Support Contact: TBC
Quotes are where a job begins. You build a quote for your client's transaction, get back the panel conveyancers available to you with their pricing, and instruct one of them to turn the quote into a live case.
A single request can cover a standalone transaction (one quote) or a combined sale and purchase (two quotes, one for each side). You choose what you're quoting for with a product schema, which sets the questions that apply. See Product Schemas.
To instruct, pass the conveyancerId of one of the conveyancers returned for the quote. That creates the case and makes the details available to the conveyancer you've chosen.
Create a quote for your client's transaction. Provide the property address, the applicants, the account roles, and the product details, and you'll get back the panel conveyancers available to you with their pricing.
Standalone quote: provide a single quote request in the quotes array.
Combined sale and purchase: provide two quote requests in the quotes array, one Sale and one Purchase. Each is independent, with its own productId, applicants, and product details.
Accounts: each quote needs an accounts array naming at least one Originator and at least one Introducer. These can be the same account holding both roles. You're given these account identifiers when you're onboarded.
Contacts: each quote needs a contacts array including the requestor (the person placing the quote on the applicant's behalf). Identify them with contactId or email. Only one contact with role Requestor is allowed per quote.
Products: the product object must match one of the Product Schemas for the product type and property location you're quoting for.
required | Array of objects (QuoteRequest) [ 1 .. 2 ] items Array of quote requests to create.
Each quote is independent with its own accounts, contacts, productId, propertyAddress, persons, and productDetails. |
Example of a standalone Purchase quote request for England/Wales
{- "quotes": [
- {
- "additionalReferences": [
- {
- "type": "Introducer",
- "reference": "purchase - 123456"
}
], - "propertyAddress": {
- "thoroughfare": "High Street",
- "postTown": "London",
- "postcode": "SW1A 1AA",
- "country": "England"
}, - "product": {
- "productId": "f7a7438b-fe4e-4361-b00b-d3d709a16d01",
- "propertyLocation": "EnglandWales",
- "productDetails": {
- "property": {
- "value": 350000,
- "tenure": "Freehold",
- "exceedsHeightThreshold": false,
- "isHMO": false,
- "hasHelpToBuyEquityLoan": false,
- "isNewBuild": false
}, - "hasOfferBeenAccepted": true,
- "doesReservationFormApply": false,
- "isRightToBuy": false,
- "isAuctionPurchase": false,
- "isPropertyBeingBoughtWithMortgage": true,
- "lender": "Halifax"
}
}, - "persons": [
- {
- "reference": "a1b2c3d4-e5f6-7890-abcd-ef1234567890a",
- "title": "Mr",
- "firstName": "John",
- "lastName": "Smith",
- "email": "john.smith@example.com",
- "telephoneNumber": "+447123456789",
- "roles": [
- "Applicant"
]
}
], - "accounts": [
- {
- "accountId": "27c4cb1e-0c56-4a68-a2aa-8d6a2a1e6f5c",
- "roles": [
- "Originator"
]
}, - {
- "accountId": "d7eaff45-0c1a-4809-9aa2-49e09fbdc9c9",
- "roles": [
- "Introducer"
]
}
], - "contacts": [
- {
- "contactId": "6a969045-973e-428d-b664-7e51a7d73bf0",
- "roles": [
- "Requestor"
]
}
]
}
]
}{- "quotes": [
- {
- "quoteId": "550e8400-e29b-41d4-a716-446655440000",
- "product": {
- "productId": "f7a7438b-fe4e-4361-b00b-d3d709a16d01",
- "propertyLocation": "EnglandWales"
}, - "conveyancers": [
- {
- "conveyancerId": "f7a7438b-fe4e-4361-b00b-d3d709a16d01",
- "name": "Key Conveyancing LLP",
- "location": "Northampton",
- "overallRating": 4.3,
- "ratingBreakdown": {
- "feedback": 4,
- "complaintRatio": 4,
- "telephoneTime": 5,
- "completionTime": 4
}
}, - {
- "conveyancerId": "b2c3d4e5-f6a7-8901-bcde-f1234567890a",
- "name": "O'Neill Patient Solicitors LLP",
- "location": "Stockport",
- "overallRating": 2,
- "ratingBreakdown": {
- "feedback": 2,
- "complaintRatio": 2,
- "telephoneTime": 3,
- "completionTime": 2
}
}
]
}
]
}Retrieve your quotes, most recently updated first.
Filter, sort, and page the results with the OData-style query parameters below.
| $filter | string <= 1000 characters OData $filter syntax i.e. $filter=status eq 'Completed' |
| $orderby | string <= 1000 characters Default: "updatedDate desc" OData $orderby syntax i.e. $orderby=updatedDate desc |
| $top | integer <int32> [ 1 .. 999 ] Default: 20 The number of items to return |
| $skip | integer <int32> [ 0 .. 9999999 ] Default: 0 The number of items to skip |
| $count | boolean Default: false Whether or not to return a count of items |
| countOnly | boolean Default: false Return only the count of items |
Example response for retrieving a list of quotes
{- "count": 3,
- "quotes": [
- {
- "quoteId": "550e8400-e29b-41d4-a716-446655440000",
- "propertyAddress": {
- "thoroughfare": "High Street",
- "postTown": "London",
- "postcode": "SW1A 1AA"
}, - "product": {
- "productId": "f7a7438b-fe4e-4361-b00b-d3d709a16d01",
- "propertyLocation": "EnglandWales"
}, - "selectedConveyancer": {
- "conveyancerId": "f7a7438b-fe4e-4361-b00b-d3d709a16d01",
- "name": "Key Conveyancing LLP"
}, - "totalFee": 1982.4,
- "createdDate": "2024-01-15T10:30:00Z"
}, - {
- "quoteId": "660e8400-e29b-41d4-a716-446655440001",
- "propertyAddress": {
- "thoroughfare": "Oak Avenue",
- "postTown": "Manchester",
- "postcode": "M1 1AA"
}, - "product": {
- "productId": "e5e42a0e-6717-4b45-8cd5-0f3a3b79cf4d",
- "propertyLocation": "EnglandWales"
}, - "selectedConveyancer": {
- "conveyancerId": "b2c3d4e5-f6a7-8901-bcde-f1234567890a",
- "name": "O'Neill Patient Solicitors LLP"
}, - "totalFee": 1750,
- "createdDate": "2024-01-14T14:20:00Z"
}, - {
- "quoteId": "770e8400-e29b-41d4-a716-446655440002",
- "propertyAddress": {
- "thoroughfare": "Highland Way",
- "postTown": "Edinburgh",
- "postcode": "EH1 1AA"
}, - "product": {
- "productId": "f7a7438b-fe4e-4361-b00b-d3d709a16d01",
- "propertyLocation": "Scotland"
}, - "selectedConveyancer": {
- "conveyancerId": "c3d4e5f6-a7b8-9012-cdef-1234567890ab",
- "name": "Scottish Property Lawyers"
}, - "totalFee": 2200,
- "createdDate": "2024-01-13T09:15:00Z"
}
]
}Retrieve the full details of one of your quotes: the property, applicants, product details, the available conveyancers, and the pricing breakdown.
| quoteId required | string <uuid> (LgsUuid) = 36 characters ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[4][0-9A-Fa-f]... Unique identifier for the quote |
Example response for retrieving a complete quote
{- "quoteId": "550e8400-e29b-41d4-a716-446655440000",
- "additionalReferences": [
- {
- "type": "Introducer",
- "reference": "purchase - 123456"
}
], - "propertyAddress": {
- "thoroughfare": "High Street",
- "postTown": "London",
- "postcode": "SW1A 1AA",
- "country": "England"
}, - "product": {
- "productId": "f7a7438b-fe4e-4361-b00b-d3d709a16d01",
- "propertyLocation": "EnglandWales",
- "productDetails": {
- "property": {
- "value": 350000,
- "tenure": "Freehold",
- "exceedsHeightThreshold": false,
- "isHMO": false,
- "isNewBuild": false
}, - "referralFee": 150,
- "hasOfferBeenAccepted": true,
- "doesReservationFormApply": false,
- "isRightToBuy": false,
- "isAuctionPurchase": false,
- "isPropertyBeingBoughtWithMortgage": true,
- "lender": "Halifax"
}
}, - "persons": [
- {
- "reference": "a1b2c3d4-e5f6-7890-abcd-ef1234567890a",
- "title": "Mr",
- "firstName": "John",
- "lastName": "Smith",
- "email": "john.smith@example.com",
- "telephoneNumber": "+447123456789",
- "correspondenceAddress": {
- "thoroughfare": "High Street",
- "postTown": "London",
- "county": "Greater London",
- "postcode": "SW1A 1AA",
- "country": "England"
}, - "roles": [
- "Applicant"
]
}
], - "selectedConveyancer": {
- "conveyancerId": "f7a7438b-fe4e-4361-b00b-d3d709a16d01",
- "name": "Key Conveyancing LLP"
}, - "conveyancers": [
- {
- "conveyancerId": "f7a7438b-fe4e-4361-b00b-d3d709a16d01",
- "name": "Key Conveyancing LLP",
- "location": "Northampton",
- "overallRating": 4.3,
- "ratingBreakdown": {
- "feedback": 4,
- "complaintRatio": 4,
- "telephoneTime": 5,
- "completionTime": 4
}
}, - {
- "conveyancerId": "b2c3d4e5-f6a7-8901-bcde-f1234567890a",
- "name": "O'Neill Patient Solicitors LLP",
- "location": "Stockport",
- "overallRating": 2,
- "ratingBreakdown": {
- "feedback": 2,
- "complaintRatio": 2,
- "telephoneTime": 3,
- "completionTime": 2
}
}
], - "fee": {
- "totalIncVat": 1982.4,
- "breakdown": {
- "legalWork": [
- {
- "description": "Legal Work",
- "excVat": 755,
- "vat": 151,
- "incVat": 906
}
], - "disbursements": [
- {
- "description": "Search Pack",
- "excVat": 345,
- "vat": 69,
- "incVat": 414
}
], - "supplements": [
- {
- "description": "Lender Special Conditions",
- "excVat": 250,
- "vat": 50,
- "incVat": 300
}
]
}
}, - "accounts": [
- {
- "accountId": "27c4cb1e-0c56-4a68-a2aa-8d6a2a1e6f5c",
- "roles": [
- "Originator"
]
}, - {
- "accountId": "d7eaff45-0c1a-4809-9aa2-49e09fbdc9c9",
- "roles": [
- "Introducer"
]
}
], - "contacts": [
- {
- "contactId": "6a969045-973e-428d-b664-7e51a7d73bf0",
- "roles": [
- "Requestor"
]
}
]
}Download a PDF copy of the quote, for example to share with your client.
| quoteId required | string <uuid> (LgsUuid) = 36 characters ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[4][0-9A-Fa-f]... Example: 550e8400-e29b-41d4-a716-446655440000 Unique identifier for the quote |
{- "status": "400",
- "code": "40000",
- "title": "Invalid content type supplied"
}Instruct a quote to turn it into a live case. Supply the conveyancerId of the conveyancer you're choosing in the request body: it must be one of the conveyancers returned for this quote (see GET /quotes/{quoteId} or the create-quote response). Instructing creates the case and makes the details available to that conveyancer.
| quoteId required | string <uuid> (LgsUuid) = 36 characters ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[4][0-9A-Fa-f]... Example: 550e8400-e29b-41d4-a716-446655440000 Unique identifier for the quote |
| conveyancerId required | string <uuid> = 36 characters ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[4][0-9A-Fa-f]... Identifier of the conveyancer to instruct; must equal the |
{- "conveyancerId": "f7a7438b-fe4e-4361-b00b-d3d709a16d01"
}{- "status": "400",
- "code": "40000",
- "title": "Invalid content type supplied"
}Update the property address on a quote. The values you provide replace the current address.
| quoteId required | string <uuid> (LgsUuid) = 36 characters ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[4][0-9A-Fa-f]... Example: 550e8400-e29b-41d4-a716-446655440000 Unique identifier for the quote |
| thoroughfare required | string <= 60 characters ^.*$ Street name or thoroughfare |
| dependentThoroughfare | string <= 60 characters ^.*$ Dependent thoroughfare |
| dependentLocality | string <= 40 characters ^.*$ Dependent locality |
| doubleDependentLocality | string <= 35 characters ^.*$ Double dependent locality |
| postTown required | string <= 60 characters ^.*$ Post town |
| county | string <= 100 characters ^.*$ County |
| postcode | string <= 10 characters ^.*$ Postcode |
| country required | string <= 200 characters ^([Ee]ngland|[Ww]ales|[Ss]cotland)$ Country |
| buildingNumber | string <= 10 characters ^.*$ Building number |
| buildingName | string <= 50 characters ^.*$ Building name |
| subBuildingName | string <= 30 characters ^.*$ Sub-building name |
| organisationName | string <= 60 characters ^.*$ Organisation name |
| departmentName | string <= 60 characters ^.*$ Department name |
| poBoxNumber | string <= 14 characters ^[A-Za-z0-9.#\s]*$ PO Box number |
| uprn | integer [ 1 .. 999999999999 ] Unique Property Reference Number (up to 12 digits) |
| udprn | integer [ 0 .. 99999999 ] Unique Delivery Point Reference Number |
Example request for updating a quote property address
{- "thoroughfare": "Kelham Road",
- "dependentLocality": "Newark",
- "postTown": "Newark",
- "county": "Nottinghamshire",
- "postcode": "NG24 1BU",
- "country": "England"
}{- "status": "400",
- "code": "40000",
- "title": "Invalid content type supplied"
}Update the product details on a quote. The values you provide replace the current product details.
The request body must match the productDetails object for the quote's product, as defined in Product Schemas. You can't change the quote's productId or propertyLocation here.
| quoteId required | string <uuid> (LgsUuid) = 36 characters ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[4][0-9A-Fa-f]... Example: 550e8400-e29b-41d4-a716-446655440000 Unique identifier for the quote |
Product-specific details for a quote. Must match the productDetails object structure
for the quote's product as defined in Product Schemas.
Example request for updating product details on a Purchase England/Wales quote
{- "property": {
- "value": 375000,
- "tenure": "Freehold",
- "exceedsHeightThreshold": false,
- "isHMO": false,
- "isNewBuild": false
}, - "referralFee": 150,
- "hasOfferBeenAccepted": true,
- "doesReservationFormApply": false,
- "isRightToBuy": false,
- "isAuctionPurchase": false,
- "isPropertyBeingBoughtWithMortgage": true,
- "lender": "Halifax"
}{- "status": "400",
- "code": "40000",
- "title": "Invalid content type supplied"
}Add a person (applicant) to a quote. A quote can have up to 8 applicants.
| quoteId required | string <uuid> (LgsUuid) = 36 characters ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[4][0-9A-Fa-f]... Example: 550e8400-e29b-41d4-a716-446655440000 Unique identifier for the quote |
| reference | string <uuid> = 36 characters ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[4][0-9A-Fa-f]... A value which can be used to refer to a person. Optional when creating or adding a person; a reference is generated automatically if not supplied. Once set, the reference cannot be changed. |
| title | string <= 20 characters Person's title |
| firstName required | string <= 100 characters First name |
| middleName | string <= 100 characters Middle name |
| lastName required | string <= 100 characters Last name |
| email required | string <email> [ 5 .. 254 ] characters Email address |
| telephoneNumber required | string [ 8 .. 20 ] characters Telephone number |
object (Address) Address using PAF Plus format | |
| roles required | Array of strings [ 1 .. 20 ] items Items Value: "Applicant" |
Example request for adding a person to a quote.
reference is omitted; a reference is generated automatically in the response.
{- "title": "Mrs",
- "firstName": "Jane",
- "lastName": "Smith",
- "email": "jane.smith@example.com",
- "telephoneNumber": "+447987654321",
- "roles": [
- "Applicant"
]
}{- "status": "400",
- "code": "40000",
- "title": "Invalid content type supplied"
}Update a person on a quote. The values you provide replace that person's details.
| quoteId required | string <uuid> (LgsUuid) = 36 characters ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[4][0-9A-Fa-f]... Example: 550e8400-e29b-41d4-a716-446655440000 Unique identifier for the quote |
| personReference required | string <uuid> (LgsUuid) = 36 characters ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[4][0-9A-Fa-f]... Example: bf13cb52-6676-4f3d-a27a-b6cafaf52f19 Unique identifier for the person on the quote |
| title | string <= 20 characters Person's title |
| firstName required | string <= 100 characters First name |
| middleName | string <= 100 characters Middle name |
| lastName required | string <= 100 characters Last name |
| email required | string <email> [ 5 .. 254 ] characters Email address |
| telephoneNumber required | string [ 8 .. 20 ] characters Telephone number |
object (Address) Address using PAF Plus format | |
| roles required | Array of strings [ 1 .. 20 ] items Items Value: "Applicant" |
Example request for updating a person on a quote
{- "title": "Mrs",
- "firstName": "Jane",
- "lastName": "Smith",
- "email": "jane.smith@example.com",
- "telephoneNumber": "+447987654321",
- "correspondenceAddress": {
- "thoroughfare": "Kelham Road",
- "dependentLocality": "Newark",
- "postTown": "Newark",
- "county": "Nottinghamshire",
- "postcode": "NG24 1BU",
- "country": "United Kingdom"
}, - "roles": [
- "Applicant"
]
}{- "status": "400",
- "code": "40000",
- "title": "Invalid content type supplied"
}Remove a person from a quote.
| quoteId required | string <uuid> (LgsUuid) = 36 characters ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[4][0-9A-Fa-f]... Example: 550e8400-e29b-41d4-a716-446655440000 Unique identifier for the quote |
| personReference required | string <uuid> (LgsUuid) = 36 characters ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[4][0-9A-Fa-f]... Example: bf13cb52-6676-4f3d-a27a-b6cafaf52f19 Unique identifier for the person on the quote |
{- "status": "400",
- "code": "40000",
- "title": "Invalid content type supplied"
}Once you instruct a quote it becomes a case. If you're the conveyancer, these are the cases assigned to you: you work them through to completion and post updates as you go. If you're the introducer, this is how you follow the work you've referred and see how it's progressing. Either way, you only see the cases your account is party to.
From here you can retrieve your cases, read the full detail of one, update its status and handler, work the task hierarchy, follow the activity history, and add notes. Document exchange is marked Preview.
Retrieve your cases, most recently updated first. As a conveyancer these are the cases assigned to you; as an introducer these are the cases you've instructed.
Filter, sort, and page the results with the OData-style query parameters below.
| $filter | string <= 1000 characters OData $filter syntax i.e. $filter=status eq 'Completed' |
| $orderby | string <= 1000 characters Default: "updatedDate desc" OData $orderby syntax i.e. $orderby=updatedDate desc |
| $top | integer <int32> [ 1 .. 999 ] Default: 20 The number of items to return |
| $skip | integer <int32> [ 0 .. 9999999 ] Default: 0 The number of items to skip |
| $count | boolean Default: false Whether or not to return a count of items |
| countOnly | boolean Default: false Return only the count of items |
Example response for retrieving a list of cases
{- "count": 3,
- "cases": [
- {
- "caseId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
- "status": "In Progress",
- "propertyAddress": {
- "thoroughfare": "High Street",
- "postTown": "London",
- "postcode": "SW1A 1AA"
}, - "product": {
- "productId": "f7a7438b-fe4e-4361-b00b-d3d709a16d01",
- "propertyLocation": "EnglandWales"
}, - "conveyancer": {
- "conveyancerId": "f7a7438b-fe4e-4361-b00b-d3d709a16d01",
- "name": "Key Conveyancing LLP"
}, - "caseHandler": {
- "contactId": "c1d2e3f4-a5b6-7890-cdef-1234567890ab",
- "name": "Sarah Johnson"
}, - "lastUpdatedDate": "2024-01-20T14:30:00Z"
}, - {
- "caseId": "b2c3d4e5-f6a7-8901-bcde-f1234567890a",
- "status": "On hold",
- "propertyAddress": {
- "thoroughfare": "Oak Avenue",
- "postTown": "Manchester",
- "postcode": "M1 1AA"
}, - "product": {
- "productId": "e5e42a0e-6717-4b45-8cd5-0f3a3b79cf4d",
- "propertyLocation": "EnglandWales"
}, - "conveyancer": {
- "conveyancerId": "b2c3d4e5-f6a7-8901-bcde-f1234567890a",
- "name": "O'Neill Patient Solicitors LLP"
}, - "lastUpdatedDate": "2024-01-19T10:15:00Z"
}, - {
- "caseId": "c3d4e5f6-a7b8-9012-cdef-1234567890ab",
- "status": "Pending Approval",
- "propertyAddress": {
- "thoroughfare": "Highland Way",
- "postTown": "Edinburgh",
- "postcode": "EH1 1AA"
}, - "product": {
- "productId": "f7a7438b-fe4e-4361-b00b-d3d709a16d01",
- "propertyLocation": "Scotland"
}, - "conveyancer": {
- "conveyancerId": "c3d4e5f6-a7b8-9012-cdef-1234567890ab",
- "name": "Scottish Property Lawyers"
}, - "lastUpdatedDate": "2024-01-18T09:00:00Z"
}
]
}Retrieve the full detail of one of your cases, including its current status, activities, and documents.
| caseId required | string <uuid> (LgsUuid) = 36 characters ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[4][0-9A-Fa-f]... Unique identifier for the case |
Example response for retrieving a complete case
{- "caseId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
- "status": "In Progress",
- "additionalReferences": [
- {
- "type": "Introducer",
- "reference": "purchase - 123456"
}
], - "propertyAddress": {
- "thoroughfare": "High Street",
- "postTown": "London",
- "postcode": "SW1A 1AA",
- "country": "England"
}, - "product": {
- "productId": "f7a7438b-fe4e-4361-b00b-d3d709a16d01",
- "propertyLocation": "EnglandWales",
- "productDetails": {
- "property": {
- "value": 350000,
- "tenure": "Freehold",
- "exceedsHeightThreshold": false,
- "isHMO": false,
- "isNewBuild": false
}, - "referralFee": 150,
- "hasOfferBeenAccepted": true,
- "doesReservationFormApply": false,
- "isRightToBuy": false,
- "isAuctionPurchase": false,
- "isPropertyBeingBoughtWithMortgage": true,
- "lender": "Halifax"
}
}, - "persons": [
- {
- "reference": "a1b2c3d4-e5f6-7890-abcd-ef1234567890a",
- "title": "Mr",
- "firstName": "John",
- "lastName": "Smith",
- "email": "john.smith@example.com",
- "telephoneNumber": "+447123456789",
- "correspondenceAddress": {
- "thoroughfare": "High Street",
- "postTown": "London",
- "county": "Greater London",
- "postcode": "SW1A 1AA",
- "country": "England"
}, - "roles": [
- "Applicant"
]
}
], - "conveyancer": {
- "conveyancerId": "f7a7438b-fe4e-4361-b00b-d3d709a16d01",
- "name": "Key Conveyancing LLP",
- "location": "Northampton",
}, - "documents": [
- {
- "documentId": "d1e2f3a4-b5c6-7890-def1-234567890abc",
- "mimeType": "application/pdf",
- "documentType": "Undefined",
- "filename": "search-report.pdf",
- "createdDate": "2024-01-20T10:30:00Z"
}, - {
- "documentId": "e2f3a4b5-c6d7-8901-ef12-34567890abcd",
- "mimeType": "image/jpeg",
- "documentType": "Undefined",
- "filename": "property-photo.jpg",
- "createdDate": "2024-01-21T14:15:00Z"
}
], - "accounts": [
- {
- "accountId": "27c4cb1e-0c56-4a68-a2aa-8d6a2a1e6f5c",
- "roles": [
- "Originator"
]
}, - {
- "accountId": "d7eaff45-0c1a-4809-9aa2-49e09fbdc9c9",
- "roles": [
- "Introducer"
]
}
], - "contacts": [
- {
- "contactId": "6a969045-973e-428d-b664-7e51a7d73bf0",
- "roles": [
- "Requestor"
]
}, - {
- "contactId": "c1d2e3f4-a5b6-7890-cdef-1234567890ab",
- "name": "Sarah Johnson",
- "roles": [
- "CaseHandler"
]
}
]
}Accept a case that has been instructed to you.
| caseId required | string <uuid> (LgsUuid) = 36 characters ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[4][0-9A-Fa-f]... Unique identifier for the case |
{- "status": "400",
- "code": "40000",
- "title": "Invalid content type supplied"
}Reject a case that has been instructed to you. A reason must be provided.
| caseId required | string <uuid> (LgsUuid) = 36 characters ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[4][0-9A-Fa-f]... Unique identifier for the case |
| reason required | string <= 1000 characters Reason for rejecting the case |
Example request for rejecting a case
{- "reason": "Unable to take on this case due to capacity constraints"
}{- "status": "400",
- "code": "40000",
- "title": "Invalid content type supplied"
}Update the status of a case — place on hold, cancel, or resume from hold back to in progress. A reason must be provided for the change.
| caseId required | string <uuid> (LgsUuid) = 36 characters ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[4][0-9A-Fa-f]... Unique identifier for the case |
| status required | string Enum: "In Progress" "On Hold" "Cancelled" The status to set on the case. Use "On Hold" or "Cancelled" when the case is in progress. Use "In Progress" to resume a case that is on hold. |
| reason required | string <= 1000 characters Reason for the status change |
Example request for updating a case status
{- "status": "On Hold",
- "reason": "Awaiting additional documentation from the client"
}{- "status": "400",
- "code": "40000",
- "title": "Invalid content type supplied"
}Assign a specific conveyancer to a case, making the responsible contact visible to all parties and tracked in the case history.
| caseId required | string <uuid> (LgsUuid) = 36 characters ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[4][0-9A-Fa-f]... Unique identifier for the case |
| contactId required | string <uuid> = 36 characters ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[4][0-9A-Fa-f]... Unique identifier for the case handler contact |
string <email> [ 5 .. 254 ] characters Email address of the case handler contact |
Example request for adding a case handler by email
{- "email": "case.handler@example.com"
}{- "status": "400",
- "code": "40000",
- "title": "Invalid content type supplied"
}Retrieve the activity history on a case — milestones, notes, task updates, and contact logs. This is how you follow a case's progress.
Filter and page the results with the OData-style query parameters below.
| caseId required | string <uuid> (LgsUuid) = 36 characters ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[4][0-9A-Fa-f]... Unique identifier for the case |
| $filter | string <= 1000 characters OData $filter syntax i.e. $filter=type eq 'Note' |
| $top | integer <int32> [ 1 .. 999 ] Default: 50 The number of items to return |
| $skip | integer <int32> [ 0 .. 9999999 ] Default: 0 The number of items to skip |
Example response for retrieving activities on a case
{- "activities": [
- {
- "activityId": "10001234",
- "type": "Note",
- "message": "Case status updated to In Progress",
- "metadata": null,
- "createdByContactId": "c1d2e3f4-a5b6-7890-cdef-1234567890ab",
- "createdDate": "2024-01-20T10:30:00Z"
}, - {
- "activityId": "10001235",
- "type": "Note",
- "message": "Client confirmed they have submitted ID documents.",
- "metadata": null,
- "createdByContactId": "c1d2e3f4-a5b6-7890-cdef-1234567890ab",
- "createdDate": "2024-01-20T14:15:00Z"
}
]
}Retrieve the task hierarchy for a case. Tasks mark key events in the conveyancing lifecycle and are visible to connected parties so they can see progress.
The set is tailored to the case (for example by jurisdiction) and is generated when the case is first created.
Tasks are organised as parents and children. Completing a parent completes all uncompleted children; completing the last uncompleted child completes the parent.
Each task has a reference that is consistent across cases where that task applies. Use reference when mapping events in your own platform; use taskId when completing a specific instance on a case.
| caseId required | string <uuid> (LgsUuid) = 36 characters ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[4][0-9A-Fa-f]... Unique identifier for the case |
Example response for retrieving tasks on a case
{- "tasks": [
- {
- "taskId": 1234567,
- "name": "Pre-completion",
- "reference": "PRECOMP",
- "depth": 0,
- "ordinal": 1,
- "status": "In Progress",
- "isComplete": false,
- "metadata": null,
- "children": [
- {
- "taskId": 1234568,
- "name": "Initial review",
- "reference": "INIT",
- "depth": 1,
- "ordinal": 1,
- "status": "Done",
- "isComplete": true,
- "completedDate": "2024-01-20T10:30:00Z",
- "metadata": null,
- "children": [ ]
}
]
}, - {
- "taskId": 1234569,
- "name": "Exchange of contracts",
- "reference": "EXCH",
- "depth": 0,
- "ordinal": 2,
- "status": "To Do",
- "isComplete": false,
- "metadata": null,
- "children": [ ]
}
], - "count": 12
}Mark a task on a case as complete. Completing a parent completes all uncompleted children; completing the last uncompleted child completes the parent.
| caseId required | string <uuid> (LgsUuid) = 36 characters ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[4][0-9A-Fa-f]... Unique identifier for the case |
| taskId required | string (LgsReferenceId) ^[0-9]{6,16}$ The |
{- "status": "400",
- "code": "40000",
- "title": "Invalid content type supplied"
}Retrieve all notes recorded on a case. Notes are visible to all parties on the case.
| caseId required | string <uuid> (LgsUuid) = 36 characters ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[4][0-9A-Fa-f]... Unique identifier for the case |
Example response for retrieving notes on a case
{- "notes": [
- {
- "noteId": "10001234",
- "createdByContactId": "c1d2e3f4-a5b6-7890-cdef-1234567890ab",
- "title": "ID documents received",
- "body": "Client confirmed they have submitted ID documents.",
- "createdDate": "2024-01-20T10:30:00Z",
- "modifiedDate": "2024-01-20T10:30:00Z",
- "supersedesNoteId": null
}, - {
- "noteId": "10001235",
- "createdByContactId": "c1d2e3f4-a5b6-7890-cdef-1234567890ab",
- "title": null,
- "body": "Chased the lender for the mortgage offer.",
- "createdDate": "2024-01-21T09:05:00Z",
- "modifiedDate": "2024-01-21T11:20:00Z",
- "supersedesNoteId": null
}
]
}Add a note to a case. Notes are recorded in the case activity history and are visible to all parties on the case.
| caseId required | string <uuid> (LgsUuid) = 36 characters ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[4][0-9A-Fa-f]... Unique identifier for the case |
| title | string or null <= 100 characters |
| body required | string [ 1 .. 5000 ] characters |
Example request for adding a note to a case
{- "title": "ID documents received",
- "body": "Client confirmed they have submitted ID documents."
}Example response when a note is added to a case
{- "title": "ID documents received",
- "body": "Client confirmed they have submitted ID documents.",
- "createdDate": "2024-01-20T10:30:00Z"
}Add a document to a case.
| caseId required | string <uuid> (LgsUuid) = 36 characters ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[4][0-9A-Fa-f]... Unique identifier for the case |
| documentType required | string Value: "Undefined" Type of document (currently only Undefined; will be expanded in future updates) |
| filename required | string [ 3 .. 250 ] characters ^(?!.*\.\..*)[^\:/\*"\<\>\|]+?\.[a-zA-Z\d]{1,... Name of the file being uploaded |
| file required | string <binary> <= 99614720 characters The document file content |
Example request for uploading a document to a case
{ "mimeType": "application/pdf", "documentType": "Undefined", "filename": "search-report.pdf", "file": "<binary file content>" }
{ }Download a document from a case.
| caseId required | string <uuid> (LgsUuid) = 36 characters ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[4][0-9A-Fa-f]... Unique identifier for the case |
| documentId required | string <uuid> (LgsUuid) = 36 characters ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[4][0-9A-Fa-f]... Unique Landmark ID for the document |
{- "status": "400",
- "code": "40000",
- "title": "Invalid content type supplied"
}The request schema for each product and country combination, used when you create or amend a quote.
| productId required | string <uuid> Value: "f7a7438b-fe4e-4361-b00b-d3d709a16d01" Product ID for Purchase in England/Wales |
| propertyLocation required | string Value: "EnglandWales" Property location - must be EnglandWales for this product |
required | object |
{- "productId": "f7a7438b-fe4e-4361-b00b-d3d709a16d01",
- "propertyLocation": "EnglandWales",
- "productDetails": {
- "property": {
- "value": 350000,
- "tenure": "Freehold",
- "exceedsHeightThreshold": true,
- "isHMO": true,
- "isNewBuild": true,
- "sharedOwnership": {
- "sharePercentage": 25
}, - "buyToLet": {
- "type": "LimitedCompany",
- "companyName": "Example Property Investments Ltd",
- "numberOfDirectors": 2
}
}, - "referralFee": 150,
- "hasOfferBeenAccepted": true,
- "doesReservationFormApply": true,
- "isRightToBuy": true,
- "isAuctionPurchase": true,
- "isPropertyBeingBoughtWithMortgage": true,
- "lender": "string",
- "numberOfGiftedDeposits": 99,
- "numberOfLifetimeISAs": 99,
- "numberOfHelpToBuyISAs": 99,
- "concessionaryPurchase": {
- "actualPurchasePrice": 300000
}
}
}| productId required | string <uuid> Value: "f7a7438b-fe4e-4361-b00b-d3d709a16d01" Product ID for Purchase in Scotland |
| propertyLocation required | string Value: "Scotland" Property location - must be Scotland for this product |
required | object |
{- "productId": "f7a7438b-fe4e-4361-b00b-d3d709a16d01",
- "propertyLocation": "Scotland",
- "productDetails": {
- "property": {
- "value": 350000,
- "isHMO": true,
- "isNewBuild": true,
- "sharedOwnership": {
- "sharePercentage": 25
}, - "buyToLet": {
- "type": "LimitedCompany",
- "companyName": "Example Property Investments Ltd",
- "numberOfDirectors": 2
}
}, - "referralFee": 150,
- "hasOfferBeenAccepted": true,
- "isRightToBuy": true,
- "isAuctionPurchase": true,
- "isPropertyBeingBoughtWithMortgage": true,
- "lender": "string",
- "numberOfGiftedDeposits": 99,
- "numberOfLifetimeISAs": 99,
- "numberOfHelpToBuyISAs": 99,
- "concessionaryPurchase": {
- "actualPurchasePrice": 300000
}
}
}| productId required | string <uuid> Value: "e5e42a0e-6717-4b45-8cd5-0f3a3b79cf4d" Product ID for Sale in England/Wales |
| propertyLocation required | string Value: "EnglandWales" Property location - must be EnglandWales for this product |
required | object |
{- "productId": "e5e42a0e-6717-4b45-8cd5-0f3a3b79cf4d",
- "propertyLocation": "EnglandWales",
- "productDetails": {
- "property": {
- "value": 250000,
- "tenure": "Freehold",
- "exceedsHeightThreshold": true,
- "isHMO": true,
- "sharedOwnership": {
- "sharePercentage": 25
}
}, - "referralFee": 150,
- "numberOfMortgagesBeingRedeemed": 20,
- "hasOfferBeenAccepted": true,
- "doesReservationFormApply": true,
- "isPropertyInProbate": true,
- "isPropertyBeingSoldWithTenant": true,
- "isThereAnOnwardPurchase": true
}
}| productId required | string <uuid> Value: "e5e42a0e-6717-4b45-8cd5-0f3a3b79cf4d" Product ID for Sale in Scotland |
| propertyLocation required | string Value: "Scotland" Property location - must be Scotland for this product |
required | object |
{- "productId": "e5e42a0e-6717-4b45-8cd5-0f3a3b79cf4d",
- "propertyLocation": "Scotland",
- "productDetails": {
- "property": {
- "value": 250000,
- "isHMO": true,
- "sharedOwnership": {
- "sharePercentage": 25
}
}, - "referralFee": 150,
- "numberOfMortgagesBeingRedeemed": 20,
- "hasOfferBeenAccepted": true,
- "isPropertyInProbate": true,
- "isPropertyBeingSoldWithTenant": true,
- "isThereAnOnwardPurchase": true
}
}| productId required | string <uuid> Value: "1d67bbf2-5054-4dce-a1f4-7fc3fc31234d" Product ID for Fixed Fee Remortgage in England/Wales |
| propertyLocation required | string Value: "EnglandWales" Property location - must be EnglandWales for this product |
required | object |
{- "productId": "1d67bbf2-5054-4dce-a1f4-7fc3fc31234d",
- "propertyLocation": "EnglandWales",
- "productDetails": {
- "property": {
- "value": 350000,
- "tenure": "Freehold",
- "exceedsHeightThreshold": true,
- "isHMO": true,
- "hasHelpToBuyEquityLoan": true,
- "isTransferOfEquity": true,
- "sharedOwnership": {
- "sharePercentage": 25,
- "isStaircasing": false
}, - "buyToLet": {
- "type": "LimitedCompany",
- "companyName": "Example Property Investments Ltd",
- "numberOfDirectors": 2
}
}, - "referralFee": 150,
- "loanValue": 999999999,
- "numberOfMortgagesBeingRedeemed": 20,
- "numberOfDebtsBeingConsolidated": 20,
- "earlyRepaymentChargeDate": "2019-08-24",
- "lender": "string"
}
}| productId required | string <uuid> Value: "1d67bbf2-5054-4dce-a1f4-7fc3fc31234d" Product ID for Fixed Fee Remortgage in Scotland |
| propertyLocation required | string Value: "Scotland" Property location - must be Scotland for this product |
required | object |
{- "productId": "1d67bbf2-5054-4dce-a1f4-7fc3fc31234d",
- "propertyLocation": "Scotland",
- "productDetails": {
- "property": {
- "value": 350000,
- "isHMO": true,
- "hasHelpToBuyEquityLoan": true,
- "isTransferOfEquity": true,
- "sharedOwnership": {
- "sharePercentage": 25,
- "isStaircasing": false
}, - "buyToLet": {
- "type": "LimitedCompany",
- "companyName": "Example Property Investments Ltd",
- "numberOfDirectors": 2
}
}, - "referralFee": 150,
- "loanValue": 999999999,
- "numberOfMortgagesBeingRedeemed": 20,
- "earlyRepaymentChargeDate": "2019-08-24",
- "lender": "string"
}
}| productId required | string <uuid> Value: "611ec5c5-3259-4043-9442-333820712b6a" Product ID for Cashback Remortgage in England/Wales |
| propertyLocation required | string Value: "EnglandWales" Property location - must be EnglandWales for this product |
required | object |
{- "productId": "611ec5c5-3259-4043-9442-333820712b6a",
- "propertyLocation": "EnglandWales",
- "productDetails": {
- "property": {
- "value": 350000,
- "tenure": "Freehold",
- "exceedsHeightThreshold": true,
- "isHMO": true,
- "hasHelpToBuyEquityLoan": true,
- "isTransferOfEquity": true,
- "sharedOwnership": {
- "sharePercentage": 25,
- "isStaircasing": false
}
}, - "referralFee": 150,
- "loanValue": 999999999,
- "numberOfMortgagesBeingRedeemed": 20,
- "earlyRepaymentChargeDate": "2019-08-24",
- "lender": "string",
- "cashbackAmount": 500
}
}