Skip to content
Documentation
pozyskajpacjentaDocs

API referenceEntities

List case studies

GET/api/v1/case-studies

Since
1.1.0
Auth
Bearer key
operationId
listCaseStudies

The clinic's published case studies, newest first. 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/case-studies" \
  -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 { caseStudies } = await client.listCaseStudies();
<?php
$response = wp_remote_get(
    'https://app.pozyskajpacjenta.pl/api/v1/case-studies',
    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

200Published case studies.

  • caseStudiesCaseStudySummary[]required

    The case studies.

    Fields of each item (7)
    • 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; null when none.

      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.

    • publishedAtstring (date-time) | null

      Publication date, ISO 8601; null when unknown.

Published case studies

{
  "caseStudies": [
    {
      "id": "cs_odbudowa",
      "slug": "pelna-odbudowa-usmiechu",
      "title": "Pełna odbudowa uśmiechu na implantach",
      "summary": "Pacjent, 58 lat, po latach unikania dentysty: sześć implantów, korony pełnoceramiczne i nowy zgryz w cztery miesiące, bez jednego dnia bez zębów.",
      "publishedAt": "2026-06-20T00:00:00.000Z",
      "path": "/realizacje/pelna-odbudowa-usmiechu",
      "image": null
    },
    {
      "id": "cs_metamorfoza",
      "slug": "metamorfoza-przed-slubem",
      "title": "Metamorfoza przed ślubem, wybielanie i bonding",
      "summary": "Panna młoda, 29 lat, sześć tygodni do ślubu: wybielanie gabinetowe i bonding brzegów siecznych, naturalny efekt bez szlifowania zębów.",
      "publishedAt": "2026-05-15T00:00:00.000Z",
      "path": "/realizacje/metamorfoza-przed-slubem",
      "image": null
    }
  ]
}

Errors

StatusWhen
401No Authorization header
401Unknown or rotated key
429Over 120 requests in this minute

Branch on the status and code, never on the Polish error text. All statuses in Errors.

401 · No Authorization header
{
  "error": "missing Authorization: Bearer <klucz z panelu Ustawienia>"
}
401 · Unknown or rotated key
{
  "error": "invalid key"
}
429 · Over 120 requests in this minute
{
  "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-Remaining and RateLimit-Reset; see Rate limits.

SDK method

client.listCaseStudies(): Promise<{ caseStudies: CaseStudySummary[] }>

The TypeScript tab above uses it. Install and errors: TypeScript SDK.