> ## Documentation Index
> Fetch the complete documentation index at: https://docs.clinikapi.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Client

> The Clinik client class and its configuration.

# Clinik Client

The `Clinik` class is the entry point for all SDK operations. It manages authentication, retries, rate limit metadata, and request serialization.

## Constructor

```ts theme={null}
import { Clinik } from '@clinikapi/sdk';

const clinik = new Clinik(apiKey: string, options?: ClinikOptions);
```

### Parameters

| Parameter | Type            | Required | Description                                        |
| --------- | --------------- | -------- | -------------------------------------------------- |
| `apiKey`  | `string`        | Yes      | Your secret API key (`clk_live_*` or `clk_test_*`) |
| `options` | `ClinikOptions` | No       | Configuration options                              |

### ClinikOptions

| Field     | Type     | Default                     | Description            |
| --------- | -------- | --------------------------- | ---------------------- |
| `baseUrl` | `string` | `https://api.clinikapi.com` | API base URL           |
| `timeout` | `number` | `30000`                     | Request timeout (ms)   |
| `retries` | `number` | `2`                         | Max retries on 5xx/429 |

## Resource Namespaces

The client exposes 62 resource namespaces, organized by FHIR domain:

```ts theme={null}
// ── Individuals ──────────────────────────────────────────
clinik.patients              // Patient
clinik.practitioners         // Practitioner
clinik.practitionerRoles     // PractitionerRole
clinik.persons               // Person
clinik.familyHistory         // FamilyMemberHistory

// ── Entities ─────────────────────────────────────────────
clinik.organizations         // Organization
clinik.locations             // Location
clinik.healthcareServices    // HealthcareService
clinik.devices               // Device

// ── Clinical — Summary ───────────────────────────────────
clinik.conditions            // Condition
clinik.allergies             // AllergyIntolerance
clinik.assessments           // ClinicalImpression

// ── Clinical — Diagnostics ───────────────────────────────
clinik.observations          // Observation
clinik.labs                  // DiagnosticReport
clinik.specimens             // Specimen
clinik.imagingStudies        // ImagingStudy
clinik.media                 // Media
clinik.riskAssessments       // RiskAssessment

// ── Clinical — Medications ───────────────────────────────
clinik.medications           // Medication
clinik.prescriptions         // MedicationRequest
clinik.medicationDispenses   // MedicationDispense
clinik.medicationStatements  // MedicationStatement
clinik.medicationKnowledge   // MedicationKnowledge
clinik.immunizations         // Immunization
clinik.immunizationEvaluations // ImmunizationEvaluation
clinik.immunizationRecommendations // ImmunizationRecommendation
clinik.nutritionOrders       // NutritionOrder
clinik.visionPrescriptions   // VisionPrescription

// ── Clinical — Care Provision ────────────────────────────
clinik.encounters            // Encounter
clinik.carePlans             // CarePlan
clinik.careTeams             // CareTeam
clinik.goals                 // Goal
clinik.serviceRequests       // ServiceRequest
clinik.deviceRequests        // DeviceRequest
clinik.deviceUseStatements   // DeviceUseStatement
clinik.consents              // Consent

// ── Clinical — Documents and Forms ───────────────────────
clinik.notes                 // DocumentReference
clinik.documents             // Composition
clinik.intakes               // QuestionnaireResponse

// ── Scheduling ───────────────────────────────────────────
clinik.appointments          // Appointment
clinik.appointmentResponses  // AppointmentResponse
clinik.schedules             // Schedule
clinik.slots                 // Slot

// ── Workflow ─────────────────────────────────────────────
clinik.tasks                 // Task
clinik.activityDefinitions   // ActivityDefinition
clinik.planDefinitions       // PlanDefinition

// ── Financial — Billing ──────────────────────────────────
clinik.accounts              // Account
clinik.chargeItems           // ChargeItem
clinik.invoices              // Invoice

// ── Financial — Claims and Reimbursement ─────────────────
clinik.claims                // Claim
clinik.claimResponses        // ClaimResponse
clinik.eobs                  // ExplanationOfBenefit
clinik.paymentNotices        // PaymentNotice
clinik.paymentReconciliations // PaymentReconciliation

// ── Financial — Insurance ────────────────────────────────
clinik.coverages             // Coverage
clinik.eligibilityRequests   // CoverageEligibilityRequest
clinik.eligibilityResponses  // CoverageEligibilityResponse
clinik.enrollmentRequests    // EnrollmentRequest
clinik.enrollmentResponses   // EnrollmentResponse

// ── Quality and Audit ────────────────────────────────────
clinik.measures              // Measure
clinik.measureReports        // MeasureReport
clinik.auditEvents           // AuditEvent
```

Each namespace provides:

| Method               | Description                    |
| -------------------- | ------------------------------ |
| `create(data)`       | Create a new resource          |
| `read(id, options?)` | Read a resource by ID          |
| `update(id, data)`   | Update a resource (JSON Patch) |
| `delete(id)`         | Delete a resource              |
| `search(params?)`    | Search with pagination         |

## FHIR Escape Hatch

For raw FHIR R4 requests:

```ts theme={null}
clinik.fhir.request(method: string, path: string, body?: unknown)
```

See [FHIR Passthrough](/sdk/fhir-passthrough) for details.

## Response Type

Every method returns `ApiResponse<T>`:

```ts theme={null}
interface ApiResponse<T> {
  data: T;
  meta: ResponseMeta;
}

interface ResponseMeta {
  requestId: string;
  timestamp: string;
  status: number;
  rateLimitTotal?: number;
  rateLimitRemaining?: number;
  rateLimitReset?: number;
}
```

## Security Features

The SDK includes built-in security protections:

* **Browser detection** — warns if used in a browser environment
* **HTTPS enforcement** — warns if `baseUrl` is not HTTPS
* **Path traversal protection** — resource IDs are validated against `[a-zA-Z0-9\-_.]`
* **FHIR include injection prevention** — `_include` values are validated
* **Body size limits** — requests over 1MB are rejected before sending
* **PHI sanitization** — error messages never contain patient data
* **Jittered retries** — prevents thundering herd on failures
