Get a page and its site
GET/api/v1/content
- Since
- 1.0.0
- Auth
- Bearer key
- operationId
- getContent
The page at a path together with the site it belongs to: everything a frontend needs to render that page. page.kind tells a page built from blocks from the eight entity pages. 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).
Query parameters
- pathstring
Path of the page on the clinic's site.
curl "https://app.pozyskajpacjenta.pl/api/v1/content?path=/" \
-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, page } = await client.getContent("/rezerwacja");<?php
$response = wp_remote_get(
'https://app.pozyskajpacjenta.pl/api/v1/content?path=/',
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 and the page.
- 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 | nullrequiredsince 1.4.0
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.
- widthintegersince 1.4.0
Width of the original in px (library files, when known), for width/height attributes without layout shift.
- heightintegersince 1.4.0
Height of the original in px.
- aiGeneratedbooleansince 1.4.0
The image was generated by AI: label it next to the image (e.g. in a caption).
- captionstringsince 1.4.0
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.
- pageContentPagerequired
The page at
path.kind: "page"A page built from blocks in the clinic's page editor.
- kindstringrequired
Always
page.One of
page - pathstringrequired
Path of the page on the clinic's site.
- titlestringrequired
Page title (the h1 and the <title>).
- seoTitlestring | null
Title for <title> when it differs from
title; null otherwise. - seoDescriptionstring | null
Meta description; null when empty.
- blocksBlock[]required
The page's content blocks, in order.
Fields of each item (4)
- idstringrequired
Block id, stable within the page.
- typestringrequired
Block type with its version, e.g. hero.v1, faq.v1.
- propsobjectrequired
The block's fields; their shape depends on
type. - styleobjectsince 1.29.0
The section's frame, beside its content. Present on the blocks of a page.
Fields (1)
- tonestringsince 1.29.0
The surface the section stands on:
base(the page's ground),soft(a quiet step off it),contrast(the opposite polarity: a dark band on a light theme) orbrand(the theme's main colour as the ground). The clinic's site alternatesbaseandsoftdown the page unless the clinic chose a tone; derive a tone's colours from the theme tokens.One of
basesoftcontrastbrand
kind: "services"The treatments index (/zabiegi).
- kindstringrequired
Always
services.One of
services - pathstringrequired
Path of the page on the clinic's site.
- titlestringrequired
Page title (the h1 and the <title>).
- breadcrumbsCrumb[]required
Breadcrumb trail from the home page to this page.
Fields of each item (2)
- labelstringrequired
Text of the step.
- hrefstring | null
Path of the step; null for the current page.
- ctaCtarequired
The page's one call to action.
Fields (2)
- labelstringrequired
Button text.
- hrefstringrequired
Link target: tel:… or a path on the clinic's site.
- eyebrowstring
Short label above the title.
- leadstring | null
Paragraph under the title; null when the clinic left it empty.
- servicesServiceSummary[]required
Published treatments, in the clinic's order.
Fields of each item (9)
- idstringrequired
Treatment id.
- slugstringrequired
Slug from the treatment's address.
- pathstringrequired
Path on the clinic's site, e.g. /zabiegi/implanty.
- namestringrequired
Treatment name.
- categorystring | null
Category the clinic groups the treatment under; null when none.
- shortDescstring | null
One-sentence description for lists; null when empty.
- priceFromLabelstring | null
Price label, e.g. od 290 zł; null when the clinic shows no price.
- durationLabelstring | null
Duration label, e.g. zabieg 60 min; null when empty.
- bookingServiceIdstring | nullrequiredsince 1.3.0
Id of the active booking service this treatment is booked as: an entry of GET /booking/catalog and the
serviceparameter of /booking/slots. null when the treatment is not linked to booking or the linked service is inactive.
kind: "service"A treatment page (/zabiegi/{slug}).
- kindstringrequired
Always
service.One of
service - pathstringrequired
Path of the page on the clinic's site.
- titlestringrequired
Page title (the h1 and the <title>).
- breadcrumbsCrumb[]required
Breadcrumb trail from the home page to this page.
Fields as in Crumb above.
- ctaCtarequired
The page's one call to action.
Fields as in Cta above.
- serviceServiceDetailrequired
The treatment.
Fields (14)
- idstringrequired
Treatment id.
- slugstringrequired
Slug from the treatment's address.
- pathstringrequired
Path on the clinic's site, e.g. /zabiegi/implanty.
- namestringrequired
Treatment name.
- categorystring | null
Category the clinic groups the treatment under; null when none.
- shortDescstring | null
One-sentence description for lists; null when empty.
- priceFromLabelstring | null
Price label, e.g. od 290 zł; null when the clinic shows no price.
- durationLabelstring | null
Duration label, e.g. zabieg 60 min; null when empty.
- bookingServiceIdstring | nullrequiredsince 1.3.0
Id of the active booking service this treatment is booked as: an entry of GET /booking/catalog and the
serviceparameter of /booking/slots. null when the treatment is not linked to booking or the linked service is inactive. - heroMediaRef | null
Main image of the treatment page; null when none.
Fields as in MediaRef above.
- bodyBlocksBlock[]required
Content blocks of the treatment page.
Fields as in Block above.
- faqobject[]required
Questions and answers about the treatment.
Fields of each item (2)
- questionstringrequired
The question.
- answerstringrequired
The answer, plain text.
- relatedRelatedService[]required
Other published treatments the clinic links from this one.
Fields of each item (5)
- idstringrequired
Treatment id.
- slugstringrequired
Treatment slug.
- pathstringrequired
Path of the treatment page.
- namestringrequired
Treatment name.
- priceFromLabelstring | null
Price label, e.g. od 290 zł; null when the clinic shows no price.
- updatedAtstring (date-time)required
Last change, ISO 8601.
kind: "team"The team page (/zespol).
- kindstringrequired
Always
team.One of
team - pathstringrequired
Path of the page on the clinic's site.
- titlestringrequired
Page title (the h1 and the <title>).
- breadcrumbsCrumb[]required
Breadcrumb trail from the home page to this page.
Fields as in Crumb above.
- ctaCtarequired
The page's one call to action.
Fields as in Cta above.
- eyebrowstring
Short label above the title.
- leadstring | null
Paragraph under the title; null when the clinic left it empty.
- doctorsDoctorSummary[]required
Published team members, in the clinic's order.
Fields of each item (8)
- idstringrequired
Team member id.
- slugstringrequired
Slug from the profile's address.
- pathstringrequired
Path of the profile page.
- namestringrequired
Full name.
- titlestring | null
Professional title, e.g. lek. dent.; null when none.
- specializationsstring[]required
Specialisations, in the clinic's order.
- photoMediaRef | null
Portrait; null when none.
Fields as in MediaRef above.
- bookingResourceIdstring | nullrequiredsince 1.3.0
Id of the active booking specialist for this profile: an entry of GET /booking/catalog and the
resourceparameter of /booking/slots. null when the profile is not linked to booking or the specialist is inactive.
kind: "doctor"A team member's profile page (/zespol/{slug}).
- kindstringrequired
Always
doctor.One of
doctor - pathstringrequired
Path of the page on the clinic's site.
- titlestringrequired
Page title (the h1 and the <title>).
- breadcrumbsCrumb[]required
Breadcrumb trail from the home page to this page.
Fields as in Crumb above.
- ctaCtarequired
The page's one call to action.
Fields as in Cta above.
- doctorDoctorDetailrequired
The team member.
Fields (10)
- idstringrequired
Team member id.
- slugstringrequired
Slug from the profile's address.
- pathstringrequired
Path of the profile page.
- namestringrequired
Full name.
- titlestring | null
Professional title, e.g. lek. dent.; null when none.
- specializationsstring[]required
Specialisations, in the clinic's order.
- photoMediaRef | null
Portrait; null when none.
Fields as in MediaRef above.
- bookingResourceIdstring | nullrequiredsince 1.3.0
Id of the active booking specialist for this profile: an entry of GET /booking/catalog and the
resourceparameter of /booking/slots. null when the profile is not linked to booking or the specialist is inactive. - biostring | null
Biography, plain text with blank lines between paragraphs; null when empty.
- updatedAtstring (date-time)required
Last change, ISO 8601.
- servicesRelatedService[]required
Up to 6 of the clinic's treatments shown on the profile.
Fields as in RelatedService above.
kind: "case-studies"The case studies index (/realizacje).
- kindstringrequired
Always
case-studies.One of
case-studies - pathstringrequired
Path of the page on the clinic's site.
- titlestringrequired
Page title (the h1 and the <title>).
- breadcrumbsCrumb[]required
Breadcrumb trail from the home page to this page.
Fields as in Crumb above.
- ctaCtarequired
The page's one call to action.
Fields as in Cta above.
- eyebrowstring
Short label above the title.
- leadstring | null
Paragraph under the title; null when the clinic left it empty.
- caseStudiesCaseStudySummary[]required
Published case studies, newest first.
Fields of each item (8)
- idstringrequired
Case study id.
- slugstringrequired
Slug from the case study's address.
- pathstringrequired
Path of the case study page.
- titlestringrequired
Title.
- summarystring | null
Short summary; null when empty.
- imageMediaRef | null
List image. Since 1.20.0: a patient's photo added with consent, only when the patient agreed to show it on the clinic's site, served from /api/case-study-photo/{id} (supports ?w= and ?f=, cached briefly). A case study added before 1.20.0 keeps its library image as before until the patient refuses or withdraws. Otherwise null.
Fields as in MediaRef above.
- publishedAtstring (date-time) | null
Publication date, ISO 8601; null when unknown.
- resultsNotestring
Since 1.21.0: the fixed note to show with every case study ("Efekty zależą od indywidualnych cech pacjenta.").
kind: "case-study"A case study page (/realizacje/{slug}).
- kindstringrequired
Always
case-study.One of
case-study - pathstringrequired
Path of the page on the clinic's site.
- titlestringrequired
Page title (the h1 and the <title>).
- breadcrumbsCrumb[]required
Breadcrumb trail from the home page to this page.
Fields as in Crumb above.
- ctaCtarequired
The page's one call to action.
Fields as in Cta above.
- caseStudyCaseStudyDetailrequired
The case study.
Fields (17)
- idstringrequired
Case study id.
- slugstringrequired
Slug from the case study's address.
- pathstringrequired
Path of the case study page.
- titlestringrequired
Title.
- summarystring | null
Short summary; null when empty.
- beforeMediaRef | null
Image before the treatment. Since 1.20.0: a patient's photo added with consent, only when the patient agreed to show it on the clinic's site, served from /api/case-study-photo/{id} (supports ?w= and ?f=, cached briefly). A case study added before 1.20.0 keeps its library image as before until the patient refuses or withdraws. Otherwise null.
Fields as in MediaRef above.
- afterMediaRef | null
Image after the treatment. Since 1.20.0: a patient's photo added with consent, only when the patient agreed to show it on the clinic's site, served from /api/case-study-photo/{id} (supports ?w= and ?f=, cached briefly). A case study added before 1.20.0 keeps its library image as before until the patient refuses or withdraws. Otherwise null.
Fields as in MediaRef above.
- bodyBlocksBlock[]required
Content blocks of the case study.
Fields as in Block above.
- servicesRelatedService[]required
Treatments linked to the case study (published ones only).
Fields as in RelatedService above.
- publishedAtstring (date-time) | null
Publication date, ISO 8601; null when unknown.
- updatedAtstring (date-time)required
Last change, ISO 8601.
- resultsNotestring
Since 1.21.0: the fixed note to show with every case study ("Efekty zależą od indywidualnych cech pacjenta.").
- storyCaseStudyStory | null
Since 1.21.0: the four-part description; null for older case studies (their text is in bodyBlocks).
Fields (4)
- problemstringrequired
What the patient came with.
- treatmentstringrequired
What the clinic did.
- coursestringrequired
How the treatment went.
- effectstringrequired
The result.
- pairsCaseStudyPair[]
Since 1.21.0: every before and after pair; empty without the patient's consent.
- sessionsCountinteger | null
Since 1.21.0: the number of treatment sessions; null when not given.
- resultAfterDaysinteger | null
Since 1.21.0: how many days after the treatment the after photo was taken; null when not given.
- doctorSlugstring | null
Since 1.21.0: the specialist (GET /doctors/{slug}) when published; null otherwise.
kind: "posts"The posts index (/aktualnosci).
- kindstringrequired
Always
posts.One of
posts - pathstringrequired
Path of the page on the clinic's site.
- titlestringrequired
Page title (the h1 and the <title>).
- breadcrumbsCrumb[]required
Breadcrumb trail from the home page to this page.
Fields as in Crumb above.
- ctaCtarequired
The page's one call to action.
Fields as in Cta above.
- eyebrowstring
Short label above the title.
- postsPostSummary[]required
Published posts, newest first.
Fields of each item (7)
- idstringrequired
Post id.
- slugstringrequired
Slug from the post's address.
- pathstringrequired
Path of the post page.
- titlestringrequired
Title.
- excerptstring | null
Excerpt for lists; null when empty.
- coverMediaRef | null
Cover image; null when none.
Fields as in MediaRef above.
- publishedAtstring (date-time) | null
Publication date, ISO 8601; null when unknown.
kind: "post"A post page (/aktualnosci/{slug}).
- kindstringrequired
Always
post.One of
post - pathstringrequired
Path of the page on the clinic's site.
- titlestringrequired
Page title (the h1 and the <title>).
- breadcrumbsCrumb[]required
Breadcrumb trail from the home page to this page.
Fields as in Crumb above.
- ctaCtarequired
The page's one call to action.
Fields as in Cta above.
- postPostDetailrequired
The post.
Fields (12)
- idstringrequired
Post id.
- slugstringrequired
Slug from the post's address.
- pathstringrequired
Path of the post page.
- titlestringrequired
Title.
- excerptstring | null
Excerpt for lists; null when empty.
- coverMediaRef | null
Cover image; null when none.
Fields as in MediaRef above.
- publishedAtstring (date-time) | null
Publication date, ISO 8601; null when unknown.
- bodyBlocksBlock[]required
Content blocks of the post.
Fields as in Block above.
- seoTitlestring | null
Title for <title> when it differs from
title; null otherwise. - seoDescriptionstring | null
Meta description; null when empty.
- ogImageMediaRef | null
og:image of the post; null when none.
Fields as in MediaRef above.
- updatedAtstring (date-time)required
Last change, ISO 8601.
A page built from blocks (kind: page)
{
"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
},
"page": {
"kind": "page",
"path": "/rezerwacja",
"title": "Rezerwacja wizyty",
"seoTitle": null,
"seoDescription": "Zarezerwuj wizytę w Klinice Wzorcowej online: wybierz zabieg, lekarza i wolny termin.",
"blocks": [
{
"id": "fw-nav",
"type": "nav.v1",
"props": {
"variant": "with-cta",
"brandName": "Klinika Wzorcowa",
"links": [],
"ctaLabel": "Umów wizytę",
"ctaHref": "/rezerwacja"
}
},
{
"id": "fw-rez-hero",
"type": "hero.v1",
"props": {
"variant": "centered",
"eyebrow": "Rezerwacja online",
"heading": "Wybierz termin, który Ci pasuje",
"subheading": "Kalendarz pokazuje wyłącznie realnie wolne terminy. Potwierdzenie i link do zmiany rezerwacji dostaniesz e-mailem od razu."
}
}
]
}
}An entity page (kind: services)
{
"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
},
"page": {
"kind": "services",
"path": "/zabiegi",
"title": "Zabiegi i usługi",
"eyebrow": "Zabiegi",
"lead": "Pełen zakres leczenia w naszej klinice, poznaj przebieg, ceny i odpowiedzi na najczęstsze pytania.",
"breadcrumbs": [
{
"label": "Strona główna",
"href": "/"
},
{
"label": "Zabiegi"
}
],
"cta": {
"label": "Zadzwoń i umów wizytę",
"href": "tel:+48221002030"
},
"services": [
{
"id": "svc_konsultacja",
"slug": "konsultacja-stomatologiczna",
"name": "Konsultacja stomatologiczna",
"category": "Diagnostyka",
"shortDesc": "Przegląd jamy ustnej, diagnoza i plan leczenia z wyceną na piśmie, punkt startowy każdego leczenia.",
"priceFromLabel": "200 zł",
"durationLabel": "wizyta 30 min",
"bookingServiceId": "bsvc_konsultacja",
"path": "/zabiegi/konsultacja-stomatologiczna"
},
{
"id": "svc_impl",
"slug": "konsultacja-implantologiczna",
"name": "Konsultacja implantologiczna z tomografią 3D",
"category": "Implantologia",
"shortDesc": "Tomografia CBCT, ocena warunków kostnych i kompletny plan odbudowy implantologicznej na jednej wizycie.",
"priceFromLabel": "350 zł",
"durationLabel": "wizyta 45 min",
"bookingServiceId": "bsvc_impl",
"path": "/zabiegi/konsultacja-implantologiczna"
}
]
}
}Errors
| Status | When |
|---|---|
| 401 | No Authorization header |
| 401 | Unknown or rotated key |
| 404 | No published page at this path |
| 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": "page not found"
}{
"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.getContent(path?: string): Promise<SiteContent>
The TypeScript tab above uses it. Install and errors: TypeScript SDK.