---
title: "Add a new location to a group"
method: POST
path: "/groups/{groupId}/locations"
tags: ["Group"]
---

# Add a new location to a group

`POST /groups/{groupId}/locations`

Adds a new location to an existing group, creating the necessary location and group-location membership records (and, if address information is provided, linked address records). Designed for batch ingestion workflows where location data arrives from an external roster or source system, but also suitable for individual location additions. The request body only strictly requires locationData as an object — no field inside it is independently enforced by request validation. Not idempotent — repeated calls create additional location records; to update an existing location use PUT /groups/{groupId}/locations.

## Path parameters

- `groupId` string, required

## Headers

- `tenant-id` string

## Request body

- AddGroupLocationRequest — Request to add a new location to a group
  - `locationData` object, required — Core location data (name, type, etc.)
  - `groupLocationData` object — Group location specific data (acceptsNewPatients, etc.)
  - `tenantGroupLocationData` object — Tenant group location specific data (effectiveDate, etc.)
  - `addresses` LocationAddress[] — List of addresses for the location (physical, mailing, billing, etc.)
    - `addressType` string, required — Address type (physical, mailing, billing, remittance)
    - `addressLine1` string, required — Address line 1
    - `addressLine2` string — Address line 2
    - `city` string, required — City
    - `state` string, required — State
    - `zipCode` string, required — ZIP code
    - `county` string — County
    - `country` string, required — Country
    - `isPrimary` boolean — Whether this is the primary address
  - `locationSpecialities` LocationSpecialty[] — List of location specialties
    - `specialtyId` string, required — ID of the specialty
    - `effectiveDate` string — Effective date for the specialty
    - `isPrimary` boolean — Whether this is the primary specialty
  - `contacts` LocationContact[] — List of contacts
    - `type` string, required — Type of contact
    - `name` string, required — Name of the contact
    - `mainPhoneNumber` string — Main phone number
    - `afterHoursPhoneNumber` string — After hours phone number
    - `email` string — Email address
    - `fax` string — Fax number
    - `tty` string — TTY number
  - `officeHours` OfficeHours
    - `hours` DayHours[] — List of office hours by day
      - `day` string, required — Day of the week
      - `from` string, required — Opening time (HH:mm)
      - `to` string, required — Closing time (HH:mm)
  - `services` LocationService[] — List of services offered at this location
    - `serviceName` string, required — Service name
    - `serviceType` string, required — Service type
    - `description` string — Service description
    - `available` boolean — Whether service is currently available
  - `practiceLimitations` PracticeLimitation[] — List of practice limitations
    - `limitationType` string, required — Type of limitation
    - `description` string, required — Description of the limitation
    - `appliesToPatients` string — Applies to specific patient groups
  - `accessibility` AccessibilityItem[] — Accessibility information as question/answer pairs
    - `question` string, required — Accessibility question
    - `answer` string, required — Answer to the accessibility question
  - `tags` string[] — List of tags for categorization
  - `hospitalAdmittingPrivileges` object — Hospital admitting privileges information
  - `networks` LocationNetwork[] — List of networks for this location
    - `networkId` string, required — ID of the network
    - `data` object — Additional network data (effectiveDate, terminationDate, etc.)
  - `includePractitioners` boolean — If true, enrolls all location practitioners to the networks with their respective specialties

## Response `201`

Successfully added location to group

- AddGroupLocationResponse — Response containing all created group location resources and relationships
  - `tenantId` string — ID of the tenant
  - `tenantGroupId` string — ID of the tenant group
  - `coreLocationId` string — ID of the created core location
  - `groupLocationId` string — ID of the created group location
  - `tenantGroupLocationId` string — ID of the created tenant group location
  - `coreAddressIds` string[] — List of created core address IDs
  - `locationAddressRelationshipIds` string[] — List of created location-entity address relationship IDs
  - `groupSpecialtyRelationshipIds` string[] — List of created group specialty relationship IDs
  - `specialtyRelationshipIds` string[] — List of created location specialty relationship IDs
  - `tenantGroupNetworkIds` string[] — List of created tenant group network relationship IDs
  - `tenantGroupLocationNetworkIds` string[] — List of created tenant group location network relationship IDs
  - `tenantGroupNetworkSpecialtyIds` string[] — List of created tenant group network specialty relationship IDs
  - `status` string — Status of the operation

## Other responses

- `400` — Bad request - Invalid input or validation error
- `401` — Unauthorized - Authentication required
- `403` — Forbidden - Insufficient permissions
- `404` — Group not found
- `500` — Internal server error

---

[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)
