Get the site
GET/api/v1/site
- Since
- 1.4.0
- Auth
- Bearer key
- operationId
- getSite
The same site object GET /content returns next to a page: name, domain, menu, theme and the clinic profile (contact, address, hours, NFZ, payments, logos). Use it for layouts, footers, JSON-LD and metadata without fetching a page. Responses are private to the key: Cache-Control: private, max-age=60, so cache them on your side for up to a minute.
Request
Send the clinic's key in Authorization: Bearer (see API keys).
No parameters and no body.
curl "https://app.pozyskajpacjenta.pl/api/v1/site" \
-H "Authorization: Bearer $PP_API_KEY"import { PozyskajPacjentaClient } from "@pozyskajpacjenta/sdk";
const client = new PozyskajPacjentaClient({
apiKey: process.env.PP_API_KEY ?? "",
baseUrl: "https://app.pozyskajpacjenta.pl",
});
const { site } = await client.getSite();<?php
$response = wp_remote_get(
'https://app.pozyskajpacjenta.pl/api/v1/site',
array(
'headers' => array( 'Authorization' => 'Bearer ' . getenv( 'PP_API_KEY' ) ),
'timeout' => 10,
)
);
if ( is_wp_error( $response ) ) {
error_log( $response->get_error_message() );
return;
}
$status = wp_remote_retrieve_response_code( $response );
$data = json_decode( wp_remote_retrieve_body( $response ), true );Response
200The site.
- siteSiterequired
The clinic's site.
Fields (6)
- namestringrequired
Name of the clinic as shown on the site.
- primaryDomainstring | null
The site's main domain; null before a domain is connected.
- menuMenuItem[]required
The main menu, in order.
Fields of each item (2)
- labelstringrequired
Text of the menu item.
- pathstringrequired
Path on the clinic's site, e.g. /zabiegi.
- themeThemeTokensrequired
Theme tokens of the site.
- profileSiteProfile | nullrequired
The clinic profile; null until the clinic fills it in.
Fields (20)
- specialtystringsince 1.13.0
The clinic's specialty: a key of the platform's list (e.g. stomatologia, okulistyka), chosen in the start wizard or by the site migration. Absent when none (or "other") was chosen.
One of
stomatologiamedycyna-estetycznafizjoterapiaginekologiadermatologiaokulistykaweterynariapsychologiacentrum-medyczneortopediapediatriadietetyka - vocabularystringsince 1.26.0
The word family of the clinic's site on the platform:
medical(dental and medical practices),optical(an optician's shop, filed under okulistyka but not a healthcare entity),vet, orbusiness(any other business that is not a healthcare entity). Pick the UI words (treatment or service, doctor or specialist) and the schema.org types by it.medicalis also the answer when the platform knows nothing about the business (no specialty or entity kind from the wizard), so do not take it as a decision about the vertical. Absent on an older server: do not assumemedical.One of
medicalopticalvetbusiness - legalNamestring
Registered name of the entity that runs the clinic.
- phonestring
Phone number for display, e.g. +48 22 100 20 30. For a tel: link keep the digits and the +.
- emailstring (email)
The clinic's contact e-mail.
- addressSiteAddress
The clinic's address.
Fields (5)
- streetstringrequired
Street and number.
- postalCodestringrequired
Postal code, 00-000.
- citystringrequired
City.
- districtstring
District, e.g. Mokotów.
- accessNotestring
How to get in: entrance, floor, parking, lift.
- geoobject
Map point of the clinic.
Fields (2)
- latnumberrequired
Latitude.
- lngnumberrequired
Longitude.
- openingHoursOpeningHours
Opening hours per weekday.
Fields (7)
- monOpeningInterval[]
Monday's intervals.
Fields of each item (2)
- opensstringrequired
Opening time, HH:MM.
- closesstringrequired
Closing time, HH:MM, later than
opens.
- tueOpeningInterval[]
Tuesday's intervals.
Fields as in OpeningInterval above.
- wedOpeningInterval[]
Wednesday's intervals.
Fields as in OpeningInterval above.
- thuOpeningInterval[]
Thursday's intervals.
Fields as in OpeningInterval above.
- friOpeningInterval[]
Friday's intervals.
Fields as in OpeningInterval above.
- satOpeningInterval[]
Saturday's intervals.
Fields as in OpeningInterval above.
- sunOpeningInterval[]
Sunday's intervals.
Fields as in OpeningInterval above.
- openingHoursNotestring
Note shown next to the hours, e.g. until when the phone is answered.
- nfzobject
Contract with the National Health Fund (NFZ).
Fields (2)
- contractbooleanrequired
true when the clinic has an NFZ contract.
- notestring
Note about the NFZ contract, e.g. which services it covers.
- paymentsobject
Accepted payment methods.
Fields (2)
- methodsstring[]required
Payment methods as the clinic names them, e.g. gotówka, karta, BLIK.
- notestring
Note about payments, e.g. instalments.
- socialsobject[]
Links to the clinic's profiles elsewhere.
Fields of each item (2)
- networkstringrequired
The network.
One of
facebookinstagramyoutubetiktoklinkedinxgoogleznanylekarzother - urlstringrequired
Profile address (https://).
- logoMediaRef | null
Logo; null when the file was removed from the media library.
Fields (8)
- urlstringrequired
Absolute address of the file.
- focalXinteger | null
Horizontal focal point in percent (0 to 100) to keep when cropping, e.g. as object-position.
- focalYinteger | null
Vertical focal point in percent (0 to 100).
- altstring | null
Alternative text; null when the clinic left it empty.
- widthinteger
Width of the original in px (library files, when known), for width/height attributes without layout shift.
- heightinteger
Height of the original in px.
- aiGeneratedboolean
The image was generated by AI: label it next to the image (e.g. in a caption).
- captionstring
Caption to show under the image.
- logoInverseMediaRef | null
Logo for dark backgrounds.
Fields as in MediaRef above.
- faviconMediaRef | null
Favicon file.
Fields as in MediaRef above.
- defaultOgImageMediaRef | null
og:image for pages that have none of their own.
Fields as in MediaRef above.
- registryobject
Registry numbers. Show only the ones that are set.
Fields (4)
- rpwdlstring
Number in the register of medical entities (RPWDL).
- nipstring
Tax identification number (NIP).
- regonstring
Statistical number (REGON).
- krsstring
Court register number (KRS).
- privacyobjectsince 1.7.0
Data for the privacy policy and the information clause. The controller is
legalNamewith the address and theregistrynumbers. Full policy text: GET /privacy.Fields (4)
- contactEmailstring (email)since 1.7.0
E-mail for personal-data requests; the clinic's
emailwhen unset. - registeredOfficestringsince 1.7.0
The controller's registered office, when it differs from the clinic address.
- dpoNamestringsince 1.7.0
Data protection officer, when one is appointed.
- dpoEmailstring (email)since 1.7.0
The data protection officer's e-mail.
- reviewsPolicystring
How the clinic collects and checks the reviews it shows on its site.
- demoNoticestring
A notice for every page (e.g. a demo site). Show it when present.
- noindexbooleansince 1.5.0
true: the site stays out of search engines (a demo, or before launch). Add meta robots noindex to every page (ideally also the header X-Robots-Tag: noindex) and publish no sitemap. Keep robots.txt open (
Allow: /, no Sitemap line): a crawler has to fetch the pages to see the noindex and drop URLs it indexed before.
The site with its clinic profile
{
"site": {
"name": "Klinika Wzorcowa",
"primaryDomain": "wzorcowa.pozyskajpacjenta.pl",
"menu": [
{
"label": "Strona główna",
"path": "/"
},
{
"label": "Zabiegi",
"path": "/zabiegi"
},
{
"label": "Zespół",
"path": "/zespol"
},
{
"label": "Rezerwacja",
"path": "/rezerwacja"
}
],
"theme": {
"version": 1,
"colors": {
"background": "#faf7f1",
"foreground": "#211d18",
"surface": "#fffdf9",
"surface2": "#f3ede1",
"muted": "#f1eadb",
"mutedForeground": "#655c4e",
"primary": "#7a5c2e",
"primaryForeground": "#fffdf9",
"accent": "#2c2a25",
"accentForeground": "#f5efe2",
"border": "#e3dac7"
},
"colorsDark": {
"background": "#171310",
"foreground": "#f2ecdf",
"surface": "#201b15",
"surface2": "#2a241b",
"muted": "#242017",
"mutedForeground": "#b5aa93",
"primary": "#d3ab63",
"primaryForeground": "#231b0e",
"accent": "#ece0c6",
"accentForeground": "#1c1712",
"border": "#3a3326"
},
"radius": "0.375rem",
"radiusPill": "9999px",
"fontSans": "\"Inter\", \"Inter Fallback\", system-ui, sans-serif",
"fontHeading": "\"Fraunces\", \"Fraunces Fallback\", Georgia, serif",
"type": {
"baseMinPx": 16,
"baseMaxPx": 17.5,
"ratioMin": 1.18,
"ratioMax": 1.3,
"headingWeight": 560,
"bodyWeight": 400,
"headingLineHeight": 1.04,
"bodyLineHeight": 1.62,
"headingTracking": -0.012
},
"rhythm": {
"sectionYMinRem": 5,
"sectionYMaxRem": 10,
"container": "76rem"
},
"elevation": {
"shadowColor": "#2a2114",
"strength": 0.16
},
"motion": {
"durationFastMs": 180,
"durationBaseMs": 340,
"durationSlowMs": 750,
"easeOut": "cubic-bezier(0.22, 1, 0.36, 1)",
"easeSpring": "cubic-bezier(0.32, 1.2, 0.6, 1)"
},
"imagery": {
"overlayColor": "#1a1208",
"overlayOpacity": 0.5,
"imageRadius": "0.375rem"
}
},
"profile": {
"legalName": "Klinika Wzorcowa sp. z o.o.",
"phone": "+48 22 100 20 30",
"email": "recepcja@klinika-wzorcowa.example",
"address": {
"street": "ul. Przykładowa 12",
"postalCode": "00-950",
"city": "Warszawa",
"district": "Mokotów",
"accessNote": "Wejście od podwórza, parter, winda."
},
"geo": {
"lat": 52.1935,
"lng": 21.0346
},
"openingHours": {
"mon": [
{
"opens": "08:00",
"closes": "20:00"
}
],
"tue": [
{
"opens": "08:00",
"closes": "20:00"
}
],
"wed": [
{
"opens": "08:00",
"closes": "20:00"
}
],
"thu": [
{
"opens": "08:00",
"closes": "20:00"
}
],
"fri": [
{
"opens": "08:00",
"closes": "16:00"
}
],
"sat": [
{
"opens": "09:00",
"closes": "14:00"
}
]
},
"openingHoursNote": "Rejestracja telefoniczna do 19:00.",
"nfz": {
"contract": false
},
"payments": {
"methods": [
"gotówka",
"karta",
"BLIK"
]
}
},
"noindex": false
}
}Errors
| Status | When |
|---|---|
| 401 | No Authorization header |
| 401 | Unknown or rotated key |
| 404 | The clinic's site is not published |
| 429 | Over 120 requests in this minute |
Branch on the status and code, never on the Polish error text. All statuses in Errors.
{
"error": "missing Authorization: Bearer <klucz z panelu Ustawienia>"
}{
"error": "invalid key"
}{
"error": "site not published"
}{
"error": "przekroczono limit 120 zapytań/min"
}Rate limit
- 120 requests per minute per key, shared by every endpoint.
- Every response to a valid key carries
RateLimit-RemainingandRateLimit-Reset; see Rate limits.
SDK method
client.getSite(): Promise<SiteInfo>
The TypeScript tab above uses it. Install and errors: TypeScript SDK.