1"use strict";(globalThis.webpackChunk_atlas_docs_ideal=globalThis.webpackChunk_atlas_docs_ideal||[]).push([[1272],{19821(e,n,s){s.r(n),s.d(n,{assets:()=>a,contentTitle:()=>o,default:()=>h,frontMatter:()=>l,metadata:()=>r,toc:()=>t});const r=JSON.parse('{"id":"changelog","title":"Changelog","description":"Stay informed about the latest updates and improvements to our address validation services with our changelog. View release notes and see what\'s new.","source":"@site/docs/changelog.mdx","sourceDirName":".","slug":"/changelog","permalink":"/docs/changelog","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Changelog","sidebar_label":"Changelog"},"sidebar":"guides","previous":{"title":"Getting Started","permalink":"/docs/guides"},"next":{"title":"Automated Top-Ups","permalink":"/docs/guides/automated-topups"}}');var i=s(65723),d=s(34056);const l={title:"Changelog",sidebar_label:"Changelog"},o=void 0,a={},t=[{value:"October 2026",id:"october-2026",level:2},{value:"September 2026",id:"september-2026",level:2},{value:"August 2026",id:"august-2026",level:2},{value:"July 2026",id:"july-2026",level:2},{value:"June 2026",id:"june-2026",level:2},{value:"May 2026",id:"may-2026",level:2},{value:"April 2026",id:"april-2026",level:2},{value:"March 2026",id:"march-2026",level:2},{value:"February 2026",id:"february-2026",level:2},{value:"December 2025",id:"december-2025",level:2},{value:"November 2025",id:"november-2025",level:2},{value:"October 2025",id:"october-2025",level:2},{value:"September 2025",id:"september-2025",level:2},{value:"August 2025",id:"august-2025",level:2},{value:"July 2025",id:"july-2025",level:2},{value:"June 2025",id:"june-2025",level:2},{value:"May 2025",id:"may-2025",level:2},{value:"April 2025",id:"april-2025",level:2},{value:"March 2025",id:"march-2025",level:2},{value:"February 2025",id:"february-2025",level:2},{value:"January 2025",id:"january-2025",level:2},{value:"May 2024",id:"may-2024",level:2},{value:"April 2024",id:"april-2024",level:2},{value:"March 2024",id:"march-2024",level:2},{value:"February 2024",id:"february-2024",level:2},{value:"January 2024",id:"january-2024",level:2},{value:"November 2023",id:"november-2023",level:2},{value:"October 2023",id:"october-2023",level:2},{value:"September 2023",id:"september-2023",level:2},{value:"August 2023",id:"august-2023",level:2},{value:"July 2023",id:"july-2023",level:2},{value:"June 2023",id:"june-2023",level:2},{value:"May 2023",id:"may-2023",level:2},{value:"April 2023",id:"april-2023",level:2},{value:"March 2023",id:"march-2023",level:2},{value:"February 2023",id:"february-2023",level:2},{value:"January 2023",id:"january-2023",level:2},{value:"December 2022",id:"december-2022",level:2},{value:"November 2022",id:"november-2022",level:2},{value:"October 2022",id:"october-2022",level:2},{value:"August 2022",id:"august-2022",level:2},{value:"July 2022",id:"july-2022",level:2},{value:"June 2022",id:"june-2022",level:2},{value:"May 2022",id:"may-2022",level:2},{value:"April 2022",id:"april-2022",level:2},{value:"March 2022",id:"march-2022",level:2},{value:"February 2022",id:"february-2022",level:2},{value:"January 2022",id:"january-2022",level:2},{value:"December 2021",id:"december-2021",level:2},{value:"July 2021",id:"july-2021",level:2},{value:"June 2021",id:"june-2021",level:2},{value:"May 2021",id:"may-2021",level:2},{value:"April 2021",id:"april-2021",level:2},{value:"March 2021",id:"march-2021",level:2},{value:"February 2021",id:"february-2021",level:2},{value:"January 2021",id:"january-2021",level:2},{value:"December 2020",id:"december-2020",level:2},{value:"November 2020",id:"november-2020",level:2},{value:"October 2020",id:"october-2020",level:2},{value:"September 2020",id:"september-2020",level:2}];function c(e){const n={a:"a",blockquote:"blockquote",code:"code",em:"em",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,d.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"Stay informed about the latest updates and improvements to our address validation services with our changelog. View release notes and see what's new."}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"october-2026",children:"October 2026"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," Error messages link to the Ideal Postcodes error codes guide ",(0,i.jsx)(n.em,{children:"(2026-09-30)"})]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"september-2026",children:"September 2026"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," API keys accepted as ",(0,i.jsx)(n.code,{children:"Authorization: Bearer <key>"})," ",(0,i.jsx)(n.em,{children:"(2026-09-29)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Unauthorised Bearer requests now return a ",(0,i.jsx)(n.code,{children:"WWW-Authenticate"})," challenge; query string keys and the legacy header continue to work"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Integration]"})," Ideal Postcodes agent skills: new ",(0,i.jsx)(n.code,{children:"ideal-postcodes-js-sdk"})," skill for the TypeScript SDK ",(0,i.jsx)(n.em,{children:"(2026-09-29, v2.1.1)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Covers setup, autocomplete, filter and bias, postcode lookup, UPRN lookup, address cleanse, React and Preact, and error handling, with a reference for every API operation"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Integration]"})," WooCommerce: third address line populated in the Blocks checkout, and company name removed from address lines when filling the Company field ",(0,i.jsx)(n.em,{children:"(2026-09-29, v4.5.0)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Third lines are kept in address line 2 by default"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," Cleanse Address documents the ",(0,i.jsx)(n.code,{children:"context"})," parameter for addresses outside the UK ",(0,i.jsx)(n.em,{children:"(2026-09-29)"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Documentation]"})," API reference leads with Bearer authentication ",(0,i.jsx)(n.em,{children:"(2026-09-29)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Send your API Key as ",(0,i.jsx)(n.code,{children:"Authorization: Bearer ak_..."}),"; the user token is now called the Management Key"]}),"\n",(0,i.jsxs)(n.li,{children:["Update Licensee is documented as ",(0,i.jsx)(n.code,{children:"POST"}),", the method the API serves"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Address Finder]"})," Shared utilities and their types are now bundled, so no separate utility package is needed ",(0,i.jsx)(n.em,{children:"(2026-09-28, v5.5.0)"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Postc
1ode Lookup]"})," Shared utilities and their types are now bundled, so no separate utility package is needed ",(0,i.jsx)(n.em,{children:"(2026-09-28, v3.5.0)"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Integration]"})," TypeScript SDK: ",(0,i.jsx)(n.a,{href:"https://www.npmjs.com/package/@ideal-postcodes/sdk",children:(0,i.jsx)(n.code,{children:"@ideal-postcodes/sdk"})})," v0.2.0 with simpler autocomplete and built-in error handling ",(0,i.jsx)(n.em,{children:"(2026-09-28, v0.2.0)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["The autocomplete helper exposes ",(0,i.jsx)(n.code,{children:"find"})," and ",(0,i.jsx)(n.code,{children:"resolve"}),"; superseded requests resolve ",(0,i.jsx)(n.code,{children:"undefined"})," instead of rejecting, so rapid typing produces no unhandled rejections"]}),"\n",(0,i.jsxs)(n.li,{children:["Operations throw ",(0,i.jsx)(n.code,{children:"ApiError"})," on HTTP errors by default (pass ",(0,i.jsx)(n.code,{children:"throwOnError: false"})," to keep the previous result shape), and responses use the flat ",(0,i.jsx)(n.code,{children:"Address"})," model with dataset fields under ",(0,i.jsx)(n.code,{children:"native"})]}),"\n",(0,i.jsxs)(n.li,{children:["Your User Token is sent in the ",(0,i.jsx)(n.code,{children:"Authorization"})," header rather than the query string"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," Cleanse Address matching rebuilt for UK and international addresses, with recalculated confidence scores ",(0,i.jsx)(n.em,{children:"(2026-09-22)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"A new ranking model materially improves match accuracy, particularly for AddressBase Premium and Royal Mail (PAF) addresses; the returned match, confidence score and match-level indicators may differ from previous responses"}),"\n",(0,i.jsx)(n.li,{children:"If your integration relies on a fixed confidence threshold, re-check it against current responses before relying on the same cut-off"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Address Finder]"})," Fixed TypeScript type resolution errors ",(0,i.jsx)(n.em,{children:"(2026-09-18, v5.4.4)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Resolves ",(0,i.jsx)(n.code,{children:"has no exported member 'UsaAddress'"})," and similar errors, and address types no longer silently fall back to ",(0,i.jsx)(n.code,{children:"any"})," when ",(0,i.jsx)(n.code,{children:"skipLibCheck"})," is enabled"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Postcode Lookup]"})," Fixed TypeScript type resolution errors ",(0,i.jsx)(n.em,{children:"(2026-09-18, v3.4.3)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Resolves ",(0,i.jsx)(n.code,{children:"has no exported member 'UsaAddress'"})," and similar errors, and address types no longer silently fall back to ",(0,i.jsx)(n.code,{children:"any"})," when ",(0,i.jsx)(n.code,{children:"skipLibCheck"})," is enabled"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Integration]"})," OpenAPI spec simplified to two flat address models: ",(0,i.jsx)(n.a,{href:"https://www.npmjs.com/package/@ideal-postcodes/openapi",children:(0,i.jsx)(n.code,{children:"@ideal-postcodes/openapi"})})," ",(0,i.jsx)(n.em,{children:"(2026-09-17, v5.0.0)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Addresses are modelled as two flat records: ",(0,i.jsx)(n.code,{children:"AddressListItem"})," for list endpoints such as postcode lookup, and ",(0,i.jsx)(n.code,{children:"Address"})," for single-address lookups, which carries the raw source record under ",(0,i.jsx)(n.code,{children:"native"})]}),"\n",(0,i.jsx)(n.li,{children:"The per-dataset address schemas are replaced; deprecated type aliases keep the old names compiling while you migrate"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Integration]"})," Ideal Postcodes agent skills: expanded API reference data and examples ",(0,i.jsx)(n.em,{children:"(2026-09-17, v2.0.0)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Adds a reference page for every dataset's raw source record, request samples in JavaScript, Python, Ruby and PHP for every endpoint, and the full list of API error codes (up from 4 to 38)"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Documentation]"}
1)," API reference pages now show request samples in JavaScript, Python, Ruby and PHP, not just curl ",(0,i.jsx)(n.em,{children:"(2026-09-17)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Covers every documented operation, including key, licensee, configuration and sign-up endpoints that previously had none"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," Postcode lookup's ",(0,i.jsx)(n.code,{children:"context"})," parameter and coverage are now documented ",(0,i.jsx)(n.em,{children:"(2026-09-15)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["UK and Irish postcodes are searched by default; set ",(0,i.jsx)(n.code,{children:"context"})," to ",(0,i.jsx)(n.code,{children:"NLD"})," or ",(0,i.jsx)(n.code,{children:"SGP"})," for Dutch and Singapore postcodes, or ",(0,i.jsx)(n.code,{children:"GLOBAL"})," to accept any supported format"]}),"\n",(0,i.jsx)(n.li,{children:"The reference lists the datasets each country needs"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," More accurate address line formatting for AddressBase and AddressBase Premium ",(0,i.jsx)(n.em,{children:"(2026-09-11)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Building names, thoroughfares and address ranges now format closer to Royal Mail conventions, closing most of the previous formatting divergence from PAF addresses"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," Royal Mail address responses now include a ",(0,i.jsx)(n.code,{children:"native"})," field with the raw delivery-point record ",(0,i.jsx)(n.em,{children:"(2026-09-09)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Applies to the GBR address resolve, UDPRN/UMPRN lookup, cleanse matching, and address lookup endpoints for the PAF family of datasets (PAF, Multiple Residence, Not Yet Built and related variants)"}),"\n",(0,i.jsx)(n.li,{children:"Returned alongside the existing formatted address fields, so no existing integration is affected"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Dashboard]"})," Clearer label and validation on the GDPR retention period setting ",(0,i.jsx)(n.em,{children:"(2026-09-08)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"The redaction period control on your key dashboard now shows its unit and caps input at 1095 days, matching the API limit (previously accepted up to 1459 days and failed)"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," Autocomplete's non-UK filters are now documented, and US filters match multi-word and hyphenated values ",(0,i.jsx)(n.em,{children:"(2026-09-07)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"city"}),", ",(0,i.jsx)(n.code,{children:"state"})," and ",(0,i.jsx)(n.code,{children:"postal_code"})," filters and biases now match values like ",(0,i.jsx)(n.code,{children:"San Francisco"}),", ",(0,i.jsx)(n.code,{children:"New York"})," and ",(0,i.jsx)(n.code,{children:"94102-1234"})," (previously only single-word, unhyphenated values matched)"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"postal_code_2"}),", ",(0,i.jsx)(n.code,{children:"postal_code_3"}),", ",(0,i.jsx)(n.code,{children:"state_code"}),", ",(0,i.jsx)(n.code,{children:"is_pobox"}),", ",(0,i.jsx)(n.code,{children:"is_business"})," and their ",(0,i.jsx)(n.code,{children:"bias_"})," equivalents are now part of the documented autocomplete contract"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Billing]"})," Default AddressBase Premium lookup cost rises from 2 to 3 credits ",(0,i.jsx)(n.em,{children:"(2026-09-07)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Applies to new keys and any existing key without a custom AddressBase Premium rate already set; keys with a custom rate already configured are unaffected"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"august-2026",children:"August 2026"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Dashboard]"})," Fixed confirmation emails occasionally being sent to a stale address ",(0,i.jsx)(n.em,{children:"(2026-08-28)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Email confirmations now always reach your current account address, even after an abandoned email change"}),"\n",(0,i.jsx)(n.li,{children:"You can also cancel a pending email change from your account page"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Security]"})," Stronger password and lockout rules on your dashboard account ",(0,i.jsx)(n.em,{children:"(2026-08-27)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"New or changed passwords must now be at least 12 characters (previously 6); existing passwords are unaffected until you change them"}),"\n",(0,i.jsx)(n.li,{children:"Accounts lock for an hour after 10 failed sign-in attempts, and a locked account no longer prompts for a two-factor code"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Address Finder]"})," Accessibility fixes released ",(0,i.jsx)(n.em,{children:"(2026-08-20, v5.4.2)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Screen reader announcements are no longer at risk of being spoken twice, and the first results announcement now names the active search country and how to change it"}),"\n",(0,i.jsxs)(n.li,{children:["The country toggle is fully keyboard operable, no longer closes the suggestion list when focu
1sed, and highlights on keyboard focus; ",(0,i.jsx)(n.code,{children:"msgCountryToggle"})," now sets its label, defaulting to ",(0,i.jsx)(n.code,{children:'"Change Country"'})]}),"\n",(0,i.jsxs)(n.li,{children:["Listbox semantics are no longer reported while a notice such as ",(0,i.jsx)(n.code,{children:'"No matches found"'})," is on display; every widget state passes axe-core's WCAG 2.1/2.2 A and AA rulesets, which gate each release"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Integration]"})," Ideal Postcodes agent skills: new accessibility reference for Address Finder and Postcode Lookup ",(0,i.jsx)(n.em,{children:"(2026-08-20, v1.1.13)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Documents the WCAG 2.1 AA statement, keyboard support map, and testing regime; the ",(0,i.jsx)(n.code,{children:"msgCountryToggle"})," default is now recorded as ",(0,i.jsx)(n.code,{children:'"Change Country"'})]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," Premier support enrolment visible on key details ",(0,i.jsx)(n.em,{children:"(2026-08-20, v4.21.0)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["The read-only ",(0,i.jsx)(n.code,{children:"premier_support"})," flag reports whether a key is enrolled in the premier support programme"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Security]"})," Account security hardening across sign-in, tokens and subscriptions ",(0,i.jsx)(n.em,{children:"(2026-08-21)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Changing your account email or disabling two-factor authentication now always requires your current password"}),"\n",(0,i.jsx)(n.li,{children:"Organisation token regeneration now requires the appropriate permission"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Authentication]"})," Password reset now clears an account lockout ",(0,i.jsx)(n.em,{children:"(2026-08-21)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"No more manual unlock needed if you reset your password while locked out"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Integration]"})," Ideal Postcodes agent skills: documented accessibility support and the new country toggle label ",(0,i.jsx)(n.em,{children:"(2026-08-20, v1.1.13)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["The Address Finder and Postcode Lookup references now cover WCAG 2.1 AA conformance, keyboard behaviour, and the ",(0,i.jsx)(n.code,{children:"msgCountryToggle"})," default of ",(0,i.jsx)(n.code,{children:'"Change Country"'})]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," New Swisstopo dataset for Switzerland and Liechtenstein addresses ",(0,i.jsx)(n.em,{children:"(2026-08-20)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Enable the ",(0,i.jsx)(n.code,{children:"swt"})," flag on your API key to search, autocomplete, resolve and cleanse Swiss (CHE) and Liechtenstein (LIE) addresses, with German, French, Italian and Romansh language indexes"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," Restrict postcode lookups and address search to specific datasets ",(0,i.jsx)(n.em,{children:"(2026-08-12)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"GET /postcodes/:postcode"})," and ",(0,i.jsx)(n.code,{children:"GET /addresses"})," now accept a ",(0,i.jsx)(n.code,{children:"dataset"})," parameter (e.g. ",(0,i.jsx)(n.code,{children:"dataset=paf,abp"}),") to filter results to specific datasets on keys with overlapping options, matching the existing autocomplete filter"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Billing]"})," AddressBase cleanse and verify now charge under the AddressBase rate ",(0,i.jsx)(n.em,{children:"(2026-08-12)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["An AddressBase match through cleanse or verify is now billed as AddressBase, matching how the lookup endpoints already charge. ",(0,i.jsx)(n.strong,{children:"This raises the cost of an AddressBase cleanse from 1 to 2 lookups at default rates"}),", and makes AddressBase usage visible in per-code reporting where it previously reported as a generic GB cleanse"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Billing]"})," Northern Ireland Pointer usage now charged consistently across cleanse and verify ",(0,i.jsx)(n.em,{children:"(2026-08-12)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"A GB cleanse or verify that returns a Pointer UPRN now bills the Northern Ireland Pointer addon, matching the postcode lookup and address resolve endpoints"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Logging]"})," Usage log CSV now labels cleanse, verify and phone validation lookups ",(0,i.jsx)(n.em,{children:"(2026-08-12)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"The search type column in your key's usage log CSV previously exported blank for these three request types"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Authentication]"})," Clearer error when a passkey sign-in or registration loses its network connection ",(0,i.jsx)(n.em,{children:"(2026-08-12)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:'Previously showed a generic "try again" message; now tells you to check your connection'}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"july-2026",children:"July 2026"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," Usage log CSV now records the forwarded source IP ",(0,i.jsx)(n.em,{children:"(2026-07-29)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["The address forwarded in the ",(0,i.jsx)(n.code,{children:"IDPC-Source-IP"})," header is written to the final column of your key's usage log CSV, so backend integrations can trace a lookup back to the end user who triggered it"]}),"\n",(0,i.jsx)(n.li,{children:"Only recorded for keys with IP address forwarding enabled, and only when the header holds a valid IP address; it is redacted on the same schedule as the other personal data in the log"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Address Finder]"})," Accessibility improvements for keyboard and screen reader users ",(0,i.jsx)(n.em,{children:"(2026-07-27)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"The country toggle is now fully keyboard operable: Tab to reach it, Enter or Space to open the country list, Escape to dismiss"}),"\n",(0,i.jsx)(n.li,{children:"The first results announcement identifies the active search country and how to change it; screen reader announcements are no longer at risk of being spoken twice"}),"\n",(0,i.jsxs)(n.li,{children:["Every release is now gated by automated axe-core WCAG A/AA scans, and a new ",(0,i.jsx)(n.a,{href:"/docs/address-finder/accessibility",children:"Accessibility guide"})," documents the widget's keyboard support and screen reader behaviour"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Integration]"})," Shopify: native checkout address autocompletion ",(0,i.jsx)(n.em,{children:"(2026-07-21, v2.0.0)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Address suggestions now a
1ppear directly in Shopify's own checkout address fields via the native Address Autocomplete API - enable by selecting the app under Settings > Checkout > Address autocompletion"}),"\n",(0,i.jsx)(n.li,{children:"New postcode lookup at checkout: customers enter a postcode and pick their address from a dropdown, for the United Kingdom, Ireland, Singapore and the Netherlands"}),"\n",(0,i.jsx)(n.li,{children:"The classic search box remains available behind a settings toggle; stores installed before this release keep it on, new installations default to native autocompletion"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Address Finder]"})," New fallback action when a search returns no matches ",(0,i.jsx)(n.em,{children:"(2026-07-21, v5.4.0)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Set ",(0,i.jsx)(n.code,{children:"msgNoMatchAction"})," (e.g. ",(0,i.jsx)(n.code,{children:'"Enter address manually"'}),") to show an actionable prompt beneath the no-match message, and handle its selection with the ",(0,i.jsx)(n.code,{children:"onNoMatchAction"})," callback \u2014 useful for revealing a manual address entry form"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Integration]"})," Ideal Postcodes agent skills: documented the Address Finder no-match action ",(0,i.jsx)(n.em,{children:"(2026-07-21, v1.1.12)"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Address Finder]"})," New ",(0,i.jsx)(n.code,{children:"shouldAddressPopulate"})," hook, plus smarter country selection ",(0,i.jsx)(n.em,{children:"(2026-07-13, v5.3.0)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Return ",(0,i.jsx)(n.code,{children:"false"})," from the hook \u2014 run after an address is retrieved, before it's written to the form \u2014 to cancel population, for example for delivery-area checks or custom confirmation flows"]}),"\n",(0,i.jsxs)(n.li,{children:["The currently selected country is now promoted to the top of the country list, and ",(0,i.jsx)(n.code,{children:"restrictCountries"})," takes priority over IP-based geo-detection"]}),"\n",(0,i.jsx)(n.li,{children:"Jersey, Guernsey, and Isle of Man addresses now resolve in UK address format"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Postcode Lookup]"})," New ",(0,i.jsx)(n.code,{children:"shouldAddressPopulate"})," hook to gate address population ",(0,i.jsx)(n.em,{children:"(2026-07-13, v3.4.0)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Return ",(0,i.jsx)(n.code,{children:"false"})," from the hook \u2014 run before a selected address is written to the form \u2014 to cancel population; other lifecycle callbacks still fire"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Integration]"})," Ideal Postcodes agent skills: guidance for gating address population by delivery area ",(0,i.jsx)(n.em,{children:"(2026-07-13, v1.1.10)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:['New "Gate Population by Delivery Area" guide covers synchronous and asynchronous checks and fail-open error handling for the new ',(0,i.jsx)(n.code,{children:"shouldAddressPopulate"})," option, documented in both the Address Finder and Postcode Lookup references"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Integration]"})," Business Central 28.2: option to strip the organisation name from an address ",(0,i.jsx)(n.em,{children:"(2026-07-13)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"New setting removes the organisation name from an address when present, for stores that only want the delivery address populated"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Integration]"})," Business Central 28.2: fixed display of very long GB addresses ",(0,i.jsx)(n.em,{children:"(2026-07-13)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Very long GB addresses could previously overflow or truncate incorrectly in the address fields"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," Improved address lines for AddressBase Core addresses ",(0,i.jsx)(n.em,{children:"(2026-07-07)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Post towns in the address lines are removed"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Integration]"})," Address Finder agent skill: guidance for disabling style injection under strict CSP ",(0,i.jsx)(n.em,{children:"(2026-07-03, v1.1.9)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Covers ",(0,i.jsx)(n.code,{children:"injectStyle: false"})," with a ",(0,i.jsx)(n.code,{children:"<link>"})," tag, the ",(0,i.jsx)(n.code,{children:"injectStyle"})," URL option, and importing the widget's CSS from npm"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Authentication]"})," Member lists show each organisation member's MFA and passkey status ",(0,i.jsx)(n.em,{children:"(2026-07-07)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Both the backend admin view and your organisation's members page now show whether a member has multi-factor authentication or a passkey configured"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Dashboard]"})," France BAN dataset available as a toggle on API keys ",(0,i.jsx)(n.em,{children:"(2026-07-03)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Enable or disable the France national address dataset from your key's dataset settings, with a link to the documentation"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Address Finder]"})," Fixed external stylesheet not matching the widget's current markup ",(0,i.jsx)(n.em,{children:"(2026-07-03, v5.2.16)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["If you use ",(0,i.jsx)(n.code,{children:"injectStyle: false"})," with a ",(0,i.jsx)(n.code,{children:"<link>"})," to ",(0,i.jsx)(n.code,{children:"css/address-finder.css"}),", styling now applies correctly"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Integration]"})," New reference for disabling Address Finder's injected styles ",(0,i.jsx)(n.em,{children:"(2026-07-03, v1.1.9)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Covers ",(0,i.jsx)(n.code,{children:"injectStyle: false"})," with a ",(0,i.jsx)(n.code,{children:"<link>"})," tag, a custom ",(0,i.jsx)(n.code,{children:"injectStyle"})," URL, or importing the CSS from npm, for strict Content-Security-Policy setups"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," France BAN dataset now live across address search and lookup endpoints ",(0,i.jsx)(n.em,{children:"(2026-07-02)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Enable the ",(0,i.jsx)(n.code,{children:"ban"})," flag on your API key to search and resolve French addresses from the Base Adresse Nationale"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Dashboard]"})," Premier Support page for enrolled organisations ",(0,i.jsx)(n.em,{children:"(2026-07-01)"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," BAN (France) TypeScript types available in the Ideal Postcodes OpenAPI package ",(0,i.jsx)(n.em,{children:"(2026-07-01, v4.20.0)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["New ",(0,i.jsx)(n.code,{children:"BanAddress"})," type exposes the Base Adresse Nationale schema across the address lookup and resolve endpoints"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Integration]"})," BAN (France) dataset added to the API integration agent skill ",(0,i.jsx)(n.em,{children:"(2026-07-01, v1.1.8)"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Integration]"})," WooCommerce: configurable Address Finder and Postcode Lookup field labels ",(0,i.jsx)(n.em,{children:"(2026-07-01, v4.4.0)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Customise the label text shown for both widgets at checkout, for classic and Blocks checkout"}),"\n"]}),"\n"]}),"\n"]}
1),"\n",(0,i.jsx)(n.h2,{id:"june-2026",children:"June 2026"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Integration]"})," CLI: ",(0,i.jsx)(n.code,{children:"keys"})," subcommands split for context and dataset management ",(0,i.jsx)(n.em,{children:"(2026-06-30, v1.1.0)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"idpc keys context"})," reports the current and available geographic contexts; ",(0,i.jsx)(n.code,{children:"idpc keys datasets"})," reports dataset availability"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"idpc keys datasets update"})," enables or disables datasets with repeatable ",(0,i.jsx)(n.code,{children:"-e"}),"/",(0,i.jsx)(n.code,{children:"--enable"})," and ",(0,i.jsx)(n.code,{children:"-d"}),"/",(0,i.jsx)(n.code,{children:"--disable"})," flags (e.g. ",(0,i.jsx)(n.code,{children:"idpc keys datasets update -e paf -e abp -d mr"}),")"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Integration]"})," Ideal Postcodes agent skills: CLI reference updated for the new ",(0,i.jsx)(n.code,{children:"keys"})," subcommands ",(0,i.jsx)(n.em,{children:"(2026-06-30, v1.1.7)"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," AddressBase Premium address coverage extended for non-postal records ",(0,i.jsx)(n.em,{children:"(2026-06-29)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Properties without a Royal Mail Delivery Point address \u2014 OWPAs, provisional, and other non-postal records are now returned"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Dashboard]"})," AddressBase Premium dataset visible on API keys ",(0,i.jsx)(n.em,{children:"(2026-06-25)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"AddressBase Premium now appears in the dataset list on your API key page, where it can be enabled or disabled"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Integration]"})," Ideal Postcodes agent skills: country select population and expanded plugin listings ",(0,i.jsx)(n.em,{children:"(2026-06-24, v1.1.6)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["The ",(0,i.jsx)(n.code,{children:"ideal-postcodes-address-finder"})," skill now documents how to map ",(0,i.jsx)(n.code,{children:"country_iso"}),", ",(0,i.jsx)(n.code,{children:"country_iso_2"}),", and ",(0,i.jsx)(n.code,{children:"country"})," fields to a country ",(0,i.jsx)(n.code,{children:"<select>"})," element"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"ideal-postcodes-react"})," and ",(0,i.jsx)(n.code,{children:"ideal-postcodes-cli"})," skills are now listed in the Cursor and Codex plugin manifests"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," AddressBase Premium TypeScript types available in the Ideal Postcodes OpenAPI package ",(0,i.jsx)(n.em,{children:"(2026-06-23, v4.19.0)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["New ",(0,i.jsx)(n.code,{children:"AbpAddress"})," type exposes the full property-level record from Ordnance Survey AddressBase Premium \u2014 BLPU, DPA, classification, and ground stability \u2014 across the address lookup and resolve endpoints"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," New endpoint to regenerate a licensee API key ",(0,i.jsx)(n.em,{children:"(2026-06-23)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"POST /v1/keys/:key/licensees/:licensee/regenerate-key"})," mints a new server-generated key for the licensee and invalidates the old one"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Integration]"})," AddressBase Premium data model added to the API integration agent skill ",(0,i.jsx)(n.em,{children:"(2026-06-23, v1.1.5)"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," Added the BAN (Base Adresse Nationale) dataset for France, providing open n
1ational address coverage ",(0,i.jsx)(n.em,{children:"(2026-06-23)"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Address Finder]"})," React component: forwarded ref stays stable across renders ",(0,i.jsx)(n.em,{children:"(2026-06-18, v0.2.1)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["When wrapping your own controlled ",(0,i.jsx)(n.code,{children:"<input>"}),", the ref no longer re-attaches on every keystroke"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Integration]"})," New React skill in the Ideal Postcodes agent skills plugin ",(0,i.jsx)(n.em,{children:"(2026-06-16, v1.1.0)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"ideal-postcodes-react"})," covers the ",(0,i.jsx)(n.code,{children:"@ideal-postcodes/react"})," React component \u2014 available for Claude Code, Cursor, and Codex via ",(0,i.jsx)(n.code,{children:"npx skills add ideal-postcodes/skills"})]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," New ",(0,i.jsx)(n.code,{children:"IDPC-Source-IP"})," response header echoes the detected client IP on every API response ",(0,i.jsx)(n.em,{children:"(2026-06-14)"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Address Finder]"})," React component for embedding address autocomplete in React applications ",(0,i.jsx)(n.em,{children:"(2026-06-12, v0.2.0)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"@ideal-postcodes/react"})," provides an ",(0,i.jsx)(n.code,{children:"<AddressFinder>"})," component compatible with React 18 and 19, with two integration modes \u2014 default input and wrap-around-your-own-input \u2014 and the full callback surface exposed as props"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Dashboard]"})," Changelog feed in the account dashboard ",(0,i.jsx)(n.em,{children:"(2026-06-10)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Recent product updates now appear in the account sidebar, keeping you informed without leaving the dashboard"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," Postcodes.io postcode lookups now include 2025 Scottish Parliament constituency and region data ",(0,i.jsx)(n.em,{children:"(2026-06-09)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"SPC25 and SPR25 columns added to postcode responses, reflecting the updated constituency and region boundaries from the May 2026 election; 2021 values remain available"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," AddressBase Premium available for GBR address search ",(0,i.jsx)(n.em,{children:"(2026-06-08)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["AddressBase Premium (ABP) data now available via the ",(0,i.jsx)(n.code,{children:"/addresses"})," and ",(0,i.jsx)(n.code,{children:"/autocomplete/addresses"})," endpoints, providing comprehensive Ordnance Survey address records across all building classification types"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Security]"})," Security update for Address Finder and Postcode Lookup ",(0,i.jsx)(n.em,{children:"(2026-06-06, v5.2.15 / v3.3.2)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Resolves a regular expression denial of service via cookie names (GHSA-hfxv-24rg-xrqf) and prototype pollution issues in earlier axios versions; update to the latest widget version to pick up the fix"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Postcode Lookup]"})," Fix for address dropdown not populating fields when the first address is selected ",(0,i.jsx)(n.em,{children:"(2026-06-04, v3.3.1)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Choosing any address - including the first in the list - now triggers a change event and fills the form"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Integration]"})," Agent skills renamed with an ",(0,i.jsx)(n.code,{children:"ideal-postcodes-"})," prefix ",(0,i.jsx)(n.em,{children:"(2026-06-04, v1.0.0)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"ideal-postcodes-address-finder"}),", ",(0,i.jsx)(n.code,{children:"ideal-postcodes-postcode-lookup"}),", ",(0,i.jsx)(n.code,{children:"ideal-postcodes-api-integration"}),", and ",(0,i.jsx)(n.code,{children:"ideal-postcodes-cli"}
1)," - unambiguous names in agent skill lists"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"may-2026",children:"May 2026"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Integration]"})," CLI: email and phone validation ",(0,i.jsx)(n.em,{children:"(2026-05-28, v0.3.0)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"idpc email"})," and ",(0,i.jsx)(n.code,{children:"idpc phone"})," validate a single input or batches from a file or stdin, emitting JSON or CSV"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"idpc doctor"})," now explains why an API key is unusable - no lookups remaining, limits reached, or allowed-URL restrictions"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Documentation]"})," Interactive API reference at ",(0,i.jsx)(n.a,{href:"https://openapi.ideal-postcodes.co.uk",children:"openapi.ideal-postcodes.co.uk"})," ",(0,i.jsx)(n.em,{children:"(2026-05-28)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Rendered OpenAPI reference and raw spec downloads, refreshed automatically with every spec release"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Integration]"})," New ",(0,i.jsx)(n.code,{children:"idpc"})," command line interface ",(0,i.jsx)(n.em,{children:"(2026-05-24, v0.1.0)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Manage API keys, cleanse addresses, and run autocomplete searches from the terminal"}),"\n",(0,i.jsx)(n.li,{children:"Non-interactive mode emits JSON with exit-code failure signalling, built for agents and CI/CD"}),"\n",(0,i.jsxs)(n.li,{children:["Sign up for an account directly from the terminal with ",(0,i.jsx)(n.code,{children:"idpc auth signup"})]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Integration]"})," TypeScript SDK: ",(0,i.jsx)(n.a,{href:"https://www.npmjs.com/package/@ideal-postcodes/sdk",children:(0,i.jsx)(n.code,{children:"@ideal-postcodes/sdk"})})," ",(0,i.jsx)(n.em,{children:"(2026-05-21, v0.1.0)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Supersedes ",(0,i.jsx)(n.code,{children:"@ideal-postcodes/core-axios"})," and ",(0,i.jsx)(n.code,{children:"@ideal-postcodes/core-node"}),": one package for browsers and Node.js 22 or later, built on native ",(0,i.jsx)(n.code,{children:"fetch"})," with no runtime dependencies"]}),"\n",(0,i.jsx)(n.li,{children:"Every current API operation is a tree-shakeable named export, with request and response types generated from the OpenAPI spec"}),"\n",(0,i.jsxs)(n.li,{children:["Includes an autocomplete helper and optional TanStack Query adapters for React and Preact. See the ",(0,i.jsx)(n.a,{href:"/docs/sdks/typescript",children:"TypeScript SDK guide"})]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Integration]"})," Address Cleanse add-in for Microsoft Excel ",(0,i.jsx)(n.em,{children:"(2026-05-21, v1.0.0)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Cleanse, validate and enrich addresses directly in a workbook - results written alongside your input with formatted address, confidence, per-element match levels, geocodes and UPRN"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Dashboard]"})," Reseller dashboard ",(0,i.jsx)(n.em,{children:"(2026-05-17)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Reseller organisations now see a dedicated dashboard summarising their licensees, active client count, and usage costs for any billing period"}),"\n",(0,i.jsx)(n.li,{children:"Customer breakdown table shows each licensee's address and API key, with sortable numeric columns and CSV export"}),"\n",(0,i.jsx)(n.li,{children:"Period picker and deep-links jump straight to a licensee's keys and dates"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Integration]"})," WooCommerce: option to truncate US ZIP+4 to 5 digits ",(0,i.jsx)(n.em,{children:"(2026-05-15, v4.3.0)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Reduces US ZIP codes to the 5-digit form at checkout for carriers that reject ZIP+4"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Integration]"})," WooCommerce: Canadian province select on classic checkout ",(0,i.jsx)(n.em,{children:"(2026-05-14, v4.2.0)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Province field is populated as a select when the shipping country is Canada"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Integration]"})," Agent skills for Claude Code, Cursor, and Codex ",(0,i.jsx)(n.em,{children:"(2026-05-09)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["New ",(0,i.jsx)(n.code,{children:"ideal-postcodes/skills"})," plugin ships quickstarts and reference docs for Address Finder, Postcode Lookup, and direct API integration"]}),"\n",(0,i.jsxs)(n.li,{children:["Install with ",(0,i.jsx)(n.code,{children:"npx skills add ideal-postcodes/skills"})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"april-2026",children:"April 2026"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Browser Extension]"})," Improved Odoo and Salesforce field detection ",(0,i.jsx)(n.em,{children:"(2026-04-29, v1.25.4)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Address Finder now waits for new Odoo contact forms to finish initialising before binding to address fields"}),"\n",(0,i.jsx)(n.li,{children:"Salesforce scope selectors updated for custom Aura components"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Billing]"})," Credit notes available in your account ",(0,i.jsx)(n.em,{children:"(2026-04-28)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"View credit notes alongside invoices from the billing section"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Billing]"})," Statement of account ",(0,i.jsx)(n.em,{children:"(2026-04-28)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Download a consolidated statement of invoices, payments, and credit notes for any period"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Dashboard]"})," Organisation deletion ",(0,i.jsx)(n.em,{children:"(2026-04-27)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Permanently remove an organisation and its data from your account when it is no longer needed"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Dashboard]"})," Multi-organisation accounts ",(0,i.jsx)(n.em,{children:"(2026-04-24)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Switch between organisations from a single login"}),"\n",(0,i.jsx)(n.li,{children:"Single-organisation users are routed straight to their organisation page on sign-in"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Billing]"})," Reduced 3D Secure (SCA) prompts on automated top-ups ",(0,i.jsx)(n.em,{children:"(2026-04-23)"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," Corrected ISO 3166-1 alpha-3 country code for Kosovo ",(0,i.jsx)(n.em,{children:"(2026-04-23)"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Dashboard]"})," New URL checker tool for Allowed URLs ",(0,i.jsx)(n.em,{children:"(2026-04-16)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Test whether a given domain matches your account's allowed URL configuration before going live"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Dashboard]"})," Documentation search integrated into the dashboard ",(0,i.jsx)(n.em,{children:"(2026-04-14)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Search docs.ideal-postcodes.co.uk directly from your account using DocSearch"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Integration]"})," WooCommerce: address autocomplete in Blocks checkout ",(0,i.jsx)(n.em,{children:"(2026-04-14, v4.0.0)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Address Finder and Postcode Lookup now work with the WooCommerce Blocks checkout (WooCommerce 8.0+), alongside the classic jQuery checkout"}),"\n",(0,i.jsx)(n.li,{children:"Optional address validation at checkout can block PO box entries, enforce line length limits, and filter non-ASCII characters"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Postc
1ode Lookup]"})," ARIA support for screen readers ",(0,i.jsx)(n.em,{children:"(2026-04-13, v3.3.0)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Search results and status messages are now announced to assistive technology via ARIA live regions"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," Fixed Republic of Ireland address line formatting on HERE datasets ",(0,i.jsx)(n.em,{children:"(2026-04-08)"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Logging]"})," CSV transaction usage export now includes a licensee name column ",(0,i.jsx)(n.em,{children:"(2026-04-02)"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Authentication]"})," Passkey (WebAuthn) sign-in ",(0,i.jsx)(n.em,{children:"(2026-04-01)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Sign in using Touch ID, Windows Hello, or hardware security keys instead of a password"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"march-2026",children:"March 2026"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Dashboard]"})," Dashboard UI refresh ",(0,i.jsx)(n.em,{children:"(2026-03-27)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Redesign with dark mode, smooth theme transitions, and modernised screens"}),"\n",(0,i.jsx)(n.li,{children:"Improved pagination and notification UX"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Dashboard]"})," Account notifications ",(0,i.jsx)(n.em,{children:"(2026-03-26)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"In-dashboard notification bell surfacing recent account events, with email recipients managed per organisation"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Dashboard]"})," Per-dataset toggles on the API key dashboard ",(0,i.jsx)(n.em,{children:"(2026-03-26)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Enable or disable individual datasets on a key directly from the keys page"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," ",(0,i.jsx)(n.code,{children:"GET /keys/:key/details"})," returns expanded key metadata ",(0,i.jsx)(n.em,{children:"(2026-03-25)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Response now includes ",(0,i.jsx)(n.code,{children:"name"}),", ",(0,i.jsx)(n.code,{children:"contexts"}),", ",(0,i.jsx)(n.code,{children:"datasets"}),", and notification settings"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Address Finder]"})," New ",(0,i.jsx)(n.code,{children:"hide"})," configuration option ",(0,i.jsx)(n.em,{children:"(2026-03-20, v5.2.10)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Dynamically hide and style additional HTML elements when the finder is collapsed"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Dashboard]"})," Self-serve organisation creation ",(0,i.jsx)(n.em,{children:"(2026-03-11)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Create new organisations from your account without contacting support"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"february-2026",children:"February 2026"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Dashboard]"})," Organisation member invitations ",(0,i.jsx)(n.em,{children:"(2026-02-25)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Invite teammates to your organisation by email and review pending invitations from the organisation page"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Dashboard]"})," Organisation accounts ",(0,i.jsx)(n.em,{children:"(2026-02-20)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Accounts are now organisation-based \u2014 invite teammates, share API keys, and assign roles within a single billable entity"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Dashboard]"})," Account roles: admin, developer, and finance ",(0,i.jsx)(n.em,{children:"(2026-02-20)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Assign each organisation member a role to scope access to keys, billing, and developer settings"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," Monthly lookup limits now configurable on API keys ",(0,i.jsx)(n.em,{children:"(2026-02-04)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Set a per-calendar-month cap independently of the daily limit, with usage rolling over at the start of each month"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"december-2025",children:"December 2025"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Integration]"})," Magento: input sanitisation for customer and quote address fields ",(0,i.jsx)(n.em,{children:"(2025-12-16, v2.5.2)"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," Added the BEV (Bundesamt f\xfcr Eich- und Vermessungswesen) dataset for Austria, providing comprehensive and authoritative address coverage"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," Postcodes.io LSOA and MSOA fields now return 2021 Census data. 2011 data available via ",(0,i.jsx)(n.code,{children:"lsoa11"}),"/",(0,i.jsx)(n.code,{children:"msoa11"})," aliases"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," Postcodes.io ONSPD updated to November 2025"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," Postcodes.io now returns terminated postcode data in 404 responses"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"november-2025",children:"November 2025"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Integration]"})," BigCommerce: support for Optimized One-Page Checkout ",(0,i.jsx)(n.em,{children:"(2025-11-24, v3.2.0)"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Integration]"})," Magento: hardened template output escaping ",(0,i.jsx)(n.em,{children:"(2025-11-21, v2.5.1)"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," New dataset filter parameter allows you to restrict address searches to specific datasets within a country. E.g. ",(0,i.jsx)(n.code,{children:"datasets=nyb"})," for latest new builds only."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," New GBR postcode query endpoint for UK postcode lookups"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," Improved AddressBase Core searching, now harmonised with other GBR datasets for consistent results"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," US Address Validation API now supports fuzzy matching on the state parameter, improving match rates for addresses with minor state name variations"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"october-2025",children:"October 2025"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Integration]"})," Magento: Postcode Lookup now binds to the first address line ",(0,i.jsx)(n.em,{children:"(2025-10-22, v2.4.6)"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," Northern Ireland dataset update frequency increased from quarterly to weekly"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," Non-US address data now parsed into individual structured fields (building number, street name, unit) rather than just address lines"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," Fixed an issue affecting Republic of Ireland addresses where administrative data may be missing for some premises"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"september-2025",children:"September 2025"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," Streamlined OpenAPI specification designed to reduce context length for LLM-assisted development"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Documentation]"})," LLM-optimised documentation with llms.txt context file and universal markdown export (a
1dd ",(0,i.jsx)(n.code,{children:".md"})," to any documentation URL)"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Integration]"})," WooCommerce plugin now available for WordPress e-commerce stores with no-code installation from the WordPress Plugin Directory"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Integration]"})," Documentation now available through Context7's Model Context Protocol (MCP) for AI-enabled IDEs"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," Enhanced geospatial accuracy and intelligent country detection for improved search precision"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," Postcodes.io County Electoral Divisions updated to May 2025"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," Postcodes.io Parish/Non-Civil Parish codes updated to April 2025"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"august-2025",children:"August 2025"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," Fixed an issue with the Email Validation API to handle queries without proper encoding"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"july-2025",children:"July 2025"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Integration]"})," OpenCart 4 support ",(0,i.jsx)(n.em,{children:"(2025-07-24, v2.0.0)"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," CSV usage log export now includes a ",(0,i.jsx)(n.code,{children:"lookups"})," column showing how many lookups each request consumed. See the ",(0,i.jsx)(n.a,{href:"/docs/api/key-logs",children:"CSV usage log API"})," for details."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Performance]"})," JavaScript libraries now served directly from the API for improved caching, reduced latency, and simplified integration"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"june-2025",children:"June 2025"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," Improved Republic of Ireland coverage for the standard dataset. All addresses now include Eircode (Irish postal codes)"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Documentation]"})," Documentation site now generates an LLM.txt file and ",(0,i.jsx)(n.code,{children:".md"})," files to better support language model integration"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," Improved handling of ordinals and directionals for US addresses"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"may-2025",children:"May 2025"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," Improved and extended UPRN matching for Royal Mail Multiple Residence and Not Yet Built addresses"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," Additional HERE datasets included"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," Localised and improved South Korea coverage with MOIS dataset"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"april-2025",children:"April 2025"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," Localised and improved Belgium coverage with FODBOSA"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," Localised and improved Japan coverage"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"march-2025",children:"March 2025"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Integration]"})," ShopWired: updated address widgets ",(0,i.jsx)(n.em,{children:"(2025-03-17, v3.0.0)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Ships the latest Address Finder and Postcode Lookup; drops Internet Explorer 11 support"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," Maximum allowed configurations increased to 64. Maximum payload size for each configuration object increased to 64 KB"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"february-2025",children:"February 2025"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," Expanded Canada coverage with Canada National Address Register dataset"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"january-2025",children:"January 2025"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," Expanded Denmark coverage with SDFI dataset"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"may-2024",children:"May 2024"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," Released ",(0,i.jsx)(n.code,{children:"/addresses/verify"})," API for USA CASS Verification"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"april-2024",children:"April 2024"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," Netherlands (Kadaster) address dataset incorporated"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," Norway (Kartverket) address dataset incorporated"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Performance]"})," Improved P95 and P99 latency"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"march-2024",children:"March 2024"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," AddressBase searches can now be filtered by property classification type (e.g. Commercial, Residential, Military, etc). See AddressBase data documentation for more information."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"february-2024",children:"February 2024"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," Search improvements for Iberian languages: Spanish, Catalan, Galician and Basque"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Address Finder]"})," Country selection is synced if ",(0,i.jsx)(n.code,{children:"country:"})," is defined in ",(0,i.jsx)(n.code,{children:"outputFields"})]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"january-2024",children:"January 2024"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," Australia GNAF address dataset added"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," CASS Certified USA address verification generally available"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"november-2023",children:"November 2023"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," Improvements to geospatial biasing for USA addresses"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"october-2023",children:"October 2023"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," Key settings can be updated via ",(0,i.jsx)(n.code,{children:"POST /keys/:key"})," API"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," Available datasets accessible through ",(0,i.jsx)(n.code,{children:"GET /keys/:key/details"})," API"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Address Finder]"})," Added the ability to ",(0,i.jsx)(n.code,{children:"fix"})," Address Finder"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"september-2023",children:"September 2023"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Address Finder]"})," Added new callback for changes in country or context"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Address Finder]"})," Country is automatically detected by IP address"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"august-2023",children:"August 2023"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," Hong Kong dataset included"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," Macau dataset included"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," Taiwan dataset included"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," India dataset included"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"july-2023",children:"July 2023"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," Asia Pacific data now available"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," Oceania dataset included"]}),"\n"]}
1),"\n",(0,i.jsx)(n.h2,{id:"june-2023",children:"June 2023"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," South America data now available"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," Middle East & Africa dataset included"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"may-2023",children:"May 2023"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," Eastern Europe data now available"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"april-2023",children:"April 2023"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," Western Europe data now available for Address Finder"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"march-2023",children:"March 2023"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," Improved ZIP and ZIP+4 searching on USA datasets"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," Improved apartment searches for GBR datasets"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"february-2023",children:"February 2023"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," AddressBase Core data now available for GBR address search"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"january-2023",children:"January 2023"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," ",(0,i.jsx)(n.code,{children:"/postcodes/:postcode"})," API now returns Eircode addresses if enabled on your account"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," Rooftop geolocations now available for Northern Ireland. Please contact us to have this enabled on your account"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," UPRNs now available for Northern Ireland. Please contact us to have this enabled on your account"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," ",(0,i.jsx)(n.code,{children:"/addresses/cleanse"})," GBR Cleanse API now available"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"december-2022",children:"December 2022"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," Phone Validation API now generally available"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," UK post towns are now titlecased (instead of all caps)"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," Republic of Ireland addresses can be retrieved via the ",(0,i.jsx)(n.code,{children:"/postcodes/:postcode"})," API if Eircode is enabled"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"november-2022",children:"November 2022"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," Email Validation API now available"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Security]"})," Wildcard subdomain allowed URLs available. Add ",(0,i.jsx)(n.code,{children:"*.domain.com"})," to allow requests from ",(0,i.jsx)(n.code,{children:"domain.com"})," and all related subdomains"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Address Finder]"})," Search improvements: Better search for numeric property numbers with preceding zeros. Improved search for address ranges"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"october-2022",children:"October 2022"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Security]"})," Allowed URLs now permit subdomain wildcards. E.g. ",(0,i.jsx)(n.code,{children:"*.example.com"})," will match ",(0,i.jsx)(n.code,{children:"example.com"})," as well as all subdomains"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"august-2022",children:"August 2022"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," New Places API"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," ",(0,i.jsx)(n.code,{children:"/places?query="})," to query for place suggestions"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," Allow for IP, geolocation and country filtering and biasing"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," ",(0,i.jsx)(n.code,{children:"places/:id"})," to resolve details for a place given a suggestion"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"july-2022",children:"July 2022"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," ",(0,i.jsx)(n.code,{children:"/autocomplete/addresses/:id/gbr"})," now returns the local format of an address if not located in GBR inside the ",(0,i.jsx)(n.code,{children:"native"})," attribute"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," ",(0,i.jsx)(n.code,{children:"/autocomplete/addresses/:id/usa"})," now returns the local format of an address if not located in USA inside the ",(0,i.jsx)(n.code,{children:"native"})," attribute"]}),"\n"]}
1),"\n",(0,i.jsx)(n.h2,{id:"june-2022",children:"June 2022"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," Irish Addresses (Eircode) now supported by the autocomplete API. Contact our support team to have this enabled on your account"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," ",(0,i.jsx)(n.code,{children:"/addresses"})," API now provides reverse geocoding if ",(0,i.jsx)(n.code,{children:"lon="})," and ",(0,i.jsx)(n.code,{children:"lat="})," query arguments are supplied. Results are ordered by proximity to the supplied geospatial points"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"may-2022",children:"May 2022"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," UK Alias addresses now generally available"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," ",(0,i.jsx)(n.code,{children:"/keys/:key"})," API now returns a ",(0,i.jsx)(n.code,{children:"contexts"})," field which correlates with the user's locality"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"april-2022",children:"April 2022"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," Welsh PAF addresses now generally available"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"march-2022",children:"March 2022"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," New ",(0,i.jsx)(n.code,{children:"autocomplete/addresses/:id/usa"})," API which resolves address suggestions to the USA address format"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"february-2022",children:"February 2022"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," Addressing data for USA available"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," ",(0,i.jsx)(n.code,{children:"/autocomplete/addresses"})," now accepts a ",(0,i.jsx)(n.code,{children:"context="})," argument which allows additional countries to be searched. This currently defaults to ",(0,i.jsx)(n.code,{children:"GBR"})," but also accepts ",(0,i.jsx)(n.code,{children:"USA"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," New ",(0,i.jsx)(n.code,{children:"autocomplete/addresses/:id/gbr"})," API which resolves address suggestions to the GBR address format (regardless of country)"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"january-2022",children:"January 2022"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," The standard GBR address objects now also return an ",(0,i.jsx)(n.code,{children:"id"})," attribute"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," The standard GBR address object now also returns a ",(0,i.jsx)(n.code,{children:"dataset"})," attribute which identifies the provenance of a result (e.g. ",(0,i.jsx)(n.code,{children:"paf"})," means Postcode Address File, ",(0,i.jsx)(n.code,{children:"mr"})," means Multiple Residence and ",(0,i.jsx)(n.code,{children:"nyb"})," means ",(0,i.jsx)(n.code,{children:"Not Yet Built"}),")"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," The standard GBR address object now also returns a ",(0,i.jsx)(n.code,{children:"country_iso"})," which returns the 3 letter ISO country code"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"december-2021",children:"December 2021"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," ",(0,i.jsx)(n.code,{children:"/addresses"})," and ",(0,i.jsx)(n.code,{children:"/autocomplete/addresses"})," now accept query arguments to bias results by a geospatial area defined by an origin (WGS84 coordinate) and radius (in metres) with ",(0,i.jsx)(n.code,{children:"bias_lonlat=[longitude],[latitude],[radius]"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," ",(0,i.jsx)(n.code,{children:"/addresses"})," and ",(0,i.jsx)(n.code,{children:"/autocomplete/addresses"}),' now accept query arguments to filter results by a geospatial box defined by "top-left" and "bottom-right" WGS84 coordinates. Filter addresses with ',(0,i.jsx)(n.code,{children:"box=[top left longitude],[top left latitude],[bottom right longitude],[bottom right latitude]"})]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"july-2021",children:"July 2021"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," ",(0,i.jsx)(n.code,{children:"/addresses"})," and ",(0,i.jsx)(n.code,{children:"/autocomplete/addresses"})," now accept query arguments to bias results by a geospatial area defined by an origin (WGS84 coordinate) and radius (in metres) with ",(0,i.jsx)(n.code,{children:"bias_lonlat=[longitude],[latitude],[radius]"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," ",(0,i.jsx)(n.code,{children:"/addresses"})," and ",(0,i.jsx)(n.code,{children:"/autocomplete/addresses"}),' now accept query arguments to filter results by a geospatial box defined by "top-left" and "bottom-right" WGS84 coordinates. Filter addresses with ',(0,i.jsx)(n.code,{children:"box=[top left longitude],[top left latitude],[bottom right longitude],[bottom right latitude]"})]}),"\n"]}
1),"\n",(0,i.jsx)(n.h2,{id:"june-2021",children:"June 2021"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," ",(0,i.jsx)(n.code,{children:"/addresses"})," and ",(0,i.jsx)(n.code,{children:"/autocomplete/addresses"})," now accept query arguments to bias results by locality or postcode elements like ",(0,i.jsx)(n.code,{children:"post_town"})," or ",(0,i.jsx)(n.code,{children:"postcode_sector"})," with ",(0,i.jsx)(n.code,{children:"bias_post_town="})," and ",(0,i.jsx)(n.code,{children:"bias_postcode_sector="})]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"may-2021",children:"May 2021"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," ",(0,i.jsx)(n.code,{children:"/postcodes/:postcode"})," now returns up to 5 suggested postcodes if there is no exact postcode match. It will check for common errors first (i.e. mixing up ",(0,i.jsx)(n.code,{children:"0"})," and ",(0,i.jsx)(n.code,{children:"O"})," or ",(0,i.jsx)(n.code,{children:"1"})," and ",(0,i.jsx)(n.code,{children:"I"}),")"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"april-2021",children:"April 2021"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," ",(0,i.jsx)(n.code,{children:"/postcodes/:postcode"})," now returns ",(0,i.jsx)(n.code,{children:"total"}),", ",(0,i.jsx)(n.code,{children:"limit"})," and ",(0,i.jsx)(n.code,{children:"page"})," attributes for all responses (not just Multiple Residence)"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"march-2021",children:"March 2021"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," ",(0,i.jsx)(n.code,{children:"/keys/:key"})," API now accepts sublicensee keys that begin ",(0,i.jsx)(n.code,{children:"sl_"})]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"february-2021",children:"February 2021"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Monitoring]"})," Incident feeds now available in Atom and RSS feed formats. E.g. ",(0,i.jsx)(n.a,{href:"https://meta.ideal-postcodes.co.uk/history.atom",children:"meta.ideal-postcodes.co.uk/history.atom"}),". See ",(0,i.jsx)(n.a,{href:"https://docs.ideal-postcodes.co.uk/api#section/Getting-Started/Metadata",children:"Status API documentation"})," for more information"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"january-2021",children:"January 2021"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Logging]"})," Usage log exports now report the ",(0,i.jsx)(n.code,{children:"Origin"})," header in the URL column if the ",(0,i.jsx)(n.code,{children:"Referer"})," is not available"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"december-2020",children:"December 2020"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," Checking key details with the ",(0,i.jsx)(n.code,{children:"/keys/:key"})," will now return a ",(0,i.jsx)(n.code,{children:"datasets"})," attribute. This identifies which datasets (i.e. PAF, Multiple Residence, Not Yet Built) this key has access to"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"november-2020",children:"November 2020"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Authentication]"})," Licensee keys may now be passed in via the API Key argument of the querystring (",(0,i.jsx)(n.code,{children:"api_key="}),") or authorization header ",(0,i.jsx)(n.code,{children:'IDEALPOSTCODES api_key=""'}),". Our documentation will be updated to reflect this as the primary method of identifying a licensee. However the earlier method of supplying both ",(0,i.jsx)(n.code,{children:"licensee"})," and ",(0,i.jsx)(n.code,{children:"api_key"})," will continue to be supported"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"october-2020",children:"October 2020"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," ",(0,i.jsx)(n.code,{children:"/addresses"})," now accepts no terms query. This means addresses can be searched using just filters like ",(0,i.jsx)(n.code,{children:"postcode"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," New filters available for ",(0,i.jsx)(n.code,{children:"/addresses"})," including ",(0,i.jsx)(n.code,{children:"postcode_area"}),", ",(0,i.jsx)(n.code,{children:"postcode_sector"}),", ",(0,i.jsx)(n.code,{children:"uprn"})," and more"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[API]"})," Search ",(0,i.jsx)(n.code,{children:"/addresses"})," with UPRNs using the ",(0,i.jsx)(n.code,{children:"uprn="})," filter"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"september-2020",children:"September 2020"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," Address responses now return a ",(0,i.jsx)(n.code,{children:"uprn"})," attribute for GB addresses"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"[Data]"})," GB address geolocations are now rooftop accurate if they have a ",(0,i.jsx)(n.code,{children:"uprn"})," assigned"]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,d.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},34056(e,n,s){s.d(n,{R:()=>l,x:()=>o});var r=s(22155);const i={},d=r.createContext(i);function l(e){const n=r.useContext(d);return r.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:l(e.components),r.createElement(d.Provider,{value:n},e.children)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.