Document Vault API (1.0.1)

Download OpenAPI specification:

API Support: support@ochresoft.com

The Document Vault API lets you create a secure, shareable container of documents — a Document Vault — and manage its contents programmatically. It lets you exchange the right paperwork with the other side of the transaction without rekeying or trading email attachments.

Used with Contract Pack Vault for conveyancing firms (see Contract Pack Vault).

Overview

Use this API from your case management system to assemble a contract pack, then open Contract Pack Vault to check it and share it with the buyer's conveyancer. The API builds and maintains the vault; reviewing and sharing happen in the web app.

  1. Create a Document Vault — supply the property address and as much detail as you have. You get back a vault id; use it in every follow-up call and to open the vault in the web app. Optionally set a reference (your case reference), which must be unique within your account.
  2. Add documents, one per call. Each file is virus-scanned and analysed in the background. Its status is Pending while that runs, then Available or Quarantined if it failed the virus scan.
  3. Keep details current — update the reference, property, or recipient organisation, and add or remove recipients. Setting up recipients is not the same as sharing; you share the vault from the web app.
  4. Check progress with Get Document Vault or Get Activities for the audit history.
  5. Open the web app to review the analysis and share the vault. See Contract Pack Vault.

Getting started

REST API over HTTPS with JSON responses; file uploads use multipart/form-data.

UAT (building and testing): https://uat-api.landmarkcloudservices.com/document-vaults

Auth: https://lmkmaster-uat.eu.auth0.com/oauth/token

Production (live integration only; vaults are real and may incur a cost): https://api.landmarkcloudservices.com/document-vaults

Auth: https://lmkmaster.eu.auth0.com/oauth/token

Authentication

OAuth 2.0 client credentials. Each conveyancing firm is onboarded individually with Landmark and receives its own client ID, secret, and Account-Id (sent as a header on every request). Credentials are issued separately for UAT (building and testing; not charged) and Production (live integration only). If you integrate via a case management system, that system typically holds the firm's credentials on its behalf.

Audience is fixed per environment:

  • UAT: https://uat-api.landmarkcloudservices.com
  • Production: https://api.landmarkcloudservices.com

1. Get an access token by POSTing to the auth endpoint for your environment:

{
  "client_id": "your-client-id",
  "client_secret": "your-client-secret",
  "audience": "https://uat-api.landmarkcloudservices.com",
  "grant_type": "client_credentials"
}

Use the Production audience when calling the Production auth endpoint.

The response contains an access_token (a JWT) and an expires_in value. Cache and reuse the token until it is close to expiry.

2. Send on every API request:

  • Authorization: Bearer <access_token>
  • Account-Id: <your account id>

A 403 means your credentials are not entitled to that operation; contact support.

Billing

A charge applies per vault when the first document is added to it.

Limits, errors and support

One document per upload; up to 60 per vault; PDF, DOC, DOCX, JPEG, PNG; 25 MB per file. API rate limits: up to 1,000 calls per minute per caller.

Standard HTTP status codes apply (400 validation, 401/403 authentication, 404 not found, 409 conflict, 413 too large, 429 rate limited, 5xx server error). Error bodies use problem+json. Include the lgsTraceResponse header value when contacting support.

Support: support@ochresoft.com | +44 (0)3300 366 700

Contract Pack Vault

Contract Pack Vault is a conveyancing product on LandmarkConnect. You assemble a contract pack from your CMS and share it securely with the buyer's conveyancer. The API handles the building; the web app is where you review the pack and share it.

AI-assisted checking

As each document is added, it is automatically analysed so you can spot problems before the pack goes out. The checks include:

  • identifying and tagging each document by type,
  • flagging missing pages,
  • checking signatures are present where expected,
  • cross-checking addresses, names, dates and title/reference numbers against the case.

The results appear as a checklist in the web app for you to review and act on. They are not currently returned by the API.

Reviewing and sharing

In the web app you can review the checklist and analysis, preview, download or remove documents, update vault details, and share the vault with the buyer's conveyancer. The buyer's conveyancer receives secure access through a link once they have verified their email address.

Opening a vault from your CMS

Link straight to a vault from your CMS using the vault id from Create Document Vault, so your team does not have to search for it in the web app. Open the relevant URL in a browser, replacing {documentVaultId}:

  • UAT: https://uat-connect.landmark.co.uk/case/{documentVaultId}
  • PRD: https://connect.landmark.co.uk/case/{documentVaultId}

