馃摤 PNA (Postal Codes) API Documentation

[EN] High-performance API for searching Polish Postal Codes (PNA), validating addresses, and autocomplete suggestions. Optimized for precise house number matching (ranges, odd/even logic). [PL] Wysokowydajne API do wyszukiwania kod贸w pocztowych (PNA), weryfikacji adres贸w i autouzupe艂niania. Zoptymalizowane pod k膮tem precyzyjnego dopasowania numer贸w dom贸w (zakresy, parzysto艣膰).

PL Je艣li jeste艣 zainteresowany(a) u偶yciem API, skontaktuj si臋 prosz臋 przez formularz kontaktowy: https://wroclawprogramowanie/contact-form/

EN If you鈥檙e interested in using the API, please contact us via the contact form: https://wroclawprogramowanie/contact-form/


馃攼 Authentication / Uwierzytelnianie

[EN] All requests require an API Key (Header) or Bearer Token. [PL] Wszystkie zapytania wymagaj膮 klucza API (Nag艂贸wek) lub tokena Bearer.

MethodHeader NameExample
API KeyX-Rapid-SecretX-Rapid-Secret: abc12345
BearerAuthorizationAuthorization: Bearer <jwt_token>

馃殌 Endpoints / Punkty Ko艅cowe

1. Search Postal Code (GET) / Szukaj Kodu (GET)

[EN] Find PNA based on address details. Supports house numbers. [PL] Znajd藕 PNA na podstawie adresu. Obs艂uguje numery dom贸w.

Endpoint: GET /pna/search

Parameters:

  • city (required): City name (e.g., “Wroc艂aw”)
  • street (optional): Street name (e.g., “Kwiska”)
  • number (optional): House number (e.g., “31”, “2a”)

Example / Przyk艂ad:

bashcurl -X GET "https://pnaapi.wroclawprogramowanie.pl/pna/search?city=Wroc艂aw&street=Kwiska&number=3" \
     -H "Authorization: Bearer <token>"

Response / Odpowied藕:

json[
  {
    "postal_code": "54-210",
    "city": "Wroc艂aw",
    "street": "Kwiska",
    "district": "Wroc艂aw-Fabryczna",
    "ranges": [
      { "from": "1", "to": "11a", "parity": "ODD" }
    ]
  }
]

2. Search Postal Code (POST) / Szukaj Kodu (POST)

[EN] Advanced search using JSON body. Recommended for complex queries. [PL] Zaawansowane wyszukiwanie przy u偶yciu JSON. Zalecane dla z艂o偶onych zapyta艅.

Endpoint: POST /pna/search

Body:

json{
  "city": "Bia艂ystok",
  "street": "Miko艂aja Kopernika",
  "number": "2a",
  "province": "podlaskie"
}

Example / Przyk艂ad:

bashcurl -X POST "https://pnaapi.wroclawprogramowanie.pl/pna/search" \
     -H "Content-Type: application/json" \
     -H "Authorization: Bearer <token>" \
     -d '{"city": "Bia艂ystok", "street": "Miko艂aja Kopernika", "number": "2a"}'

3. Get Addresses by Code (GET) / Adresy dla Kodu (GET)

[EN] Retrieve all streets assigned to a specific Postal Code. [PL] Pobierz wszystkie ulice przypisane do danego kodu pocztowego.

Endpoint: GET /pna/code/{postalCode}

Example / Przyk艂ad:

bashcurl -X GET "https://pnaapi.wroclawprogramowanie.pl/pna/code/54-210" \
     -H "Authorization: Bearer <token>"

4. Get Addresses by Code (POST) / Adresy dla Kodu (POST)

[EN] Retrieve addresses for a Postal Code sent in JSON body. [PL] Pobierz adresy dla kodu przes艂anego w ciele JSON.

Endpoint: POST /pna/code

Body:

json{
  "postal_code": "54-210"
}

Example / Przyk艂ad:

bashcurl -X POST "https://pnaapi.wroclawprogramowanie.pl/pna/code" \
     -H "Content-Type: application/json" \
     -H "Authorization: Bearer <token>" \
     -d '{"postal_code": "54-210"}'

5. Reverse Geocoding

[EN] Finds nearest Postal Codes for given coordinates. [PL] Znajduje najbli偶sze kody pocztowe dla zadanych wsp贸艂rz臋dnych.

Endpoint: GET /pna/reverse Parameters:

  • Lat (required): Latitude between -90 and 90
  • Lon (required): Longitude between -180 and 180
  • RadiusKm (optional): Radius between 0.1 and 50 km (default 5)

Endpoint: POST /pna/reverse

Body:

json{
  "lat": 51.12161528781476,
  "lon": 16.98550601056978,
  "radius_km": 0.1
}

Example / Przyk艂ad:

curl -X 'POST' \
  'https://pnaapi.wroclawprogramowanie.pl/pna/reverse' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer <token>' \
  -H 'Content-Type: application/json' \
  -d '{
  "lat": 51.12161528781476,
  "lon": 16.98550601056978,
  "radius_km": 0.1
}'

6. Autocomplete Streets / Podpowiedzi Ulic

[EN] Get real-time street suggestions. [PL] Pobierz podpowiedzi nazw ulic w czasie rzeczywistym.

Endpoint: GET /pna/autocomplete/streets

Parameters:

  • query (min 2 chars): Partial street name / Fragment nazwy
  • city (optional): Filter by city / Filtruj po mie艣cie

Example / Przyk艂ad:

bashcurl -X GET "https://api.example.com/pna/autocomplete/streets?query=Legn&city=Wroc艂aw" \
     -H "Authorization: Bearer <token>"

Response / Odpowied藕:

json
["Legnicka", "Legnicka Ma艂a"]

7. Autocomplete Cities / Podpowiedzi Miast

[EN] Get real-time city suggestions. [PL] Pobierz podpowiedzi nazw miast w czasie rzeczywistym.

Endpoint: GET /pna/autocomplete/cities

Example / Przyk艂ad:

bashcurl -X GET "https://pnaapi.wroclawprogramowanie.pl/pna/autocomplete/cities?query=Wroc" \
     -H "Authorization: Bearer <token>"

馃 AI Integration / Integracja z AI

[EN] This API is AI-Ready. Use the following endpoints for LLM context: [PL] To API jest gotowe na AI. U偶yj poni偶szych endpoint贸w dla kontekstu LLM:

  • GET /pna/ai-guide - Semantic instructions / Instrukcje semantyczne
  • GET /.well-known/ai-plugin.json - OpenAI Plugin Manifest / Manifest Pluginu OpenAI