---
title: "Create a hospital affiliation for a practitioner"
method: POST
path: "/practitioners/{practitionerId}/hospital-affiliations"
tags: ["Practitioner"]
---

# Create a hospital affiliation for a practitioner

`POST /practitioners/{practitionerId}/hospital-affiliations`

Creates a new hospital-affiliation entry on the practitioner record. The server assigns a stable UUID v4 and returns the full HospitalAffiliationResponse as the body. No Location header is set, matching the existing PractitionerResource POST convention.

## Path parameters

- `practitionerId` string, required

## Headers

- `tenant-id` string

## Request body

- CreateHospitalAffiliationRequest — Create payload for a practitioner-level hospital affiliation.
  - `name` string, required — Hospital name
  - `type` string, required — Type of affiliation
  - `specialty` string — Specialty practiced at the hospital
  - `state` string — State where hospital is located
  - `source` 'MANUAL' | 'ROSTER' | 'CAQH' — Source-of-truth tag for a practitioner-level hospital affiliation. Accepts MANUAL, ROSTER, CAQH (any case), or the legacy long-form CAQH label. Always serializes the canonical short label.
  - `startDate` string, date
  - `endDate` string, date
  - `status` string — Status of the affiliation

## Response `201`

Created

- HospitalAffiliationResponse — Practitioner-level hospital affiliation as exposed by the practitioner CRUD API.
  - `id` string, required — Stable UUID v4 identifying this affiliation. For legacy entries this may be a deterministic synthesized UUID until the next write backfills a real one.
  - `name` string — Hospital name
  - `type` string — Type of affiliation
  - `specialty` string — Specialty practiced at the hospital
  - `state` string — State where hospital is located
  - `source` 'MANUAL' | 'ROSTER' | 'CAQH' — Source-of-truth tag for a practitioner-level hospital affiliation. Accepts MANUAL, ROSTER, CAQH (any case), or the legacy long-form CAQH label. Always serializes the canonical short label.
  - `startDate` string — Start date of affiliation in YYYY-MM-DD format
  - `endDate` string — End date of affiliation in YYYY-MM-DD format
  - `status` string — Status of the affiliation

## Other responses

- `400` — Validation error
- `401` — Unauthorized
- `403` — Forbidden — caller lacks UPDATE_PRACTITIONER or feature disabled
- `404` — Practitioner not found
- `409` — Duplicate (name, type) for this practitioner

---

[API](https://skmtc.net/certifyos/apis/certify-api-layer.md) · [All operations](https://skmtc.net/certifyos/apis/certify-api-layer/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/certifyos/certify-api-layer/versions/3d27e9019c7b/schema)