API Specification Versions

  • 1.0.1 (16/07/2026)
    • Added filename property to Add Document endpoint body to show file name restrictions
    • Added minLength values to various schemas for clarity
  • 1.0.0 (08/07/2026)
    • Initial release

Document Vaults

Create a vault and manage its details and recipients.

Create Document Vault

Creates a new Document Vault and returns its id. The more detail you provide upfront (property details, tenure, registered status, selling capacity, and the buyer's conveyancer's organisation and recipients), the more the vault will reflect the case from the start. Everything can be added or updated later.

Authorizations:
bearerAuth
header Parameters
Account-Id
required
string <uuid> (accountId) = 36 characters ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[4][0-9A-Fa-f]...

Your Landmark account ID - this will be provided to you during onboarding

Request Body schema: application/json
required
reference
string (documentVaultReference) [ 1 .. 50 ] characters ^[\w\-\/\.\|]+$

Your reference that uniquely identifies the Document Vault

required
object (propertyDetails)

The property associated with the vault

object (recipientOrganisation)

The organisation acting for vault recipients

Responses

Request samples

Content type
application/json
{
  • "reference": "UT/PL34JT/04-2025",
  • "property": {
    • "address": {
      • "uprn": 9223372036854775000,
      • "udprn": 99999999,
      • "departmentName": "Customer Service Department",
      • "organisationName": "JW Simpsons Ltd",
      • "subBuildingName": "The Old Mill",
      • "buildingName": "The Annexe",
      • "buildingNumber": "7",
      • "poBoxNumber": "5422",
      • "dependentThoroughfare": "Richmond Terrace",
      • "thoroughfare": "Main Street",
      • "doubleDependentLocality": "Hook",
      • "dependentLocality": "Warsash",
      • "postTown": "Southampton",
      • "country": "England",
      • "postcode": "SO99 9ZZ",
      • "blpuEasting": 296701,
      • "blpuNorthing": 92288
      },
    • "tenure": "Freehold",
    • "registered": true,
    • "sellingCapacity": "LegalAndBeneficialOwner"
    },
  • "recipientOrganisation": {
    • "name": "Landmark Example Conveyancing",
    • "reference": "UT/PL34JT/04-2025",
    • "recipients": [
      • {
        • "type": "Individual",
        • "title": "Mr",
        • "firstName": "John",
        • "middleName": "Michael",
        • "lastName": "Smith",
        • "email": "user@example.com"
        }
      ]
    }
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08"
}

Get Document Vault

Returns a vault's current details, including each document and its status.

Authorizations:
bearerAuth
path Parameters
documentVaultId
required
string <uuid> (lgsUuid) = 36 characters ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[4][0-9A-Fa-f]...

The Document Vault ID

header Parameters
Account-Id
required
string <uuid> (accountId) = 36 characters ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[4][0-9A-Fa-f]...

Your Landmark account ID - this will be provided to you during onboarding

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "reference": "UT/PL34JT/04-2025",
  • "createdDate": "2019-08-24T14:15:22Z",
  • "createdBy": "25a02396-1048-48f9-bf93-102d2fb7895e",
  • "updatedDate": "2019-08-24T14:15:22Z",
  • "property": {
    • "address": {
      • "uprn": 9223372036854775000,
      • "udprn": 99999999,
      • "departmentName": "Customer Service Department",
      • "organisationName": "JW Simpsons Ltd",
      • "subBuildingName": "The Old Mill",
      • "buildingName": "The Annexe",
      • "buildingNumber": "7",
      • "poBoxNumber": "5422",
      • "dependentThoroughfare": "Richmond Terrace",
      • "thoroughfare": "Main Street",
      • "doubleDependentLocality": "Hook",
      • "dependentLocality": "Warsash",
      • "postTown": "Southampton",
      • "country": "England",
      • "postcode": "SO99 9ZZ",
      • "blpuEasting": 296701,
      • "blpuNorthing": 92288
      },
    • "tenure": "Freehold",
    • "registered": true,
    • "sellingCapacity": "LegalAndBeneficialOwner"
    },
  • "recipientOrganisation": {
    • "name": "Landmark Example Conveyancing",
    • "reference": "UT/PL34JT/04-2025",
    • "recipients": [
      • {
        • "type": "Individual",
        • "title": "Mr",
        • "firstName": "John",
        • "middleName": "Michael",
        • "lastName": "Smith",
        • "email": "user@example.com",
        • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08"
        }
      ]
    },
  • "documents": [
    • {
      • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      • "status": "Available",
      • "createdDate": "2019-08-24T14:15:22Z"
      }
    ]
}

