---
title: "Associate or update practitioner locations within a group"
method: POST
path: "/practitioners/{practitionerId}/groups/{groupId}/locations"
tags: ["Practitioner"]
---

# Associate or update practitioner locations within a group

`POST /practitioners/{practitionerId}/groups/{groupId}/locations`

Associates the practitioner with one or more locations within the specified group, or updates existing location associations. Each location entry may include `locationData` with an `npi` field as a single string or array of strings for multi-NPI locations. Use this when adding the practitioner to locations within a group, or when updating group-practice location details such as location NPIs; this endpoint handles both creation and update of `GroupPractitionerLocation` relationships and optionally also creates `TenantGroupLocationPractitionerNetwork` relationships for location-specific networks. `{practitionerId}` is the `certifyPractitionerId`, and `{groupId}` in the path must match the `groupId` in the request body — a mismatch returns 400.

## Path parameters

- `groupId` string, required
- `practitionerId` string, required

## Headers

- `tenant-id` string

## Request body

- AssociatePractitionerGroupLocationsRequest — Request to associate a practitioner with group locations
  - `groupId` string, required — tenantGroupId (ID of the group to which the practitioner belongs)
  - `groupPractitionerData` TenantGroupPractitionerSchema — Represents the association of a practitioner with a tenant group.
    - `effectiveDate` string, date — The date when the practitioner's affiliation with the tenant group becomes effective.
    - `endDate` string, date — The date when the practitioner's affiliation with the tenant group ends.
    - `employmentType` string — The type of employment relationship the practitioner has with the tenant group.
    - `affiliationType` 'Delegated' | 'Direct' — Defines the possible affiliation types
  - `locations` GroupLocationAssociation[], required — List of locations to associate with this practitioner
    - `tenantGroupLocationId` string, required — ID of the tenant group location
    - `locationData` TenantGroupPractitionerLocationSchema — Represents the association of a practitioner details at a specific location within a tenant group, including role, availability, and effective dates.
      - `suppressSiteFromDirectory` boolean — Indicates if the site should be suppressed from the directory.
      - `active` boolean — Indicates if the record is currently active.
      - `terminationDate` string, date, nullable — The date when the association was terminated.
      - `billingEffectiveDate` string, date, nullable — The effective date for billing purposes.
      - `billingTerminationDate` string, date, nullable — The termination date for billing purposes.
      - `effectiveStartDate` string, date, nullable — The start date when this record becomes effective.
      - `effectiveEndDate` string, date, nullable — The end date when this record is no longer effective.
      - `isPrimary` boolean — Indicates if this is the primary location for the practitioner.
      - `practitionerRolesMap` object — Map of practitioner role key to effective/termination dates.
      - `practitionerRoles` string[] — The roles of the practitioner at this location.
      - `status` 'Active' | 'Inactive' — The possible statuses for a various entities.
      - `roleType` 'PCP' | 'Spec' | 'Both' — Defines the possible roles for a practitioner at a location.
      - `panelStatus` 'Open' | 'Closed' | 'Closed Full' — Specifies the panel status (patient acceptance status) of the practitioner at the location.
      - `acceptingNewPatients` boolean — Indicates if the practitioner is accepting new patients at this location.
      - `medicare` string, nullable — Medicare ID for the practitioner at this location.
      - `npi` string, nullable — National Provider Identifier for the group practice location.
      - `effectiveDate` string, date, nullable — The effective date for the practitioner location.
      - `changeEffectiveDate` string, date, nullable — The change effective date for the practitioner location.
      - `locationType` 'PRI' | 'PRA' | 'null', nullable — Type of group location (PRI = Primary, PRA = Practice).
      - `genderAccepted` 'Both' | 'Male' | 'Female' | 'Unknown' | 'null', nullable — Gender accepted at the practitioner location.
      - `acceptingMinimumPatientAge` string, nullable — Minimum patient age accepted at this location.
      - `acceptingMaximumPatientAge` string, nullable — Maximum patient age accepted at this location.
      - `minimumEnrolleesCapacity` string, nullable — Minimum enrollees capacity for this location.
      - `maximumEnrolleesCapacity` string, nullable — Maximum enrollees capacity for this location.
      - `practiceEmail` string, email, nullable — Practice email for the practitioner location.
      - `handicapAccessible` boolean, nullable — Indicates if the location is handicap accessible.
      - `includeLocationInDirectory` boolean, nullable — Indicates if the practitioner location should be included in the directory.
      - `roleAutoAssignment` string, nullable — Auto assignment of practitioner role.
      - `locationTerminationReason` string, nullable — Reason provided during termination of a practitioner from location.
      - `practitionerFax` string, nullable — Practitioner-specific fax number for this location.
      - `contacts` object[] — Contact information for the group practice location.
        - `phone` string, nullable — Phone number for the location.
        - `fax` string, nullable — Fax number for the location.
        - `appointment` string, nullable — Appointment phone number for the location.
      - `officeHours` object[] — Office hours for each day of the week.
        - `dayOfWeek` 'Mon' | 'Tue' | 'Wed' | 'Thu' | 'Fri' | 'Sat' | 'Sun', required — A reusable enum schema defining the standard three-letter abbreviations for days of the week.
        - `openTime` string, nullable — Opening time in HH:MM format.
        - `closeTime` string, nullable — Closing time in HH:MM format.
        - `isClosed` boolean, nullable — Indicates if the location is closed on this day.
      - `practiceLimitation` object[] — Practice limitations for the practitioner location.
        - `limitation` string, nullable — Practice limitation description.
        - `isPrimary` boolean, required — Indicates if this is the primary practice limitation.
    - `networks` LocationNetwork2[] — List of networks to associate with this practitioner at this specific location
      - `networkId` string, required — Network ID
      - `data` TenantGroupLocationPractitionerNetworkSchema — Represents the participation of a tenant group location practitioner in a specific plan.
        - `networkPractitionerEffectiveDate` string, date
        - `networkPractitionerTerminationDate` string, date
        - `networkPractitionerTerminationInformedDate` string, date
        - `terminationReason` string
        - `networkPractitionerStatus` string
        - `participationType` string
        - `networkPractitionerCredentialingStatus` string
        - `networkPractitionerCredentialedDate` string, date
        - `networkPractitionerNextCredentialingDate` string, date
        - `panelStatus` string
        - `acceptingNewPatients` boolean
        - `officeHours` OfficeHour[] — Operating hours for each day of the week
          - `day` 'Mon' | 'Tue' | 'Wed' | 'Thu' | 'Fri' | 'Sat' | 'Sun' — A reusable enum schema defining the standard three-letter abbreviations for days of the week.
          - `openTime` string, time — Time when the location opens on this day
          - `closeTime` string, time — Time when the location closes on this day
          - `closed` boolean — Indicates if the location is closed on this day
        - `appointmentPhone` string
        - `languageSpoken` string[]
        - `practitionerRole` string
        - `suppressSiteFromDirectory` boolean
        - `hasDelegatedAuthority` boolean
        - `sourceSystem` string
        - `changeReason` string

## Response `201`

Successfully associated practitioner with group locations. The response is a `tenantGroupPractitionerId`, `groupId`, and a `locations` array (no `status` field, unlike the sibling `PUT /practitioners/{practitionerId}/locations` response).

- AssociatePractitionerGroupLocationsResponse — Response containing practitioner-group location associations
  - `tenantGroupPractitionerId` string — ID of the tenant group practitioner
  - `groupId` string — ID of the group
  - `locations` LocationAssociationResult[] — List of location associations
    - `tenantGroupLocationId` string — ID of the tenant group location
    - `groupPractitionerLocationId` string — ID of the group practitioner location association
    - `networks` NetworkAssociationResult1[] — List of network associations for this location
      - `networkId` string — ID of the network
      - `tenantGroupLocationPractitionerNetworkId` string — ID of the tenant group location practitioner network association

## Other responses

- `400` — Bad request - Invalid input or validation error
- `401` — Unauthorized - Authentication required
- `403` — Forbidden - Insufficient permissions
- `404` — Practitioner, group, or location 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)
