HM Land Registry Submit an application API
The Submit an application API API from HM Land Registry — 2 operation(s) for submit an application api.
The Submit an application API API from HM Land Registry — 2 operation(s) for submit an application api.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/hm-land-registry-submit-an-application-api-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
openapi: 3.2.0
info:
title: Hm Land Registry Submit an application API
version: '1.0'
description: 'Operations tagged Submit an application API across 2 of this provider''s published API definitions: hm-land-registry-submit-application-to-change-the-register-v0.3-openapi.json, hm-land-registry-submit-application-to-change-the-register-v1.0-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://businessgateway.landregistry.gov.uk/bg2/api
description: Production
- url: https://bgtest.landregistry.gov.uk/bg2test/api
description: Stub
security:
- basicAuth: []
tags:
- name: Submit an application API
paths:
/v0/applications:
post:
description: Submit an application API - Submit application creation requests for processing
operationId: Submit an application API
parameters:
- in: header
name: Idempotency-Key
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SubstantiveApplication'
required: true
responses:
'202':
content:
application/json:
schema:
$ref: '#/components/schemas/ApplicationCreationDataResponse'
description: Application creation request accepted
headers:
Location:
description: Get application creation status URI for checking status
schema:
type: string
style: simple
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
description: Bad Request due to payload not meeting the required schema
'401':
content:
'*/*':
schema:
$ref: '#/components/schemas/ErrorResponse'
description: Unauthorised - an access token is required
'500':
description: Internal Server Error
tags:
- Submit an application API
servers:
- url: https://businessgateway.landregistry.gov.uk/bg2/api
description: Production
- url: https://bgtest.landregistry.gov.uk/bg2test/api
description: Stub
/v1/applications:
post:
summary: Submit an application
description: Submit an application API - Submit application creation requests for processing
operationId: submit_an_application_to_change_the_register_v1
parameters:
- in: header
name: Idempotency-Key
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SubstantiveApplication'
required: true
responses:
'202':
content:
application/json:
schema:
$ref: '#/components/schemas/ApplicationCreationDataResponse'
description: Application creation request accepted
headers:
Location:
description: Get application creation status URI for checking status
schema:
type: string
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
description: Bad Request due to payload not meeting the required schema
'401':
content:
'*/*':
schema:
$ref: '#/components/schemas/ErrorResponse'
description: Unauthorised - an access token is required
'500':
description: Internal Server Error
tags:
- Submit an application API
servers:
- url: https://businessgateway.landregistry.gov.uk/bg2/api
description: Production
- url: https://bgtest.landregistry.gov.uk/bg2test/api
description: Stub
components:
schemas:
OtherOrganisation:
required:
- organisation_name
type: object
description: A party object to capture infomation about an other organisation
allOf:
- $ref: '#/components/schemas/PartyDetails'
- type: object
properties:
organisation_name:
maxLength: 366
minLength: 0
type: string
description: Full name registered at Companies House or Company name as incorporated in its state of origin
DxAddress:
required:
- exchange_name
- number
type: object
description: A document exchange address
allOf:
- $ref: '#/components/schemas/AddressDetails'
- type: object
properties:
care_of_name:
maxLength: 200
minLength: 0
type: string
description: The care of name to address correspondence to
exchange_name:
maxLength: 20
minLength: 0
type: string
description: The DX exchange
number:
maxLength: 10
minLength: 0
type: string
description: The DX number
PoBoxAddress:
required:
- number
- post_town
- postcode
type: object
description: An address of a PO Box
allOf:
- $ref: '#/components/schemas/AddressDetails'
- type: object
properties:
care_of_name:
maxLength: 200
minLength: 0
type: string
description: The care of name to address correspondence to
number:
maxLength: 20
minLength: 0
type: string
description: The number of the PO Box
post_town:
maxLength: 35
minLength: 0
type: string
description: The town/city of the PO Box
postcode:
maxLength: 8
minLength: 5
type: string
description: The postcode of the PO Box
OtherConveyancer:
required:
- full_name
- registered_address
- conveyancer_reference
type: object
description: Information about another conveyancer (who is not the lodging conveyancer) representing a party on the application
properties:
conveyancer_reference:
maxLength: 25
minLength: 0
type: string
description: The conveyancer's reference
example: party_1
full_name:
maxLength: 200
minLength: 0
type: string
description: The conveyancer's full name
example: John Doe
registered_address:
maxLength: 500
minLength: 0
type: string
description: The conveyancer's registered address
example: 123 Green St., Made Up, MU1 2AB, UK
TitleDetails:
required:
- scope_details
- title_number
- title_type
- disclosable_overriding_interests
type: object
description: Information about a HM Land Registry title
properties:
disclosable_overriding_interests:
type: boolean
description: Are there any disclosable overriding interests for the title
scope_details:
$ref: '#/components/schemas/TitleScopeDetails'
title_number:
maxLength: 9
minLength: 0
pattern: ^[A-Z]{0,3}[0-9]{1,6}[ZT]?$
type: string
description: The HM Land Registry title number
title_type:
type: string
description: '* `REGISTER_TITLE` - Any titles on REGISTER_UPDATE or REMOVE_JP1 application types
* `TRANSFEROR_TITLE` - Titles related to the transferor (TRANSFER_OF_PART applications only)
* `LANDLORD_TITLE` - Titles related to the landlord (DISPOSITIONARY_FIRST_LEASE applications only)
* `TENANT_TITLE` - The title related to the tenant on a DISPOSITIONARY_FIRST_LEASE application which is a lease extension.
* `ADDITIONAL_TITLE` - Any other titles on TRANSFER_OF_PART or DISPOSITIONARY_FIRST_LEASE applications'
enum:
- REGISTER_TITLE
- TRANSFEROR_TITLE
- ADDITIONAL_TITLE
- LANDLORD_TITLE
- TENANT_TITLE
PartyDetails:
required:
- type
type: object
description: Details of the party that apply to all party types
properties:
type:
type: string
description: The overall type of the party (`PRIVATE_INDIVIDUAL` - A singular person `UK_COMPANY` - A company that was incorporated/registered in the UK `OVERSEAS_COMPANY` - A company that was first incorporated outside the UK `OTHER_ORGANISATION` - Any other organisation, e.g. a charity `UNKNOWN` - The type of the party is unknown)
enum:
- PRIVATE_INDIVIDUAL
- OTHER_ORGANISATION
- OVERSEAS_COMPANY
- UK_COMPANY
- UNKNOWN
discriminator:
propertyName: type
UnknownParty:
required:
- freeformat_name
type: object
description: A party object to capture infomation about an unknown party
allOf:
- $ref: '#/components/schemas/PartyDetails'
- type: object
properties:
freeformat_name:
maxLength: 366
minLength: 0
type: string
description: The name of the party, when type is UNKNOWN
Transaction:
required:
- fee_in_pence
- type
- priority
type: object
description: The object representing a transaction to apply to specific titles on the application
properties:
details:
oneOf:
- $ref: '#/components/schemas/AmountDetails'
- $ref: '#/components/schemas/Charge'
- $ref: '#/components/schemas/Discharge'
- $ref: '#/components/schemas/Transfer'
documents:
type: array
description: List of document references that are linked to this transaction
items:
$ref: '#/components/schemas/DocumentReference'
priority:
maximum: 20
minimum: 1
type: integer
description: The priority application the transactions should be processed in. Multiple transactions cannot have the same priority.
format: int32
fee_in_pence:
type: integer
minimum: 0
format: int32
description: The fee (in pence) for the transaction
relates_to_new_title:
type: boolean
default: false
description: Indicates if the transaction applies to the new title number that is created during application processing. Applies only for TRANSFER_OF_PART and DISPOSITIONARY_FIRST_LEASE application types.
party_roles:
type: array
description: A list of roles/capacities for each party relating to the transaction
items:
$ref: '#/components/schemas/PartyRole'
type:
type: string
description: The HM Land Registry transaction type code
enum:
- ADV1
- ADV2
- AGN
- APLC
- APLCO
- APLM
- APR
- APT
- ASSTTP
- ASTC
- ASTT
- ATP
- AUN
- BKN
- BKR
- C
- CAG
- CANI
- CANR
- CANU
- CBKN
- CBKR
- CCT
- CH2
- CH3
- CHOA
- CHOU
- CHR
- CN
- CNC
- CNL
- COA
- COAC
- CON
- COP
- CPD
- CPVK
- CPVU
- CTD
- CUR
- DB
- DCLN
- DCLV
- DFL1
- DFL3
- DFL4
- DFL5
- DFT
- DIS
- DJP
- DL
- DMR
- DOG
- DP
- DSP
- DTL
- EXR
- HR
- JP1
- LCATCO
- LCBD
- LCBET
- LCBN
- LCF
- LCMRE
- LCOE
- LCOF
- LCSD
- LCSDM
- LCSOL
- LCSOLM
- LCSDWT
- LCSDMWT
- MDR
- NCT
- NDC
- NFR
- NOE
- NOL
- NPR
- NRT
- PC
- PER
- PRO
- RC
- RFN
- RHR
- ROCA
- ROCC
- ROCU
- RNT
- ROE
- RRD
- RTM
- RUN
- RXL
- RXN
- RXS
- SBC
- SHO
- SJT
- STVC
- STVL
- T
- TNV
- TNVTP
- TOC
- TOSNV
- TOSNVTP
- TOSTP
- TOSV
- TPS
- TPSTP
- TRC
- TRM
- TSCNV
- TSCNVTP
- TSCTP
- TSCV
- TTP
- TVR
- TVRTP
- UNN
- UPT
- VC
- VLAN
- VLAP
- VLUN
- VO
- VOC
- VOCA
- VOCU
- VOE
- VOEA
- VOEU
- WCT
- WDR
title_references:
type: array
description: A list of titles that affect or relate to this transaction
items:
maxLength: 9
minLength: 0
type: string
minItems: 1
maxItems: 2147483647
AddressForServiceOption:
type: string
description: '* `PROVIDED_ADDRESS` - The address for service has been provided alongside this option
* `NOT_REQUIRED` - The address for service is not required for the party'
enum:
- PROVIDED_ADDRESS
- NOT_REQUIRED
PartyReference:
maxLength: 50
minLength: 1
pattern: ^[A-Za-z0-9-?,_]+$
type: string
description: Unique identifier for parties, used to reference parties from elsewhere in the spec
example: customer
AddressDetails:
type: object
description: The details captured for a specific address. Details differ depending on type
required:
- type
properties:
type:
type: string
enum:
- UK
- OVERSEAS
- EMAIL
- DX
- BFPO
- PO_BOX
discriminator:
propertyName: type
Party:
required:
- details
- address_for_service_option
- representation_type
type: object
description: A person or entity that has a role in an transaction
properties:
address_for_service_option:
$ref: '#/components/schemas/AddressForServiceOption'
addresses:
type: array
description: A list of address references for the party
items:
$ref: '#/components/schemas/AddressReference'
identity_evidence_type:
type: string
description: "Required when `representation_type` is `NOT_REPRESENTED`\n* `EVIDENCE` - I have attached evidence of their identity with this application\n* `VERIFIED` - I am satisfied that sufficient steps have been taken to verify their identity and that they are the registered proprietor or have the right to be registered as the proprietor \n* `NOT_REQUIRED` - I don’t need to provide evidence of ID"
enum:
- EVIDENCE
- VERIFIED
- NOT_REQUIRED
other_conveyancer:
$ref: '#/components/schemas/OtherConveyancer'
register_action:
type: string
description: '* `AMEND` - The party information is different to the currently held register information
* `REMOVE` - The party on the register should be removed'
enum:
- AMEND
- REMOVE
representation_type:
type: string
description: 'The type of representation the party has.
* `LODGING_CONVEYANCER` - The conveyancer lodging the application.
* `OTHER_CONVEYANCER` - The party is represented by another conveyancer. Details will be included with the application.
* `NOT_REPRESENTED` - The party is not represented by a conveyancer and identity evidence has been provided
* `NOT_REQUIRED` - The party is not required to have a representation type.'
enum:
- LODGING_CONVEYANCER
- OTHER_CONVEYANCER
- NOT_REPRESENTED
- NOT_REQUIRED
details:
type: object
oneOf:
- $ref: '#/components/schemas/OtherOrganisation'
- $ref: '#/components/schemas/OverseasCompany'
- $ref: '#/components/schemas/PrivateIndividual'
- $ref: '#/components/schemas/UKCompany'
- $ref: '#/components/schemas/UnknownParty'
DocumentMetadata:
required:
- certification_statement_type
- document_filename
type: object
description: Metadata about the document that was uploaded
properties:
certification_statement_type:
type: string
description: '* `CERTIFIED` - I/we certify this is a true copy of an original document
* `CERTIFIED_BY_ANOTHER` - I/we certify this document is a true copy of an original document which is certified by a conveyancer to be a true copy of the original
* `NOT_CERTIFIED` - This document is an uncertified copy '
enum:
- CERTIFIED
- CERTIFIED_BY_ANOTHER
- NOT_CERTIFIED
document_filename:
maxLength: 255
minLength: 0
description: The filename of the document
type: string
example: thedeed.pdf
DocumentReference:
maxLength: 50
minLength: 1
pattern: ^[A-Za-z0-9-?,_]+$
type: string
description: Unique identifier for documents, used to reference documents from elsewhere in the spec
example: signed_charge
OverseasAddress:
type: object
description: The address of a premise outside the UK
required:
- country
allOf:
- $ref: '#/components/schemas/AddressDetails'
- type: object
properties:
care_of_name:
maxLength: 200
minLength: 0
type: string
description: The care of name to address correspondence to
country:
maxLength: 35
minLength: 0
type: string
description: The country the address resides in
line1:
maxLength: 35
minLength: 0
type: string
description: The first line of the address, may differ per country/region
line2:
maxLength: 35
minLength: 0
type: string
description: The second line of the address, may differ per country/region
line3:
maxLength: 35
minLength: 0
type: string
description: The third line of the address, may differ per country/region
line4:
maxLength: 35
minLength: 0
type: string
description: The fourth line of the address, may differ per country/region
line5:
maxLength: 35
minLength: 0
type: string
description: The fifth line of the address, may differ per country/region
TransactionDetails:
required:
- type
type: object
description: Details of the transaction that apply to all transaction types
properties:
type:
type: string
description: The overall type of the transaction (Transfer, Charge, Discharge, Amount)
discriminator:
propertyName: type
PrivateIndividual:
required:
- surname
type: object
description: A party object to capture infomation about a private individual
allOf:
- $ref: '#/components/schemas/PartyDetails'
- type: object
properties:
forenames:
maxLength: 366
minLength: 0
type: string
description: Forenames of a private individual
example: John
surname:
maxLength: 366
minLength: 0
type: string
description: The surname of a private individual
example: Doe
UKCompany:
required:
- company_number
- organisation_name
type: object
description: A party object to capture infomation about an UK company
allOf:
- $ref: '#/components/schemas/PartyDetails'
- type: object
properties:
company_number:
maxLength: 30
minLength: 0
type: string
description: The UK Company Number or UK LLC number
organisation_name:
maxLength: 366
minLength: 0
type: string
description: Full name registered at Companies House or Company name as incorporated in its state of origin
TitleScopeDetails:
required:
- scope
type: object
description: The scope of the title that is being updated
properties:
part_description:
maxLength: 100
minLength: 0
type: string
description: A description of the part of the title being updated
example: red outlined area
scope:
type: string
description: '* `WHOLE` - The whole of the title
* `PART` - Part of the title'
enum:
- WHOLE
- PART
OverseasCompany:
required:
- incorporation_territory
- organisation_name
type: object
description: A party object to capture infomation about an overseas company
allOf:
- $ref: '#/components/schemas/PartyDetails'
- type: object
properties:
company_number:
maxLength: 30
minLength: 0
type: string
description: The UK Company Number or UK LLC number
organisation_name:
maxLength: 366
minLength: 0
type: string
description: Full name registered at Companies House or Company name as incorporated in its state of origin
incorporation_territory:
maxLength: 254
minLength: 0
type: string
description: The territory, country or place where the company was first incorporated
UkAddress:
type: object
description: A UK postal address
required:
- postcode
- post_town
- building_description
allOf:
- $ref: '#/components/schemas/AddressDetails'
- type: object
properties:
building_description:
maxLength: 85
minLength: 0
type: string
description: Name of residential or commercial premise
care_of_name:
maxLength: 200
minLength: 0
type: string
description: The care of name to address correspondence to
department_name:
maxLength: 60
minLength: 0
type: string
description: Used to supplement Organisation Name to identify a department within the organisation
dependent_locality:
maxLength: 35
minLength: 0
type: string
description: Used when the same thoroughfare or street name reoccurs in a Post town
dependent_street:
maxLength: 80
minLength: 0
type: string
description: Used to supplement street, when a street name is used twice in the same post town
double_dependent_locality:
maxLength: 35
minLength: 0
type: string
description: Used to supplement Dependant Locality, when the dependant locality exists twice in the same locality
organisation_name:
maxLength: 60
minLength: 0
type: string
description: The name of the organisation at the address
post_town:
maxLength: 35
minLength: 0
type: string
description: The town of the delivery point of the address
postcode:
maxLength: 8
minLength: 5
type: string
description: A UK postcode
street:
maxLength: 80
minLength: 0
type: string
description: The street of the address
sub_building_description:
maxLength: 40
minLength: 0
type: string
description: Used to identify a specific building when a premise is split into individual units
uprn:
minimum: 1
type: integer
format: int64
description: The Unique Property Reference Number of the address
BypassValidationData:
required:
- comment
- reason
- validation_pointer
- validation_type
type: object
description: Fields to describe which validators to bypass and why
properties:
validation_type:
maxLength: 250
minLength: 1
description: The type of validation to bypass. Should match the 'type' returned within a status API error
type: string
validation_pointer:
maxLength: 250
minLength: 1
description: A JSON pointer to the field in the submission payload to bypass the validation on. Should match the 'pointer' returned within a status API error
type: string
example: /data/customer_reference
reason:
type: string
description: The reason the validation is being bypassed
enum:
- DISAGREE_WITH_REGISTER
- HMLR_DATA_INCORRECT_OR_OUTDATED
- EXCEPTION_NOT_COVERED_BY_BUSINESS_RULES
comment:
maxLength: 250
minLength: 1
description: A user inputted description of why the validation is being bypassed
type: string
EmailAddress:
required:
- email
type: object
description: An object containing the email address of the customer
allOf:
- $ref: '#/components/schemas/AddressDetails'
- type: object
properties:
email:
maxLength: 254
minLength: 0
type: string
description: The email address of the customer
ValueBand:
required:
- lower_value_band
type: object
description: "A range the value of the transaction falls between. Valid bands are:\n* `0 - 100000`\n * `100001 - 200000\n* `200001 - 500000`\n* `500001 - 1000000`\n* `1000001 +`"
properties:
lower_value_band:
minimum: 1
type: integer
format: int32
description: The lower value in the band in pounds
upper_value_band:
minimum: 100000
type: integer
format: int32
description: The upper value in the band in pounds. Not required when lower_value_band equals 1000001
Transfer:
required:
- additional_provisions_code
- consideration_type
- date
- title_guarantee_code
type: object
description: Details about a transfer transaction
allOf:
- $ref: '#/components/schemas/TransactionDetails'
- type: object
properties:
additional_provisions:
type: string
description: The provided additional provisions
additional_provisions_code:
type: string
description: '* `NO_PROVISIONS` - There are no additional provisions
* `MANUAL_TR1_FORM` - The details of the additional provision are on the TR1 form
* `DETAILS_ENTERED` - The details have been provided with the submission'
enum:
- NO_PROVISIONS
- MANUAL_TR1_FORM
- DETAILS_ENTERED
consideration_description:
maxLength: 200
minLength: 0
type: string
description: The consideration, when a consideration_type of OTHER is specified
consideration_type:
type: string
description: '* `MONETARY_VALUE` - The sum received by the transferor from the transferee for the property
* `NO_MONETARY_VALUE` - The transfer is not for money or anything that has a monetary value
* `OTHER` - to be specified in consideration_description'
enum:
- MONETARY_VALUE
- NO_MONETARY_VALUE
- OTHER
date:
type: string
format: date
description: The date of the transfer, in the format yyyy-MM-dd
title_guarantee_code:
type: string
description: '* `FULL` - the transferor(s) guarantee, to the best of their knowledge, that there are no financial charges/encumbrances (such as mortgages) or other third party interests (such as rights of way/leases) which affect the property other than those already revealed to the transferee(s).
* `LIMITED` - a more restricted set of promises by the transferor(s). This guarantees that the transferor(s) have not themselves created, or allowed to be created, any charge, encumbrance or third party interest that still exists at the date of the transfer'
enum:
- FULL
- LIMITED
trust_declaration_type:
type: string
description: '* `JOINT_TENANTS` - The transferees are joint tenants.
* `TENANTS_IN_COMMON` - The transferees are tenants in common
* `TRUST_DETAILS` - Details of the trust declaration will be provided in the application
* `FORM_JO` - The trust details will be provided in an attached FormJO document'
enum:
- JOINT_TENANTS
- TENANTS_IN_COMMON
- TRUST_DETAILS
- FORM_JO
trust_details:
maxLength: 300
minLength: 0
type: string
description: Details of the trust declaration, to be provided when trust_declaration_type is TRUST_DETAILS
value:
minimum: 0
type: integer
format: int32
description: Transaction value of the equity being transferred (including VAT if applicable) in pounds
value_band:
$ref: '#/components/schemas/ValueBand'
full_value_of_property_band:
$ref: '#/components/schemas/ValueBand'
full_value_of_property:
type: integer
format: int32
description: Full value of the property in the title(s) in pounds
outstanding_charge:
type: integer
format: int32
description: Value in pounds of any outstanding charge if applicable
Address:
required:
- details
type: object
description: An object containing an address, where the address details may be one of multiple types
properties:
details:
oneOf:
- $ref: '#/components/schemas/BfpoAddress'
- $ref: '#/components/schemas/DxAddress'
- $ref: '#/components/schemas/EmailAddress'
- $ref: '#/components/schemas/OverseasAddress'
- $ref: '#/components/schemas/PoBoxAddress'
- $ref: '#/components/schemas/UkAddress'
ApplicationCreationResponse:
type: object
description: The response from the application submission endpoint
properties:
application_request_id:
type: string
description: The ID of the application submission request
example: 12345678-1234-1234-1234-123546789abc
AmountDetails:
type: object
description: A type of TransactionDetails that captures the value of the transaction
allOf:
- $ref: '#/components/schemas/TransactionDetails'
- type: object
properties:
value:
minimum: 0
description: The value associated with the transaction in pounds
type: integer
format: int32
value_band:
$ref: '#/components/schemas/ValueBand'
full_value_of_property_band:
$ref: '#/components/
# --- truncated at 32 KB (76 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/hm-land-registry/refs/heads/main/openapi/hm-land-registry-submit-an-application-api-api-openapi.yml