Update Reference

Updates your reference for the vault.

Authorizations:
bearerAuth
path Parameters
documentVaultId
required
string <uuid> (lgsUuid) = 36 characters ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[4][0-9A-Fa-f]...

The Document Vault ID

header Parameters
Account-Id
required
string <uuid> (accountId) = 36 characters ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[4][0-9A-Fa-f]...

Your Landmark account ID - this will be provided to you during onboarding

Request Body schema: application/json
reference
required
string (documentVaultReference) [ 1 .. 50 ] characters ^[\w\-\/\.\|]+$

Your reference that uniquely identifies the Document Vault

Responses

Request samples

Content type
application/json
{
  • "reference": "UT/PL34JT/04-2025"
}

Response samples

Content type
application/problem+json
Example
{
  • "status": "400",
  • "code": "40000",
  • "title": "Invalid content type supplied"
}

Update Property

Updates fields associated with the Property.

At least one top-level field (address, tenure, registered or sellingCapacity) must be supplied.

Omitted top-level fields are left unchanged.

Omitted nested fields (the fields within address) will have their existing values removed.

Authorizations:
bearerAuth
path Parameters
documentVaultId
required
string <uuid> (lgsUuid) = 36 characters ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[4][0-9A-Fa-f]...

The Document Vault ID

header Parameters
Account-Id
required
string <uuid> (accountId) = 36 characters ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[4][0-9A-Fa-f]...

Your Landmark account ID - this will be provided to you during onboarding

Request Body schema: application/json
non-empty
object (lgsAddressPAFPlus)

Either buildingNumber or buildingName must be provided (both may be present).

tenure
string (tenure)
Enum: "Freehold" "Leasehold" "Commonhold"
registered
boolean (registered)

Whether the property is registered or not

sellingCapacity
string (sellingCapacity)
Enum: "LegalAndBeneficialOwner" "Attorney" "PersonalRepresentative" "Trustee"

Responses

Request samples

Content type
application/json
{
  • "address": {
    • "uprn": 9223372036854775000,
    • "udprn": 99999999,
    • "departmentName": "Customer Service Department",
    • "organisationName": "JW Simpsons Ltd",
    • "subBuildingName": "The Old Mill",
    • "buildingName": "The Annexe",
    • "buildingNumber": "7",
    • "poBoxNumber": "5422",
    • "dependentThoroughfare": "Richmond Terrace",
    • "thoroughfare": "Main Street",
    • "doubleDependentLocality": "Hook",
    • "dependentLocality": "Warsash",
    • "postTown": "Southampton",
    • "country": "England",
    • "postcode": "SO99 9ZZ",
    • "blpuEasting": 296701,
    • "blpuNorthing": 92288
    },
  • "tenure": "Freehold",
  • "registered": true,
  • "sellingCapacity": "LegalAndBeneficialOwner"
}

Response samples

Content type
application/problem+json
Example
{
  • "status": "400",
  • "code": "40000",
  • "title": "Invalid content type supplied"
}

Update Recipient Organisation

Updates fields associated with the Recipient Organisation. At least one of name or reference must be supplied. Omitted fields are left unchanged.

Authorizations:
bearerAuth
path Parameters
documentVaultId
required
string <uuid> (lgsUuid) = 36 characters ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[4][0-9A-Fa-f]...

The Document Vault ID

header Parameters
Account-Id
required
string <uuid> (accountId) = 36 characters ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[4][0-9A-Fa-f]...

Your Landmark account ID - this will be provided to you during onboarding

Request Body schema: application/json
non-empty
name
string (organisationName) [ 1 .. 128 ] characters

Organisation name

reference
string (buyerConveyancerReference) [ 1 .. 40 ] characters ^[\w\-\/\.\|]+$

The buyer's conveyancer's reference that uniquely identifies the Document Vault

Responses

Request samples

Content type
application/json
{
  • "name": "Landmark Example Conveyancing",
  • "reference": "UT/PL34JT/04-2025"
}

Response samples

Content type
application/problem+json
Example
{
  • "status": "400",
  • "code": "40000",
  • "title": "Invalid content type supplied"
}

Add Recipient

Adds a person or team to the buyer's-side recipient organisation. This sets up who can receive the vault; sharing itself is done from the web app.

A maximum of 4 recipients can be added to a Document Vault.

Authorizations:
bearerAuth
path Parameters
documentVaultId
required
string <uuid> (lgsUuid) = 36 characters ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[4][0-9A-Fa-f]...

The Document Vault ID

