---
title: "Create a new medical specialty record"
method: POST
path: "/specialties"
tags: ["Specialty"]
---

# Create a new medical specialty record

`POST /specialties`

Creates a new medical specialty record for the tenant and returns the created object with server-assigned fields.

**When to use:** Use this endpoint to add a new specialty to the tenant's catalog. For NUCC taxonomy-specific entries use `POST /specialties/nucc` instead.

**Preconditions:** Requires the `CREATE_SPECIALTY` permission. The `tenant-id` header must be supplied. The request body must include a `data` object that is validated against the Specialty JSON Schema before the record is stored — a validation failure returns 400. The body may optionally include `nuccSpecialtyId`, `abmsSpecialtyId`, and `hsdSpecialtyId` to associate the specialty with external taxonomy references; all three are optional and independent of one another.

**Result:** On success returns 201 with the created specialty object, including the server-assigned `id` (a UUID-format string generated by the data layer). Not idempotent — repeat calls with the same payload create duplicate records. Errors: 400 is returned either for request-body JSON Schema validation failure or for a downstream data-layer error.

## Headers

- `tenant-id` string, required

## Request body

- CreateSpecialtyRequest
  - `nuccSpecialtyId` string
  - `abmsSpecialtyId` string
  - `hsdSpecialtyId` string
  - `data` SpecialtySchema — Represents the master specialty list, including custom specialties, to include crosswalk between NUCC, HSD, and ABMS Specialties. References the entities for NUCC, HSD, and ABMS specialties.
    - `name` string, required — The name of the specialty.
    - `classificationSource` string, required — The source of the specialty classification (e.g., NUCC, HSD, ABMS).
    - `subspecialtyName` string — The subspecialty name of the specialty.
    - `specialtyCategory` 'Individual' | 'Non-Individual', required — Allowed categories for NUCC Specialty
    - `taxonomyCode` string — The taxonomy code associated with the specialty.
    - `taxonomyDescription` string — The description of the taxonomy code.

## Response `201`

The specialty was created; the response body is the new record with its server-assigned ID.

- object
  - `id` string — Server-assigned UUID-format specialty identifier.
  - `data` SpecialtySchema — Represents the master specialty list, including custom specialties, to include crosswalk between NUCC, HSD, and ABMS Specialties. References the entities for NUCC, HSD, and ABMS specialties.
    - `name` string, required — The name of the specialty.
    - `classificationSource` string, required — The source of the specialty classification (e.g., NUCC, HSD, ABMS).
    - `subspecialtyName` string — The subspecialty name of the specialty.
    - `specialtyCategory` 'Individual' | 'Non-Individual', required — Allowed categories for NUCC Specialty
    - `taxonomyCode` string — The taxonomy code associated with the specialty.
    - `taxonomyDescription` string — The description of the taxonomy code.

## Other responses

- `400` — The request body failed Specialty JSON Schema validation, or a downstream data-layer error occurred.
- `401` — Unauthorized - Authentication required
- `403` — Forbidden - User does not have required permissions
- `500` — Internal Server Error - An unexpected error occurred

---

[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/revisions/563848e0ecc0/schema)
