Przejdź do głównej zawartości

Doctor profile

Public, bez auth. Rate limit 600 req/min per IP.

GET /doctors/{slug}​

Pełen profil lekarza.

curl https://api.pandoktorek.pl/doctors/dr-anna-kowalczyk-warszawa

Response​

{
"slug": "dr-anna-kowalczyk-warszawa",
"first_name": "Anna",
"last_name": "Kowalczyk",
"title": "dr",
"degree": "dr n. med.",
"bio": "10 lat doświadczenia w dermatologii estetycznej...",
"photo_url": "https://...",
"specializations": ["dermatologia", "wenerologia"],
"languages": ["pl", "en"],
"is_telehealth_enabled": true,
"accepts_kids": false,
"pwz": "1234567",
"clinic": {
"slug": "medtrust-warszawa",
"name": "MedTrust Warszawa",
"address": "ul. Marszałkowska 1, 00-001 Warszawa",
"phone": "+48221234567"
},
"avg_rating": 4.8,
"review_count": 127,
"is_placeholder": false
}

is_placeholder=true — lekarz nie odebrał claim email'a, profile = default.

GET /doctors/{slug}/services​

Lista usług oferowanych przez lekarza.

{
"services": [
{
"id": "uuid-...",
"name": "Konsultacja dermatologiczna",
"description": "...",
"duration_minutes": 30,
"price_cents": 25000,
"currency": "PLN",
"is_nfz": false
}
]
}

GET /doctors/{slug}/slots​

Available sloty dla rezerwacji.

Query params​

ParamTypOpis
fromdateDefault = dziś (Warsaw TZ)
todateDefault = +30 dni
service_iduuidFiltruje po services_allowed

Response​

{
"slots": [
{
"id": "uuid-...",
"start_at": "2026-05-10T10:00:00+02:00",
"end_at": "2026-05-10T10:30:00+02:00",
"services_available": [
{"id": "uuid-...", "name": "Konsultacja", "price_cents": 25000}
]
}
]
}

Tylko status=available (filter w SQL). Sloty booked / blocked nie są zwracane.

GET /doctors/{slug}/reviews​

Public reviews.

Query params​

ParamDefaultOpis
page1
page_size20 (max 100)
sortrecentrecent / rating_desc / rating_asc

Response​

{
"items": [
{
"id": "uuid-...",
"rating": 5,
"comment": "Pani doktor była bardzo dokładna...",
"patient_first_name": "Anna",
"created_at": "2026-04-15T14:30:00+02:00",
"doctor_response": {
"comment": "Dziękuję za miłe słowa!",
"responded_at": "2026-04-15T18:00:00+02:00"
}
}
],
"total": 127,
"page": 1,
"page_size": 20
}

patient_first_name — tylko imię (G-PRIV-001).

SEO​

Profile lekarzy są SSR'owane w Next.js + Schema.org JSON-LD. Twój system NIE musi nic robić — Pandoktorek odpowiada za SEO marketplace.

sitemap.xml: https://pandoktorek.pl/sitemap.xml