header Parameters
Account-Id
required
string <uuid> (accountId) = 36 characters ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[4][0-9A-Fa-f]...

Your Landmark account ID - this will be provided to you during onboarding

Request Body schema: application/json
One of
type
required
string
Value: "Individual"
title
string (title) <= 20 characters ^.{0}$|^(?=.*[A-Za-zÀ-ÖØ-öø-ž])[A-Za-zÀ-ÖØ-öø...
firstName
required
string (firstName) <= 40 characters ^(?=.*[A-Za-zÀ-ÖØ-öø-ž])[A-Za-zÀ-ÖØ-öø-ž\u201...
middleName
string (middleName) <= 40 characters ^.{0}$|^(?=.*[A-Za-zÀ-ÖØ-öø-ž])[A-Za-zÀ-ÖØ-öø...
lastName
required
string (lastName) <= 40 characters ^(?=.*[A-Za-zÀ-ÖØ-öø-ž])[A-Za-zÀ-ÖØ-öø-ž\u201...
email
required
string <email> (email) <= 320 characters

Responses

Request samples

Content type
application/json
Example
{
  • "type": "Individual",
  • "title": "Mr",
  • "firstName": "John",
  • "middleName": "Michael",
  • "lastName": "Smith",
  • "email": "user@example.com"
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08"
}

Delete Recipient

Removes a recipient from the vault.

Authorizations:
bearerAuth
path Parameters
documentVaultId
required
string <uuid> (lgsUuid) = 36 characters ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[4][0-9A-Fa-f]...

The Document Vault ID

recipientId
required
string <uuid> (lgsUuid) = 36 characters ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[4][0-9A-Fa-f]...

The Recipient ID

header Parameters
Account-Id
required
string <uuid> (accountId) = 36 characters ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[4][0-9A-Fa-f]...

Your Landmark account ID - this will be provided to you during onboarding

Responses

Response samples

Content type
application/problem+json
Example
{
  • "status": "400",
  • "code": "40000",
  • "title": "Invalid content type supplied"
}

Documents

Add and remove the files held in a vault.

Add Document

Adds one document to the vault. Supported file types are PDF, DOC, DOCX, JPEG and PNG; maximum 25 MB per file and 60 documents per vault. Returns a document id.

Authorizations:
bearerAuth
path Parameters
documentVaultId
required
string <uuid> (lgsUuid) = 36 characters ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[4][0-9A-Fa-f]...

The Document Vault ID

header Parameters
Account-Id
required
string <uuid> (accountId) = 36 characters ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[4][0-9A-Fa-f]...

Your Landmark account ID - this will be provided to you during onboarding

Request Body schema: multipart/form-data
required
file
required
string <binary> <= 26214400 characters

File content transferred as binary. Content-Type and filename should be sent within this sub-part of the multi-part body.

filename
string [ 5 .. 250 ] characters ^(?!.*\.\..*)[^\:\/\*""\<\>\|]+?\.[a-zA-Z\d]{...

This property should be sent as part of the file sub-part of the multi-part body; this is present only to show the filename restrictions

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08"
}

Delete Document

Permanently removes a document from the vault.

Authorizations:
bearerAuth
path Parameters
documentVaultId
required
string <uuid> (lgsUuid) = 36 characters ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[4][0-9A-Fa-f]...

The Document Vault ID

documentId
required
string <uuid> (lgsUuid) = 36 characters ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[4][0-9A-Fa-f]...

The Document ID

header Parameters
Account-Id
required
string <uuid> (accountId) = 36 characters ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[4][0-9A-Fa-f]...

Your Landmark account ID - this will be provided to you during onboarding

Responses

Response samples

Content type
application/problem+json
Example
{
  • "status": "400",
  • "code": "40000",
  • "title": "Invalid content type supplied"
}

Activities

Read a vault's audit history.

Get Activities

Returns all audit events for a vault, the same history shown in the web app activity log.

Authorizations:
bearerAuth
path Parameters
documentVaultId
required
string <uuid> (lgsUuid) = 36 characters ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[4][0-9A-Fa-f]...

The Document Vault ID

header Parameters
Account-Id
required
string <uuid> (accountId) = 36 characters ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[4][0-9A-Fa-f]...

Your Landmark account ID - this will be provided to you during onboarding

Responses

Response samples

Content type
application/json
Example
{
  • "activities": [
    • {
      • "action": "Case created",
      • "createdBy": "John Michael Smith",
      • "createdDate": "2026-06-17T12:10:14.222813Z"
      }
    ]
}