From ideal-postcodes
Use when integrating the Ideal Postcodes API directly via HTTP. Covers authentication (header + query forms), the core lookup endpoints (postcodes, autocomplete, places, cleanse), key/licensee/config admin, data models (PafAddress, MrAddress, AddressSuggestion, etc.), error codes, rate limits, and common gotchas around CORS and allowed URLs.
How this skill is triggered — by the user, by Claude, or both
Slash command
/ideal-postcodes:ideal-postcodes-api-integrationThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Direct HTTP integration with the Ideal Postcodes API. Supports multiple client libraries and language SDKs.
build-config.jsonreferences/authentication.mdreferences/data/ab-address.mdreferences/data/address-suggestion.mdreferences/data/api-key.mdreferences/data/config.mdreferences/data/ecad-address.mdreferences/data/ecaf-address.mdreferences/data/geonames-place.mdreferences/data/licensee.mdreferences/data/mr-address.mdreferences/data/nyb-address.mdreferences/data/paf-address.mdreferences/data/place-suggestion.mdreferences/data/uk-address-suggestion.mdreferences/data/welsh-paf-address.mdreferences/endpoints/address-cleanse.mdreferences/endpoints/create-config.mdreferences/endpoints/create-licensee.mdreferences/endpoints/delete-config.mdDirect HTTP integration with the Ideal Postcodes API. Supports multiple client libraries and language SDKs.
const key = process.env.IDEAL_POSTCODES_API_KEY;
const response = await fetch(
'https://api.ideal-postcodes.co.uk/v1/postcodes/SW1A1AA',
{
headers: {
Authorization: `api_key="${key}"`,
},
}
);
const data = await response.json();
console.log(data.result); // Array of addresses
Alternatively, pass ?api_key=... in the query string.
import axios from 'axios';
const client = axios.create({
baseURL: 'https://api.ideal-postcodes.co.uk/v1',
headers: {
Authorization: `api_key="${process.env.IDEAL_POSTCODES_API_KEY}"`,
},
});
const { data } = await client.get('/postcodes/SW1A1AA');
console.log(data.result);
GET /postcodes/{postcode} — Lookup all addresses for a UK postcodeGET /autocomplete/addresses — Typeahead address searchGET /autocomplete/addresses/{address}/gbr — Resolve a UK autocomplete suggestionGET /places / GET /places/{place} — Place search and resolvePOST /cleanse/addresses — Cleanse a freeform address stringGET /emails, GET /phone_numbers — Email and phone validationSee endpoints/ for the full list (23 operations).
Authorization: api_key="<your-key>" (with double quotes around the key). Not Bearer, not ApiKey <key>. Query-string ?api_key=... also workshttp://localhost in development. Production domains must be explicitly added to your keycode and human-readable message. Check codes before retrying — see error-codes.mdauthentication.md — header and query auth, key restrictionserror-codes.md — error code catalogue with fixesendpoints/ — one reference per API operation (parameters, request body, response schema, examples, status codes)data/ — one reference per data model (PafAddress, MrAddress, AddressSuggestion, etc.) with field tables and "used by" cross-linksThe complete OpenAPI spec is available at:
@ideal-postcodes/openapiReach for it when you need exhaustive parameter detail beyond what's in the endpoint references.
The full Ideal Postcodes documentation — every guide, API reference, and integration — is available as a single file at llms.txt. Point your agent there for anything this skill doesn't cover.
npx claudepluginhub ideal-postcodes/skills --plugin ideal-postcodesCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.