---
title: "Associate practitioner with one or more networks"
method: POST
path: "/practitioners/{id}/networks"
tags: ["Practitioner"]
---

# Associate practitioner with one or more networks

`POST /practitioners/{id}/networks`

Associates the practitioner with one or more networks within a group in a single atomic batch. If the practitioner is not yet associated with the specified group, the group association is also created as part of the same request. Use this when onboarding a practitioner to a set of networks within a group; for updating existing network association attributes in bulk, use `PUT /practitioners/{id}/networks` instead. `{id}` is the `certifyPractitionerId`, the request body must include a `groupId`, and the specified networks must belong to that group.

## Path parameters

- `id` string, required

## Headers

- `tenant-id` string

## Request body

- AssociatePractitionerNetworkRequest — Request to associate a practitioner with one or more networks. When networks is non-empty, top-level networkId and networkEffectiveDate are ignored.
  - `groupId` string, required — ID of the group that the network belongs to
  - `networkId` string — ID of the network (legacy single-network). Required when networks is empty or absent.
  - `networkEffectiveDate` string — Effective date for the network association (legacy single-network). Ignored when networks is non-empty.
  - `groupEffectiveDate` string — Effective date for the TenantGroupPractitioner relationship
  - `networks` AssociatePractitionerNetworkItem[] — Bulk network associations. When non-empty, top-level networkId and networkEffectiveDate are ignored.
    - `networkId` string, required — ID of the network to associate
    - `networkEffectiveDate` string — Effective date for this network association
  - `networkInputValid` boolean

## Response `201`

Successfully associated practitioner with network. For single-network requests, the legacy top-level `tenantGroupPractitionerNetworkId`, `networkId`, and `status` fields are populated; for multi-network requests, the response instead carries a `networkAssociations` array, each entry with `networkId`, `tenantGroupPractitionerNetworkId`, and `status`.

- AssociatePractitionerNetworkResponse — Response containing practitioner-network association result(s)
  - `tenantGroupPractitionerId` string — ID of the tenant group practitioner
  - `tenantGroupPractitionerNetworkId` string — ID of the tenant group practitioner network association (single-network response only)
  - `networkId` string — ID of the network that was associated (single-network response only)
  - `status` string — Indicates the result of the association (single-network response only)
  - `networkAssociations` NetworkAssociationResult2[] — Per-network results when multiple networks were associated in one request
    - `networkId` string — ID of the network
    - `tenantGroupPractitionerNetworkId` string — ID of the tenant group practitioner network association
    - `status` string — Indicates the result of the association

## Other responses

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