{"openapi":"3.1.0","info":{"title":"Property Intelligence API","version":"1.0.0","description":"Independent API for England planning data and for listing structure, supplied-property comparison, and investment metrics. Planning operations use the Planning Data API. Listing operations use caller-supplied figures or one public page, and nearby features use OpenStreetMap when it answers. Paid with x402 exact USDC on Base. No account is required.","contact":{"email":"support@brainiac.software"},"x-guidance":"BRAINIAC.software is a pay-per-call API for software agents. No account or API key is required.\nPayment uses the x402 protocol with exact USDC on Base (chain id 8453). Each POST operation has a fixed USD price.\nHow to call an operation:\n1. POST a JSON body matching the operation's requestBody schema to the operation path. Include an Idempotency-Key header (64 hex characters, 32 random bytes).\n2. If you have not paid, the server responds 402 with payment requirements in the body. Pay the exact amount to the payTo address on Base.\n3. Retry the identical request with the same Idempotency-Key and add a payment-signature header containing the x402 payment payload. On success (200) the operation result is returned.\n4. Reuse the same Idempotency-Key only for retries of the same operation and request body; it will not be charged twice.\nAll outputs are compliance prechecks, drafts, or data lookups for human review. They are not official determinations, legal advice, identity confirmation, or certified filings. Verify time-sensitive or official data with the cited source before acting."},"servers":[{"url":"https://www.brainiac.software"}],"paths":{"/api/v1/property-intelligence/overview":{"post":{"operationId":"property_overview","summary":"Property overview","description":"Retrieve available planning and heritage information for a property using UPRN, coordinates, or postcode.","tags":["property-intelligence"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"uprn":{"type":"string"},"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"postcode":{"type":"string"}},"additionalProperties":false},"example":{"uprn":"10008315764"}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Fresh random 32-byte value encoded as 64 hexadecimal characters. Reuse unchanged only for retries of the same operation and request.","schema":{"type":"string","pattern":"^[0-9a-fA-F]{64}$"}}],"responses":{"200":{"description":"Illustrative endpoint-specific JSON response shape. Conditional fields depend on the result and data-source availability.","content":{"application/json":{"schema":{"type":"object","properties":{"retrievedAt":{"type":"string"},"overview":{"type":"object","properties":{"input":{"type":"object","properties":{"uprn":{"type":"string"}},"additionalProperties":true},"totalEntities":{"type":"number"},"byDataset":{"type":"object","properties":{"conservation-area":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"dataset":{"type":"string"},"reference":{"type":"string"},"start-date":{"type":"string"},"point":{"type":"string"}},"additionalProperties":true}},"listed-building":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"dataset":{"type":"string"},"reference":{"type":"string"},"start-date":{"type":"string"},"listed_building_grade":{"type":"string"},"point":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true}},"additionalProperties":true},"sources":{"type":"array","items":{"type":"object","properties":{"source":{"type":"string"},"url":{"type":"string"},"retrievedAt":{"type":"string"}},"additionalProperties":true}},"limitations":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"example":{"retrievedAt":"2026-10-29T12:00:00.000Z","overview":{"input":{"uprn":"10008315764"},"totalEntities":3,"byDataset":{"conservation-area":[{"name":"Trafalgar Square","dataset":"conservation-area","reference":"CONARA/1300","start-date":"2008-02-21","point":"POINT (-0.126727 51.508303)"}],"listed-building":[{"name":"10 Downing Street","dataset":"listed-building","reference":"123456","start-date":"1970-01-01","listed_building_grade":"Grade I","point":"POINT (-0.1276 51.5031)"}]}},"sources":[{"source":"Planning Data API","url":"https://www.planning.data.gov.uk/entity.json","retrievedAt":"2026-10-29T12:00:00.000Z"}],"limitations":["Data coverage varies by local planning authority.","An absence of results does not mean no constraints exist.","UPRN queries are more precise than coordinates for registered properties."]}}}},"400":{"description":"Invalid JSON or request schema."},"402":{"description":"Payment Required"},"409":{"description":"Idempotency conflict, in-progress payment, or expired result cache. Reusing the key cannot trigger a second charge."},"413":{"description":"Request body exceeds the 24 MB limit."},"500":{"description":"Operation failed. With upfront settlement this may occur after payment; reuse the same idempotency key to retrieve the stored result."},"503":{"description":"Payment or retry-safe result storage is unavailable; the operation is not run."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.05"},"protocols":[{"x402":{}}]}}},"/api/v1/property-intelligence/constraints/check":{"post":{"operationId":"check_planning_constraints","summary":"Check planning constraints","description":"Check specific planning constraints (conservation areas, listed buildings, flood risk, etc.) for a location.","tags":["property-intelligence"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"uprn":{"type":"string"},"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"datasets":{"type":"array","items":{"type":"string","enum":["conservation-area","listed-building","green-belt","flood-risk-zone","article-4-direction-area","tree-preservation-zone","scheduled-monument","site-of-special-scientific-interest","ancient-woodland","heritage-at-risk","area-of-outstanding-natural-beauty"]}}},"additionalProperties":false},"example":{"latitude":51.5074,"longitude":-0.1278}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Fresh random 32-byte value encoded as 64 hexadecimal characters. Reuse unchanged only for retries of the same operation and request.","schema":{"type":"string","pattern":"^[0-9a-fA-F]{64}$"}}],"responses":{"200":{"description":"Illustrative endpoint-specific JSON response shape. Conditional fields depend on the result and data-source availability.","content":{"application/json":{"schema":{"type":"object","properties":{"retrievedAt":{"type":"string"},"constraints":{"type":"object","properties":{"input":{"type":"object","properties":{"latitude":{"type":"number"},"longitude":{"type":"number"}},"additionalProperties":true},"datasetsQueried":{"type":"array","items":{"type":"string"}},"totalConstraints":{"type":"number"},"constraints":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"dataset":{"type":"string"},"reference":{"type":"string"},"startDate":{"type":"string"},"documentUrl":{"type":"string"},"point":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"sources":{"type":"array","items":{"type":"object","properties":{"source":{"type":"string"},"url":{"type":"string"},"retrievedAt":{"type":"string"}},"additionalProperties":true}},"limitations":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"example":{"retrievedAt":"2026-10-29T12:00:00.000Z","constraints":{"input":{"latitude":51.5074,"longitude":-0.1278},"datasetsQueried":["conservation-area","listed-building","green-belt","flood-risk-zone"],"totalConstraints":2,"constraints":[{"name":"Trafalgar Square","dataset":"conservation-area","reference":"CONARA/1300","startDate":"2008-02-21","documentUrl":"https://www.westminster.gov.uk/media/document/trafalgar-square-conservation-area-audit-spg","point":"POINT (-0.126727 51.508303)"},{"name":"10 Downing Street","dataset":"listed-building","reference":"123456","startDate":"1970-01-01","documentUrl":"https://historicengland.org.uk/listing/the-list/list-entry/123456","point":"POINT (-0.1276 51.5031)","listedBuildingGrade":"Grade I"}]},"sources":[{"source":"Planning Data API","url":"https://www.planning.data.gov.uk/entity.json","retrievedAt":"2026-10-29T12:00:00.000Z"}],"limitations":["Data coverage varies by local planning authority.","An absence of results does not mean no constraints exist.","UPRN queries are more precise than coordinates for registered properties."]}}}},"400":{"description":"Invalid JSON or request schema."},"402":{"description":"Payment Required"},"409":{"description":"Idempotency conflict, in-progress payment, or expired result cache. Reusing the key cannot trigger a second charge."},"413":{"description":"Request body exceeds the 24 MB limit."},"500":{"description":"Operation failed. With upfront settlement this may occur after payment; reuse the same idempotency key to retrieve the stored result."},"503":{"description":"Payment or retry-safe result storage is unavailable; the operation is not run."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.05"},"protocols":[{"x402":{}}]}}},"/api/v1/property-intelligence/planning/search":{"post":{"operationId":"search_planning_applications","summary":"Search planning applications","description":"Search planning applications by local planning authority, date range, or other filters.","tags":["property-intelligence"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"localPlanningAuthority":{"type":"string"},"startDateYear":{"type":"integer","minimum":2000,"maximum":2100},"startDateMonth":{"type":"integer","minimum":1,"maximum":12},"startDateDay":{"type":"integer","minimum":1,"maximum":31},"startDateMatch":{"type":"string","enum":["since","on","before"]},"limit":{"default":50,"type":"integer","minimum":1,"maximum":100},"offset":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["limit","offset"],"additionalProperties":false},"example":{"startDateYear":2025,"startDateMonth":5,"startDateDay":1,"startDateMatch":"since","limit":50}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Fresh random 32-byte value encoded as 64 hexadecimal characters. Reuse unchanged only for retries of the same operation and request.","schema":{"type":"string","pattern":"^[0-9a-fA-F]{64}$"}}],"responses":{"200":{"description":"Illustrative endpoint-specific JSON response shape. Conditional fields depend on the result and data-source availability.","content":{"application/json":{"schema":{"type":"object","properties":{"retrievedAt":{"type":"string"},"applications":{"type":"object","properties":{"filters":{"type":"object","properties":{"localPlanningAuthority":{"type":"null"},"startDate":{"type":"string"},"startDateMatch":{"type":"string"}},"additionalProperties":true},"totalApplications":{"type":"number"},"limit":{"type":"number"},"offset":{"type":"number"},"applications":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"reference":{"type":"string"},"dataset":{"type":"string"},"startDate":{"type":"string"},"address":{"type":"string"},"point":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"sources":{"type":"array","items":{"type":"object","properties":{"source":{"type":"string"},"url":{"type":"string"},"retrievedAt":{"type":"string"}},"additionalProperties":true}},"limitations":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"example":{"retrievedAt":"2026-10-29T12:00:00.000Z","applications":{"filters":{"localPlanningAuthority":null,"startDate":"2025-5-1","startDateMatch":"since"},"totalApplications":50,"limit":50,"offset":0,"applications":[{"name":"Erection of two-storey rear extension","reference":"APP/2025/00123","dataset":"planning-application","startDate":"2025-05-15","address":"123 Main Street, London","point":"POINT (-0.1278 51.5074)"}]},"sources":[{"source":"Planning Data API","url":"https://www.planning.data.gov.uk/entity.json","retrievedAt":"2026-10-29T12:00:00.000Z"}],"limitations":["Planning applications data is still subject to development and coverage limitations.","Local planning authorities are not currently required to share application data to this specification.","Do not claim complete coverage of planning applications."]}}}},"400":{"description":"Invalid JSON or request schema."},"402":{"description":"Payment Required"},"409":{"description":"Idempotency conflict, in-progress payment, or expired result cache. Reusing the key cannot trigger a second charge."},"413":{"description":"Request body exceeds the 24 MB limit."},"500":{"description":"Operation failed. With upfront settlement this may occur after payment; reuse the same idempotency key to retrieve the stored result."},"503":{"description":"Payment or retry-safe result storage is unavailable; the operation is not run."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.05"},"protocols":[{"x402":{}}]}}},"/api/v1/property-intelligence/site/report":{"post":{"operationId":"generate_site_report","summary":"Generate site report","description":"Generate a comprehensive site report combining constraints, brownfield land, and planning applications.","tags":["property-intelligence"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"uprn":{"type":"string"},"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"postcode":{"type":"string"},"includeBrownfield":{"default":true,"type":"boolean"},"includePlanningApplications":{"default":true,"type":"boolean"}},"required":["includeBrownfield","includePlanningApplications"],"additionalProperties":false},"example":{"uprn":"10008315764","includeBrownfield":true,"includePlanningApplications":true}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Fresh random 32-byte value encoded as 64 hexadecimal characters. Reuse unchanged only for retries of the same operation and request.","schema":{"type":"string","pattern":"^[0-9a-fA-F]{64}$"}}],"responses":{"200":{"description":"Illustrative endpoint-specific JSON response shape. Conditional fields depend on the result and data-source availability.","content":{"application/json":{"schema":{"type":"object","properties":{"retrievedAt":{"type":"string"},"report":{"type":"object","properties":{"input":{"type":"object","properties":{"uprn":{"type":"string"}},"additionalProperties":true},"totalEntities":{"type":"number"},"byDataset":{"type":"object","properties":{"conservation-area":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"dataset":{"type":"string"}},"additionalProperties":true}},"listed-building":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"dataset":{"type":"string"}},"additionalProperties":true}},"brownfield-land":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"dataset":{"type":"string"}},"additionalProperties":true}},"planning-application":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"dataset":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"summary":{"type":"object","properties":{"constraints":{"type":"number"},"brownfieldSites":{"type":"number"},"planningApplications":{"type":"number"}},"additionalProperties":true}},"additionalProperties":true},"sources":{"type":"array","items":{"type":"object","properties":{"source":{"type":"string"},"url":{"type":"string"},"retrievedAt":{"type":"string"}},"additionalProperties":true}},"limitations":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"example":{"retrievedAt":"2026-10-29T12:00:00.000Z","report":{"input":{"uprn":"10008315764"},"totalEntities":15,"byDataset":{"conservation-area":[{"name":"Trafalgar Square","dataset":"conservation-area"}],"listed-building":[{"name":"10 Downing Street","dataset":"listed-building"}],"brownfield-land":[{"name":"Former Industrial Site","dataset":"brownfield-land"}],"planning-application":[{"name":"New Development","dataset":"planning-application"}]},"summary":{"constraints":2,"brownfieldSites":1,"planningApplications":12}},"sources":[{"source":"Planning Data API","url":"https://www.planning.data.gov.uk/entity.json","retrievedAt":"2026-10-29T12:00:00.000Z"}],"limitations":["Data coverage varies by local planning authority.","An absence of results does not mean no constraints exist.","Planning applications data is still subject to development and coverage limitations.","Do not claim complete coverage of planning applications.","Brownfield land coverage varies by local planning authority data sharing."]}}}},"400":{"description":"Invalid JSON or request schema."},"402":{"description":"Payment Required"},"409":{"description":"Idempotency conflict, in-progress payment, or expired result cache. Reusing the key cannot trigger a second charge."},"413":{"description":"Request body exceeds the 24 MB limit."},"500":{"description":"Operation failed. With upfront settlement this may occur after payment; reuse the same idempotency key to retrieve the stored result."},"503":{"description":"Payment or retry-safe result storage is unavailable; the operation is not run."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.10"},"protocols":[{"x402":{}}]}}},"/api/v1/property-intelligence/listing-extract":{"post":{"operationId":"extract_a_listing","summary":"Extract a listing","description":"Read price, rent, address, and room counts from caller-supplied listing text or one public listing page. Missing figures stay blank.","tags":["property-intelligence"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"url":{"type":"string","minLength":8,"maxLength":2000,"pattern":"^https?:\\/\\/\\S+$"},"title":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","minLength":1,"maxLength":20000},"text":{"type":"string","minLength":1,"maxLength":20000},"address":{"type":"string","minLength":1,"maxLength":300},"price":{"type":"number","minimum":0,"maximum":1000000000000},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"rent":{"type":"number","minimum":0,"maximum":1000000000000},"rentPeriod":{"type":"string","enum":["month","year"]},"bedrooms":{"type":"integer","minimum":0,"maximum":100},"bathrooms":{"type":"number","minimum":0,"maximum":100},"floorAreaSqm":{"type":"number","exclusiveMinimum":0,"maximum":1000000},"propertyType":{"type":"string","minLength":1,"maxLength":80},"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"annualCosts":{"type":"number","minimum":0,"maximum":1000000000000},"deposit":{"type":"number","minimum":0,"maximum":1000000000000},"mortgageRate":{"type":"number","minimum":0,"maximum":1}},"additionalProperties":false},"example":{"text":"Title: Dock Street flat\nAddress: 12 Dock Street, London\nProperty type: Flat\nPrice: £250,000\nRent: £1,000 pcm\nA 2 bedroom, 1 bathroom flat of 55 sqm with a garden and parking.\nStunning location."}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Fresh random 32-byte value encoded as 64 hexadecimal characters. Reuse unchanged only for retries of the same operation and request.","schema":{"type":"string","pattern":"^[0-9a-fA-F]{64}$"}}],"responses":{"200":{"description":"Illustrative endpoint-specific JSON response shape. Conditional fields depend on the result and data-source availability.","content":{"application/json":{"schema":{"type":"object","properties":{"checkedAt":{"type":"string"},"officialValuation":{"type":"boolean"},"url":{"type":"string"},"fields":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"source":{"type":"string"}},"additionalProperties":true}},"findings":{"type":"array","items":{}},"limitations":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"example":{"checkedAt":"2026-11-02T19:00:00.000Z","officialValuation":false,"url":"","fields":[{"name":"title","value":"Dock Street flat","source":"listing"},{"name":"address","value":"12 Dock Street, London","source":"listing"},{"name":"propertyType","value":"Flat","source":"listing"},{"name":"price","value":"250000","source":"listing"},{"name":"currency","value":"GBP","source":"listing"},{"name":"rent","value":"1000","source":"listing"},{"name":"rentPeriod","value":"month","source":"listing"},{"name":"bedrooms","value":"2","source":"listing"},{"name":"bathrooms","value":"1","source":"listing"},{"name":"floorAreaSqm","value":"55","source":"listing"}],"findings":[],"limitations":["This is not an official valuation.","Prices, rents, and yields are calculated only from figures supplied in the request or printed on the fetched page.","Crime statistics, planning permissions, and ownership were not checked.","OpenStreetMap results are nearby map features, not a statement about the property."]}}}},"400":{"description":"Invalid JSON or request schema."},"402":{"description":"Payment Required"},"409":{"description":"Idempotency conflict, in-progress payment, or expired result cache. Reusing the key cannot trigger a second charge."},"413":{"description":"Request body exceeds the 24 MB limit."},"500":{"description":"Operation failed. With upfront settlement this may occur after payment; reuse the same idempotency key to retrieve the stored result."},"503":{"description":"Payment or retry-safe result storage is unavailable; the operation is not run."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.05"},"protocols":[{"x402":{}}]}}},"/api/v1/property-intelligence/details-normalize":{"post":{"operationId":"normalize_listing_details","summary":"Normalize listing details","description":"Return one listing record from supplied fields or printed text. A supplied value is kept when it conflicts with the printed value.","tags":["property-intelligence"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"url":{"type":"string","minLength":8,"maxLength":2000,"pattern":"^https?:\\/\\/\\S+$"},"title":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","minLength":1,"maxLength":20000},"text":{"type":"string","minLength":1,"maxLength":20000},"address":{"type":"string","minLength":1,"maxLength":300},"price":{"type":"number","minimum":0,"maximum":1000000000000},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"rent":{"type":"number","minimum":0,"maximum":1000000000000},"rentPeriod":{"type":"string","enum":["month","year"]},"bedrooms":{"type":"integer","minimum":0,"maximum":100},"bathrooms":{"type":"number","minimum":0,"maximum":100},"floorAreaSqm":{"type":"number","exclusiveMinimum":0,"maximum":1000000},"propertyType":{"type":"string","minLength":1,"maxLength":80},"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"annualCosts":{"type":"number","minimum":0,"maximum":1000000000000},"deposit":{"type":"number","minimum":0,"maximum":1000000000000},"mortgageRate":{"type":"number","minimum":0,"maximum":1}},"additionalProperties":false},"example":{"title":"Dock Street flat","address":"12 Dock Street, London","price":250000,"currency":"GBP","rent":1000,"rentPeriod":"month","bedrooms":2,"bathrooms":1,"floorAreaSqm":55,"propertyType":"Flat"}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Fresh random 32-byte value encoded as 64 hexadecimal characters. Reuse unchanged only for retries of the same operation and request.","schema":{"type":"string","pattern":"^[0-9a-fA-F]{64}$"}}],"responses":{"200":{"description":"Illustrative endpoint-specific JSON response shape. Conditional fields depend on the result and data-source availability.","content":{"application/json":{"schema":{"type":"object","properties":{"checkedAt":{"type":"string"},"officialValuation":{"type":"boolean"},"url":{"type":"string"},"title":{"type":"string"},"address":{"type":"string"},"propertyType":{"type":"string"},"price":{"type":"number"},"currency":{"type":"string"},"rent":{"type":"number"},"rentPeriod":{"type":"string"},"bedrooms":{"type":"number"},"bathrooms":{"type":"number"},"floorAreaSqm":{"type":"number"},"latitude":{"type":"null"},"longitude":{"type":"null"},"fields":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"source":{"type":"string"}},"additionalProperties":true}},"findings":{"type":"array","items":{}},"limitations":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"example":{"checkedAt":"2026-11-02T19:00:00.000Z","officialValuation":false,"url":"","title":"Dock Street flat","address":"12 Dock Street, London","propertyType":"Flat","price":250000,"currency":"GBP","rent":1000,"rentPeriod":"month","bedrooms":2,"bathrooms":1,"floorAreaSqm":55,"latitude":null,"longitude":null,"fields":[{"name":"title","value":"Dock Street flat","source":"caller"},{"name":"address","value":"12 Dock Street, London","source":"caller"},{"name":"propertyType","value":"Flat","source":"caller"},{"name":"price","value":"250000","source":"caller"},{"name":"currency","value":"GBP","source":"caller"},{"name":"rent","value":"1000","source":"caller"},{"name":"rentPeriod","value":"month","source":"caller"},{"name":"bedrooms","value":"2","source":"caller"},{"name":"bathrooms","value":"1","source":"caller"},{"name":"floorAreaSqm","value":"55","source":"caller"}],"findings":[],"limitations":["This is not an official valuation.","Prices, rents, and yields are calculated only from figures supplied in the request or printed on the fetched page.","Crime statistics, planning permissions, and ownership were not checked.","OpenStreetMap results are nearby map features, not a statement about the property."]}}}},"400":{"description":"Invalid JSON or request schema."},"402":{"description":"Payment Required"},"409":{"description":"Idempotency conflict, in-progress payment, or expired result cache. Reusing the key cannot trigger a second charge."},"413":{"description":"Request body exceeds the 24 MB limit."},"500":{"description":"Operation failed. With upfront settlement this may occur after payment; reuse the same idempotency key to retrieve the stored result."},"503":{"description":"Payment or retry-safe result storage is unavailable; the operation is not run."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.03"},"protocols":[{"x402":{}}]}}},"/api/v1/property-intelligence/description-analyze":{"post":{"operationId":"analyze_a_listing_description","summary":"Analyze a listing description","description":"List bedrooms, area, amenities, and marketing phrases only where those words are printed. Marketing words are not a quality score.","tags":["property-intelligence"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"description":{"type":"string","minLength":1,"maxLength":20000}},"required":["description"],"additionalProperties":false},"example":{"description":"A 2 bedroom, 1 bathroom flat of 55 sqm with a garden and parking. Stunning location."}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Fresh random 32-byte value encoded as 64 hexadecimal characters. Reuse unchanged only for retries of the same operation and request.","schema":{"type":"string","pattern":"^[0-9a-fA-F]{64}$"}}],"responses":{"200":{"description":"Illustrative endpoint-specific JSON response shape. Conditional fields depend on the result and data-source availability.","content":{"application/json":{"schema":{"type":"object","properties":{"checkedAt":{"type":"string"},"officialValuation":{"type":"boolean"},"bedrooms":{"type":"number"},"bathrooms":{"type":"number"},"floorAreaSqm":{"type":"number"},"amenities":{"type":"array","items":{"type":"string"}},"marketingPhrases":{"type":"array","items":{"type":"string"}},"findings":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"code":{"type":"string"},"detail":{"type":"string"}},"additionalProperties":true}},"limitations":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"example":{"checkedAt":"2026-11-02T19:00:00.000Z","officialValuation":false,"bedrooms":2,"bathrooms":1,"floorAreaSqm":55,"amenities":["garden","parking"],"marketingPhrases":["stunning"],"findings":[{"kind":"observed","code":"description_only","detail":"Bedrooms, bathrooms, area, and amenities are reported only where those words are printed. Marketing words are not a quality score."}],"limitations":["This is not an official valuation.","Prices, rents, and yields are calculated only from figures supplied in the request or printed on the fetched page.","Crime statistics, planning permissions, and ownership were not checked.","OpenStreetMap results are nearby map features, not a statement about the property."]}}}},"400":{"description":"Invalid JSON or request schema."},"402":{"description":"Payment Required"},"409":{"description":"Idempotency conflict, in-progress payment, or expired result cache. Reusing the key cannot trigger a second charge."},"413":{"description":"Request body exceeds the 24 MB limit."},"500":{"description":"Operation failed. With upfront settlement this may occur after payment; reuse the same idempotency key to retrieve the stored result."},"503":{"description":"Payment or retry-safe result storage is unavailable; the operation is not run."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.03"},"protocols":[{"x402":{}}]}}},"/api/v1/property-intelligence/area-context":{"post":{"operationId":"read_area_context","summary":"Read area context","description":"Look up the OpenStreetMap place for a supplied address or coordinates. Planning, crime, ownership, and valuation stay unavailable.","tags":["property-intelligence"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"address":{"type":"string","minLength":1,"maxLength":300},"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"additionalProperties":false},"example":{"latitude":51.5074,"longitude":-0.1278}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Fresh random 32-byte value encoded as 64 hexadecimal characters. Reuse unchanged only for retries of the same operation and request.","schema":{"type":"string","pattern":"^[0-9a-fA-F]{64}$"}}],"responses":{"200":{"description":"Illustrative endpoint-specific JSON response shape. Conditional fields depend on the result and data-source availability.","content":{"application/json":{"schema":{"type":"object","properties":{"checkedAt":{"type":"string"},"officialValuation":{"type":"boolean"},"status":{"type":"string"},"displayName":{"type":"string"},"locality":{"type":"string"},"city":{"type":"string"},"postcode":{"type":"string"},"country":{"type":"string"},"latitude":{"type":"number"},"longitude":{"type":"number"},"planning":{"type":"string"},"crime":{"type":"string"},"ownership":{"type":"string"},"valuation":{"type":"string"},"findings":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"code":{"type":"string"},"detail":{"type":"string"}},"additionalProperties":true}},"limitations":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"example":{"checkedAt":"2026-11-02T19:00:00.000Z","officialValuation":false,"status":"observed","displayName":"Mileage Central Point of London Plaque, Charing Cross, Westminster, Covent Garden, City of Westminster, Greater London, England, WC2N 5DU, United Kingdom","locality":"Covent Garden","city":"City of Westminster","postcode":"WC2N 5DU","country":"United Kingdom","latitude":51.5074062,"longitude":-0.1276915,"planning":"unavailable","crime":"unavailable","ownership":"unavailable","valuation":"unavailable","findings":[{"kind":"observed","code":"osm_place","detail":"The place is the OpenStreetMap reverse result for the supplied coordinates."}],"limitations":["This is not an official valuation.","Prices, rents, and yields are calculated only from figures supplied in the request or printed on the fetched page.","Crime statistics, planning permissions, and ownership were not checked.","OpenStreetMap results are nearby map features, not a statement about the property."]}}}},"400":{"description":"Invalid JSON or request schema."},"402":{"description":"Payment Required"},"409":{"description":"Idempotency conflict, in-progress payment, or expired result cache. Reusing the key cannot trigger a second charge."},"413":{"description":"Request body exceeds the 24 MB limit."},"500":{"description":"Operation failed. With upfront settlement this may occur after payment; reuse the same idempotency key to retrieve the stored result."},"503":{"description":"Payment or retry-safe result storage is unavailable; the operation is not run."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.04"},"protocols":[{"x402":{}}]}}},"/api/v1/property-intelligence/location-features":{"post":{"operationId":"list_nearby_location_features","summary":"List nearby location features","description":"List schools, hospitals, pharmacies, supermarkets, stations, and parks that OpenStreetMap places within 500 metres. A missing feature is not treated as absent.","tags":["property-intelligence"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"address":{"type":"string","minLength":1,"maxLength":300},"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"additionalProperties":false},"example":{"latitude":51.5074,"longitude":-0.1278}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Fresh random 32-byte value encoded as 64 hexadecimal characters. Reuse unchanged only for retries of the same operation and request.","schema":{"type":"string","pattern":"^[0-9a-fA-F]{64}$"}}],"responses":{"200":{"description":"Illustrative endpoint-specific JSON response shape. Conditional fields depend on the result and data-source availability.","content":{"application/json":{"schema":{"type":"object","properties":{"checkedAt":{"type":"string"},"officialValuation":{"type":"boolean"},"status":{"type":"string"},"latitude":{"type":"number"},"longitude":{"type":"number"},"features":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"category":{"type":"string"},"distanceMeters":{"type":"number"}},"additionalProperties":true}},"findings":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"code":{"type":"string"},"detail":{"type":"string"}},"additionalProperties":true}},"limitations":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"example":{"checkedAt":"2026-11-02T19:00:00.000Z","officialValuation":false,"status":"features","latitude":51.5074,"longitude":-0.1278,"features":[{"name":"Charing Cross","category":"station","distanceMeters":116},{"name":"Boots","category":"pharmacy","distanceMeters":238},{"name":"Jumbo","category":"supermarket","distanceMeters":246},{"name":"park","category":"park","distanceMeters":248},{"name":"Charing Cross","category":"station","distanceMeters":285},{"name":"Superdrug","category":"pharmacy","distanceMeters":336},{"name":"Whitehall Garden","category":"park","distanceMeters":363},{"name":"Japan Centre","category":"supermarket","distanceMeters":364},{"name":"Leicester Square","category":"park","distanceMeters":375},{"name":"Boots","category":"pharmacy","distanceMeters":382},{"name":"Embankment","category":"station","distanceMeters":385},{"name":"Leicester Square","category":"station","distanceMeters":453},{"name":"Victoria Embankment Gardens","category":"park","distanceMeters":463}],"findings":[{"kind":"observed","code":"osm_features","detail":"Features come from OpenStreetMap within 500 metres. A missing feature was not treated as absent from the area."}],"limitations":["This is not an official valuation.","Prices, rents, and yields are calculated only from figures supplied in the request or printed on the fetched page.","Crime statistics, planning permissions, and ownership were not checked.","OpenStreetMap results are nearby map features, not a statement about the property."]}}}},"400":{"description":"Invalid JSON or request schema."},"402":{"description":"Payment Required"},"409":{"description":"Idempotency conflict, in-progress payment, or expired result cache. Reusing the key cannot trigger a second charge."},"413":{"description":"Request body exceeds the 24 MB limit."},"500":{"description":"Operation failed. With upfront settlement this may occur after payment; reuse the same idempotency key to retrieve the stored result."},"503":{"description":"Payment or retry-safe result storage is unavailable; the operation is not run."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.05"},"protocols":[{"x402":{}}]}}},"/api/v1/property-intelligence/amenities-extract":{"post":{"operationId":"extract_amenities","summary":"Extract amenities","description":"Keep amenities printed in the description separate from amenities copied from the request. Caller amenities are not checked against the property.","tags":["property-intelligence"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"description":{"type":"string","minLength":1,"maxLength":20000},"amenities":{"maxItems":40,"type":"array","items":{"type":"string","minLength":1,"maxLength":80}}},"additionalProperties":false},"example":{"description":"A flat with a garden and parking.","amenities":["concierge"]}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Fresh random 32-byte value encoded as 64 hexadecimal characters. Reuse unchanged only for retries of the same operation and request.","schema":{"type":"string","pattern":"^[0-9a-fA-F]{64}$"}}],"responses":{"200":{"description":"Illustrative endpoint-specific JSON response shape. Conditional fields depend on the result and data-source availability.","content":{"application/json":{"schema":{"type":"object","properties":{"checkedAt":{"type":"string"},"officialValuation":{"type":"boolean"},"amenities":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"source":{"type":"string"}},"additionalProperties":true}},"findings":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"code":{"type":"string"},"detail":{"type":"string"}},"additionalProperties":true}},"limitations":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"example":{"checkedAt":"2026-11-02T19:00:00.000Z","officialValuation":false,"amenities":[{"name":"garden","source":"listing"},{"name":"parking","source":"listing"},{"name":"concierge","source":"caller"}],"findings":[{"kind":"observed","code":"amenity_sources","detail":"Printed amenities are words found in the description. Caller amenities are copied from the request and are not checked against the property."}],"limitations":["This is not an official valuation.","Prices, rents, and yields are calculated only from figures supplied in the request or printed on the fetched page.","Crime statistics, planning permissions, and ownership were not checked.","OpenStreetMap results are nearby map features, not a statement about the property."]}}}},"400":{"description":"Invalid JSON or request schema."},"402":{"description":"Payment Required"},"409":{"description":"Idempotency conflict, in-progress payment, or expired result cache. Reusing the key cannot trigger a second charge."},"413":{"description":"Request body exceeds the 24 MB limit."},"500":{"description":"Operation failed. With upfront settlement this may occur after payment; reuse the same idempotency key to retrieve the stored result."},"503":{"description":"Payment or retry-safe result storage is unavailable; the operation is not run."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.03"},"protocols":[{"x402":{}}]}}},"/api/v1/property-intelligence/listing-duplicate-detect":{"post":{"operationId":"detect_duplicate_listings","summary":"Detect duplicate listings","description":"Compare at least two supplied listings. The same address is a duplicate. The same price, currency, and bedroom count is only a possible match.","tags":["property-intelligence"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"listings":{"minItems":2,"maxItems":20,"type":"array","items":{"type":"object","properties":{"url":{"type":"string","minLength":8,"maxLength":2000,"pattern":"^https?:\\/\\/\\S+$"},"title":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","minLength":1,"maxLength":20000},"text":{"type":"string","minLength":1,"maxLength":20000},"address":{"type":"string","minLength":1,"maxLength":300},"price":{"type":"number","minimum":0,"maximum":1000000000000},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"rent":{"type":"number","minimum":0,"maximum":1000000000000},"rentPeriod":{"type":"string","enum":["month","year"]},"bedrooms":{"type":"integer","minimum":0,"maximum":100},"bathrooms":{"type":"number","minimum":0,"maximum":100},"floorAreaSqm":{"type":"number","exclusiveMinimum":0,"maximum":1000000},"propertyType":{"type":"string","minLength":1,"maxLength":80},"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"annualCosts":{"type":"number","minimum":0,"maximum":1000000000000},"deposit":{"type":"number","minimum":0,"maximum":1000000000000},"mortgageRate":{"type":"number","minimum":0,"maximum":1}},"additionalProperties":false}}},"required":["listings"],"additionalProperties":false},"example":{"listings":[{"title":"A","address":"12 Dock Street, London","price":250000,"currency":"GBP","bedrooms":2},{"title":"B","address":"12 Dock Street London","price":250000,"currency":"GBP","bedrooms":2},{"title":"C","address":"4 Mill Lane, Leeds","price":250000,"currency":"GBP","bedrooms":2}]}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Fresh random 32-byte value encoded as 64 hexadecimal characters. Reuse unchanged only for retries of the same operation and request.","schema":{"type":"string","pattern":"^[0-9a-fA-F]{64}$"}}],"responses":{"200":{"description":"Illustrative endpoint-specific JSON response shape. Conditional fields depend on the result and data-source availability.","content":{"application/json":{"schema":{"type":"object","properties":{"checkedAt":{"type":"string"},"officialValuation":{"type":"boolean"},"status":{"type":"string"},"pairs":{"type":"array","items":{"type":"object","properties":{"left":{"type":"string"},"right":{"type":"string"},"status":{"type":"string"},"evidence":{"type":"string"}},"additionalProperties":true}},"findings":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"code":{"type":"string"},"detail":{"type":"string"}},"additionalProperties":true}},"limitations":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"example":{"checkedAt":"2026-11-02T19:00:00.000Z","officialValuation":false,"status":"duplicates","pairs":[{"left":"A","right":"B","status":"duplicate","evidence":"The supplied addresses match after spacing and punctuation are removed."},{"left":"A","right":"C","status":"possible","evidence":"The price, currency, and bedroom count match, and the addresses differ."},{"left":"B","right":"C","status":"possible","evidence":"The price, currency, and bedroom count match, and the addresses differ."}],"findings":[{"kind":"observed","code":"duplicate_rule","detail":"A duplicate is the same normalized address. The same price, currency, and bedroom count is only a possible match."}],"limitations":["This is not an official valuation.","Prices, rents, and yields are calculated only from figures supplied in the request or printed on the fetched page.","Crime statistics, planning permissions, and ownership were not checked.","OpenStreetMap results are nearby map features, not a statement about the property."]}}}},"400":{"description":"Invalid JSON or request schema."},"402":{"description":"Payment Required"},"409":{"description":"Idempotency conflict, in-progress payment, or expired result cache. Reusing the key cannot trigger a second charge."},"413":{"description":"Request body exceeds the 24 MB limit."},"500":{"description":"Operation failed. With upfront settlement this may occur after payment; reuse the same idempotency key to retrieve the stored result."},"503":{"description":"Payment or retry-safe result storage is unavailable; the operation is not run."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.04"},"protocols":[{"x402":{}}]}}},"/api/v1/property-intelligence/rent-yield-calculate":{"post":{"operationId":"calculate_rent_yield","summary":"Calculate rent yield","description":"Divide the supplied annual rent by the supplied price. Monthly rent is multiplied by 12 only when the period is month. The result is not a valuation.","tags":["property-intelligence"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"url":{"type":"string","minLength":8,"maxLength":2000,"pattern":"^https?:\\/\\/\\S+$"},"title":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","minLength":1,"maxLength":20000},"text":{"type":"string","minLength":1,"maxLength":20000},"address":{"type":"string","minLength":1,"maxLength":300},"price":{"type":"number","minimum":0,"maximum":1000000000000},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"rent":{"type":"number","minimum":0,"maximum":1000000000000},"rentPeriod":{"type":"string","enum":["month","year"]},"bedrooms":{"type":"integer","minimum":0,"maximum":100},"bathrooms":{"type":"number","minimum":0,"maximum":100},"floorAreaSqm":{"type":"number","exclusiveMinimum":0,"maximum":1000000},"propertyType":{"type":"string","minLength":1,"maxLength":80},"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"annualCosts":{"type":"number","minimum":0,"maximum":1000000000000},"deposit":{"type":"number","minimum":0,"maximum":1000000000000},"mortgageRate":{"type":"number","minimum":0,"maximum":1}},"additionalProperties":false},"example":{"price":250000,"rent":1000,"rentPeriod":"month","currency":"GBP"}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Fresh random 32-byte value encoded as 64 hexadecimal characters. Reuse unchanged only for retries of the same operation and request.","schema":{"type":"string","pattern":"^[0-9a-fA-F]{64}$"}}],"responses":{"200":{"description":"Illustrative endpoint-specific JSON response shape. Conditional fields depend on the result and data-source availability.","content":{"application/json":{"schema":{"type":"object","properties":{"checkedAt":{"type":"string"},"officialValuation":{"type":"boolean"},"price":{"type":"number"},"rent":{"type":"number"},"rentPeriod":{"type":"string"},"currency":{"type":"string"},"annualRent":{"type":"number"},"grossYield":{"type":"number"},"findings":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"code":{"type":"string"},"detail":{"type":"string"}},"additionalProperties":true}},"limitations":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"example":{"checkedAt":"2026-11-02T19:00:00.000Z","officialValuation":false,"price":250000,"rent":1000,"rentPeriod":"month","currency":"GBP","annualRent":12000,"grossYield":0.048,"findings":[{"kind":"observed","code":"gross_yield","detail":"Gross yield 0.048 is annual rent 12000 divided by price 250000. It is not a valuation."}],"limitations":["This is not an official valuation.","Prices, rents, and yields are calculated only from figures supplied in the request or printed on the fetched page.","Crime statistics, planning permissions, and ownership were not checked.","OpenStreetMap results are nearby map features, not a statement about the property.","Gross yield is annual rent divided by the supplied price. It is not a market valuation."]}}}},"400":{"description":"Invalid JSON or request schema."},"402":{"description":"Payment Required"},"409":{"description":"Idempotency conflict, in-progress payment, or expired result cache. Reusing the key cannot trigger a second charge."},"413":{"description":"Request body exceeds the 24 MB limit."},"500":{"description":"Operation failed. With upfront settlement this may occur after payment; reuse the same idempotency key to retrieve the stored result."},"503":{"description":"Payment or retry-safe result storage is unavailable; the operation is not run."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.03"},"protocols":[{"x402":{}}]}}},"/api/v1/property-intelligence/investment-metrics":{"post":{"operationId":"calculate_investment_metrics","summary":"Calculate investment metrics","description":"Calculate net yield, price per square metre, loan, and cash flow only from supplied price, rent, costs, deposit, and mortgage rate. No loan-to-value is assumed.","tags":["property-intelligence"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"url":{"type":"string","minLength":8,"maxLength":2000,"pattern":"^https?:\\/\\/\\S+$"},"title":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","minLength":1,"maxLength":20000},"text":{"type":"string","minLength":1,"maxLength":20000},"address":{"type":"string","minLength":1,"maxLength":300},"price":{"type":"number","minimum":0,"maximum":1000000000000},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"rent":{"type":"number","minimum":0,"maximum":1000000000000},"rentPeriod":{"type":"string","enum":["month","year"]},"bedrooms":{"type":"integer","minimum":0,"maximum":100},"bathrooms":{"type":"number","minimum":0,"maximum":100},"floorAreaSqm":{"type":"number","exclusiveMinimum":0,"maximum":1000000},"propertyType":{"type":"string","minLength":1,"maxLength":80},"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"annualCosts":{"type":"number","minimum":0,"maximum":1000000000000},"deposit":{"type":"number","minimum":0,"maximum":1000000000000},"mortgageRate":{"type":"number","minimum":0,"maximum":1}},"additionalProperties":false},"example":{"price":250000,"rent":1000,"rentPeriod":"month","floorAreaSqm":50,"annualCosts":3000,"deposit":50000,"mortgageRate":0.04,"currency":"GBP"}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Fresh random 32-byte value encoded as 64 hexadecimal characters. Reuse unchanged only for retries of the same operation and request.","schema":{"type":"string","pattern":"^[0-9a-fA-F]{64}$"}}],"responses":{"200":{"description":"Illustrative endpoint-specific JSON response shape. Conditional fields depend on the result and data-source availability.","content":{"application/json":{"schema":{"type":"object","properties":{"checkedAt":{"type":"string"},"officialValuation":{"type":"boolean"},"price":{"type":"number"},"currency":{"type":"string"},"annualRent":{"type":"number"},"grossYield":{"type":"number"},"netYield":{"type":"number"},"pricePerSqm":{"type":"number"},"loan":{"type":"number"},"annualInterest":{"type":"number"},"monthlyCashFlow":{"type":"number"},"assumptions":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"source":{"type":"string"}},"additionalProperties":true}},"findings":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"code":{"type":"string"},"detail":{"type":"string"}},"additionalProperties":true}},"limitations":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"example":{"checkedAt":"2026-11-02T19:00:00.000Z","officialValuation":false,"price":250000,"currency":"GBP","annualRent":12000,"grossYield":0.048,"netYield":0.036,"pricePerSqm":5000,"loan":200000,"annualInterest":8000,"monthlyCashFlow":83.33,"assumptions":[{"name":"annualCosts","value":"3000","source":"caller"},{"name":"deposit","value":"50000","source":"caller"},{"name":"mortgageRate","value":"0.04","source":"caller"}],"findings":[{"kind":"observed","code":"gross_yield","detail":"Gross yield 0.048 is annual rent 12000 divided by price 250000. It is not a valuation."},{"kind":"assumption","code":"net_yield","detail":"Net yield subtracts the caller-supplied annual costs from the annual rent. Those costs are an assumption, not an observed bill."}],"limitations":["This is not an official valuation.","Prices, rents, and yields are calculated only from figures supplied in the request or printed on the fetched page.","Crime statistics, planning permissions, and ownership were not checked.","OpenStreetMap results are nearby map features, not a statement about the property.","A mortgage rate is the caller-supplied annual decimal, such as 0.04. No loan-to-value or appreciation rate is assumed."]}}}},"400":{"description":"Invalid JSON or request schema."},"402":{"description":"Payment Required"},"409":{"description":"Idempotency conflict, in-progress payment, or expired result cache. Reusing the key cannot trigger a second charge."},"413":{"description":"Request body exceeds the 24 MB limit."},"500":{"description":"Operation failed. With upfront settlement this may occur after payment; reuse the same idempotency key to retrieve the stored result."},"503":{"description":"Payment or retry-safe result storage is unavailable; the operation is not run."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.04"},"protocols":[{"x402":{}}]}}},"/api/v1/property-intelligence/due-diligence-report":{"post":{"operationId":"prepare_a_due_diligence_report","summary":"Prepare a due diligence report","description":"Combine the observed listing, supplied assumptions, and any OpenStreetMap place or nearby features. Planning, crime, ownership, and valuation stay unavailable.","tags":["property-intelligence"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"url":{"type":"string","minLength":8,"maxLength":2000,"pattern":"^https?:\\/\\/\\S+$"},"title":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","minLength":1,"maxLength":20000},"text":{"type":"string","minLength":1,"maxLength":20000},"address":{"type":"string","minLength":1,"maxLength":300},"price":{"type":"number","minimum":0,"maximum":1000000000000},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"rent":{"type":"number","minimum":0,"maximum":1000000000000},"rentPeriod":{"type":"string","enum":["month","year"]},"bedrooms":{"type":"integer","minimum":0,"maximum":100},"bathrooms":{"type":"number","minimum":0,"maximum":100},"floorAreaSqm":{"type":"number","exclusiveMinimum":0,"maximum":1000000},"propertyType":{"type":"string","minLength":1,"maxLength":80},"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"annualCosts":{"type":"number","minimum":0,"maximum":1000000000000},"deposit":{"type":"number","minimum":0,"maximum":1000000000000},"mortgageRate":{"type":"number","minimum":0,"maximum":1},"comparables":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"url":{"type":"string","minLength":8,"maxLength":2000,"pattern":"^https?:\\/\\/\\S+$"},"title":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","minLength":1,"maxLength":20000},"text":{"type":"string","minLength":1,"maxLength":20000},"address":{"type":"string","minLength":1,"maxLength":300},"price":{"type":"number","minimum":0,"maximum":1000000000000},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"rent":{"type":"number","minimum":0,"maximum":1000000000000},"rentPeriod":{"type":"string","enum":["month","year"]},"bedrooms":{"type":"integer","minimum":0,"maximum":100},"bathrooms":{"type":"number","minimum":0,"maximum":100},"floorAreaSqm":{"type":"number","exclusiveMinimum":0,"maximum":1000000},"propertyType":{"type":"string","minLength":1,"maxLength":80},"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"annualCosts":{"type":"number","minimum":0,"maximum":1000000000000},"deposit":{"type":"number","minimum":0,"maximum":1000000000000},"mortgageRate":{"type":"number","minimum":0,"maximum":1}},"additionalProperties":false}}},"additionalProperties":false},"example":{"text":"Title: Dock Street flat\nAddress: 12 Dock Street, London\nProperty type: Flat\nPrice: £250,000\nRent: £1,000 pcm\nA 2 bedroom, 1 bathroom flat of 55 sqm with a garden and parking.\nStunning location.","latitude":51.5074,"longitude":-0.1278,"annualCosts":3000,"comparables":[{"title":"Other","address":"4 Mill Lane, Leeds","price":250000,"currency":"GBP","bedrooms":2}]}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Fresh random 32-byte value encoded as 64 hexadecimal characters. Reuse unchanged only for retries of the same operation and request.","schema":{"type":"string","pattern":"^[0-9a-fA-F]{64}$"}}],"responses":{"200":{"description":"Illustrative endpoint-specific JSON response shape. Conditional fields depend on the result and data-source availability.","content":{"application/json":{"schema":{"type":"object","properties":{"checkedAt":{"type":"string"},"officialValuation":{"type":"boolean"},"summary":{"type":"string"},"listing":{"type":"object","properties":{"title":{"type":"string"},"address":{"type":"string"},"price":{"type":"number"},"currency":{"type":"string"},"rent":{"type":"number"},"rentPeriod":{"type":"string"}},"additionalProperties":true},"metrics":{"type":"object","properties":{"annualRent":{"type":"number"},"grossYield":{"type":"number"},"netYield":{"type":"number"},"pricePerSqm":{"type":"number"},"monthlyCashFlow":{"type":"number"}},"additionalProperties":true},"amenities":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"source":{"type":"string"}},"additionalProperties":true}},"marketingPhrases":{"type":"array","items":{"type":"string"}},"area":{"type":"object","properties":{"status":{"type":"string"},"displayName":{"type":"string"},"city":{"type":"string"}},"additionalProperties":true},"features":{"type":"object","properties":{"status":{"type":"string"},"count":{"type":"number"}},"additionalProperties":true},"duplicates":{"type":"object","properties":{"status":{"type":"string"},"pairs":{"type":"number"}},"additionalProperties":true},"planning":{"type":"string"},"crime":{"type":"string"},"ownership":{"type":"string"},"valuation":{"type":"string"},"findings":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"code":{"type":"string"},"detail":{"type":"string"}},"additionalProperties":true}},"limitations":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"example":{"checkedAt":"2026-11-02T19:00:00.000Z","officialValuation":false,"summary":"Observed listing fields and caller-supplied assumptions are separate. This report is not an official valuation and does not check planning, crime, or ownership.","listing":{"title":"Dock Street flat","address":"12 Dock Street, London","price":250000,"currency":"GBP","rent":1000,"rentPeriod":"month"},"metrics":{"annualRent":12000,"grossYield":0.048,"netYield":0.036,"pricePerSqm":4545.45,"monthlyCashFlow":750},"amenities":[{"name":"garden","source":"listing"},{"name":"parking","source":"listing"}],"marketingPhrases":["stunning"],"area":{"status":"observed","displayName":"Mileage Central Point of London Plaque, Charing Cross, Westminster, Covent Garden, City of Westminster, Greater London, England, WC2N 5DU, United Kingdom","city":"City of Westminster"},"features":{"status":"features","count":13},"duplicates":{"status":"possible","pairs":1},"planning":"unavailable","crime":"unavailable","ownership":"unavailable","valuation":"unavailable","findings":[{"kind":"observed","code":"gross_yield","detail":"Gross yield 0.048 is annual rent 12000 divided by price 250000. It is not a valuation."},{"kind":"assumption","code":"net_yield","detail":"Net yield subtracts the caller-supplied annual costs from the annual rent. Those costs are an assumption, not an observed bill."},{"kind":"unavailable","code":"finance_missing","detail":"Loan interest was not calculated because deposit or mortgageRate was not supplied. No loan-to-value was assumed."},{"kind":"unavailable","code":"not_a_valuation","detail":"No valuation, rental estimate, crime statistic, planning permission, or ownership record was created."}],"limitations":["This is not an official valuation.","Prices, rents, and yields are calculated only from figures supplied in the request or printed on the fetched page.","Crime statistics, planning permissions, and ownership were not checked.","OpenStreetMap results are nearby map features, not a statement about the property."]}}}},"400":{"description":"Invalid JSON or request schema."},"402":{"description":"Payment Required"},"409":{"description":"Idempotency conflict, in-progress payment, or expired result cache. Reusing the key cannot trigger a second charge."},"413":{"description":"Request body exceeds the 24 MB limit."},"500":{"description":"Operation failed. With upfront settlement this may occur after payment; reuse the same idempotency key to retrieve the stored result."},"503":{"description":"Payment or retry-safe result storage is unavailable; the operation is not run."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.12"},"protocols":[{"x402":{}}]}}}},"components":{"schemas":{"ApiError":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}}}}}}}}