Authentication
Incoming APIs
Outgoing APIs
Callback authentication (HMAC)
Reference
<aside> 🆕
Available from version 2026-03-23.
see Versioning
</aside>
Call this endpoint from your backend when you want to create or update a provider user without opening an encounter—for example to set specialty and dictation locales before the first launch.
Method: POST
Path: <baseUrl>/users
Send a Bearer server access token on the request. For how to obtain it, follow Server authentication.
Nabla will:
external_provider_id on your Nabla Connect instancesettings you provided👤 If a user already exists for that
external_provider_id, the email you send must be the same as on file. Ifexternal_provider_idandprovider_emailwould point at two different existing users, the request fails with 409 Conflict.
ℹ️
settingsis optional. Leave it out to keep the current specialty and locales. For a brand-new user, defaults apply until you send settings or the provider completes onboarding.
You can also rely on Create encounter to provision the user the first time; this endpoint is mainly useful when you want those fields set before the button is clicked.
{
"provider_email": string,
"external_provider_id": string,
"settings": {
"specialty": {
"kind": enum,
"other_specialty_name": string | null
} | null,
"speech_locale": enum,
"secondary_speech_locale": enum | null
}
}
| Parameter | Type | Required | Description |
|---|---|---|---|
provider_email |
string | yes | Provider email from your EHR |
external_provider_id |
string | yes | External provider ID from your EHR (max 256 characters) |
settings |
object | no | When present, updates specialty, speech_locale, and optional secondary_speech_locale |
specialty.kindspeech_locale / secondary_speech_locale{
"provider_email": string,
"external_provider_id": string,
"settings": {
"specialty": { "kind": enum, "other_specialty_name": string | null },
"speech_locale": enum,
"secondary_speech_locale": enum | null
} | null,
"created_at": string // ISO-8601, user creation time
}