A group on InStockRx is a set of pharmacies. Every group has its own marketplace inside InStockRx, visible only to its members — and a listing or cash offer made by a member appears both on that group marketplace and on the nationwide one. Groups can have a sponsor. Every partner using this API has one or more sponsored groups, created by InStockRx staff, and each group has an API key.
This is the core of the permission model: your key identifies a group, the group contains pharmacies, and you may act on behalf of any pharmacy in it. Nothing else.

Seeing your pharmacies

No parameters — the group comes from the key.
bankingStatus is worth checking before you build selling flows. A pharmacy without active banking can list, but cannot be paid.

Adding pharmacies

POST /api/v1/groups/npi-update takes a list of NPIs to add to your group.
The body is a bare JSON array of NPIs, not an object. The endpoint’s validation table refers to a field called npiList, but there is no such wrapper — send the array on its own.
What happens next depends on whether the pharmacy already exists on InStockRx:

Already registered

Added to your group immediately, and available to act for straight away.

Not yet registered

Held as pending. The pharmacy joins your group automatically once it registers with InStockRx.
Because of that second case, an NPI accepted by this endpoint will not necessarily appear in pharmacies/search right away. Re-read the group rather than assuming the write landed.

Acting for a pharmacy

Once a pharmacy is in your group, you name it by NPI on each call. The field differs by operation — sellingPharmacyNpi when creating a listing, buyingPharmacyNpi when creating a cash offer, pharmacyNpi when searching. The API reference gives the exact field per endpoint. Naming an NPI outside your group returns 403.