canonical: https://jentic.com/apis/nabla.com/nabla-server

# Nabla Core Server API

Jentic publishes the only available OpenAPI specification for Nabla Core Server API, keeping it validated and agent-ready. Nabla is an AI clinical assistant that turns ambient clinical conversations into structured notes, normalized clinical data, and patient instructions. The Core Server API is the server-side variant for backend integrations: it issues OAuth tokens, manages clinician users, and runs the core ambient operations such as listening to encounters, generating digests and notes, normalizing clinical data, and producing patient-facing instructions.

## For AI agents

Issue user JWTs, manage clinician accounts, and run server-side ambient transcription, note generation, normalization, and patient-instruction operations on Nabla's clinical AI platform.

## Scope

Does not handle billing claims submission, prescription writing, or scheduling - use for ambient transcription, clinical digest generation, normalization, and clinician user provisioning only.

## Capabilities

- Issue OAuth bearer tokens and per-user JWTs for clinician sessions
- Provision, deactivate, and reactivate clinician user accounts and look them up by external HR ID
- Stream or upload an encounter audio file to /listen for ambient transcription
- Generate a structured clinical digest of an encounter via /digest
- Produce normalized clinical data such as ICD codes from encounter content via /generate_normalized_data
- Generate patient-facing visit instructions for after-visit handoff
- Submit operational and usage reports via /reports

## Use cases

### Ambient Scribe Integration in EHRs

Wire Nabla's ambient clinical assistant into an EHR or telehealth platform so audio captured during a visit is converted to a structured note and patient instructions. The /listen endpoint accepts encounter audio, /digest produces a structured clinical digest, and /generate_normalized_data extracts coded data such as ICD-10 entries. Replaces dictation queues and scribe services and saves clinicians several minutes per visit on documentation.

Example prompt: Upload the audio for visit ID 482 to POST /listen, then call POST /digest to retrieve the structured clinical digest and write it back to the EHR encounter.

### Clinician User Lifecycle Management

Manage clinician user records so HR or directory changes flow into Nabla. POST /users creates a clinician, GET /users lists them, PATCH /users/{id} updates fields, /users/{id}/activate and /users/{id}/deactivate handle joining and leaving, and /users/find_by_external_id/{external_id} bridges to your HR system. Removes manual user-list reconciliation between HR, the EHR, and Nabla.

Example prompt: When HR offboards an employee, look up the user via GET /users/find_by_external_id/{external_id} and then call POST /users/{id}/deactivate.

### JWT Issuance for Mobile and Web Clients

Server-side backends mint short-lived JWTs for individual clinicians via POST /jwt/authenticate/{user_id} so the Nabla mobile and web SDKs can act on the clinician's behalf without holding long-lived secrets. Pair with /oauth/token for the underlying server credential. Avoids embedding API keys in clients and keeps audit trails per clinician.

Example prompt: Call POST /jwt/authenticate/{user_id} for a clinician and return the resulting token to their authenticated mobile session.

### Patient Instruction Handoff

Generate plain-language patient instructions from a recorded visit so reception or the patient portal can hand them off after the appointment. The patient-instructions operations turn the clinical encounter into a layperson summary covering medications, follow-ups, and red-flag symptoms. Useful for organisations under after-visit-summary mandates that want to reduce clinician burden.

Example prompt: After the digest is produced, call the patient-instructions endpoint and email the result to the patient via the portal.

### AI Agent Clinical Documentation Co-Pilot

Expose Nabla server operations as Jentic tools so an AI agent embedded in a clinician's workflow can run 'transcribe this visit', 'generate the note', or 'create patient instructions' on demand. Through Jentic the bearer token stays in the encrypted vault and the agent picks the right operation across 19 endpoints via intent search. Pairs naturally with EHR-side agents that already orchestrate documentation tasks.

Example prompt: Search Jentic for 'generate Nabla clinical digest', execute POST /digest with the encounter ID, and post the structured note draft to the clinician's review queue.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | /oauth/token | Issue an OAuth bearer token for server access |
| POST | /jwt/authenticate/{user_id} | Mint a per-user JWT for clinician client apps |
| POST | /users | Create a new clinician user |
| GET | /users/find_by_external_id/{external_id} | Look up a user by external HR system identifier |
| POST | /listen | Submit encounter audio for ambient transcription |
| POST | /digest | Generate a structured clinical digest of an encounter |
| POST | /generate_normalized_data | Produce normalized clinical data such as ICD codes |
| POST | /reports | Submit an operational or usage report |

## Key resources

- **Authentication** — OAuth token issuance and per-user JWT minting
- **Users** — Provision, list, update, activate, deactivate, and look up clinicians by external ID
- **Listen** — Submit encounter audio for ambient transcription
- **Digest** — Generate structured clinical digests from listened encounters
- **Normalize** — Produce normalized clinical data such as ICD codes from encounter content
- **Patient Instructions** — Generate plain-language post-visit instructions for patient handoff
- **Report** — Submit operational and usage reports

## Why Jentic

- **Setup:** Wiring the Nabla Core Server API by hand means calling its OAuth token and JWT authenticate flows, holding the bearer token, and choosing the right regional host under {region}.api.nabla.com yourself. Through Jentic you install once, import the Nabla Core Server API from the API Directory, store the credentials once, and your agent calls it.
- **Permission scoping:** Nabla puts the clinician id in the URL path (/jwt/authenticate/{user_id}, /users/find_by_external_id/{external_id}), so a rule can pin your agent to one user. You choose the operations it may call, so you can allow digest generation while leaving user creation out unless you add it.
- **Credential handling:** Your Nabla server bearer token and minted user JWTs are stored once, encrypted, by your own Jentic One instance and injected at execution time. They never enter the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'generate a clinical digest from an encounter', and Jentic returns the matching Nabla operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **DrChrono API** — EHR destination where Nabla-generated notes typically land
- **athenahealth API** — Enterprise EHR destination for normalized clinical data and notes
- **Deepgram Speech-to-Text API** — General-purpose transcription rather than clinical-specific note generation
- **Nabla Core User API** — Client-side companion API for clinician-facing apps

## FAQ

### Why is there no official OpenAPI spec for Nabla Core Server API?

Nabla does not publish an OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call Nabla Core Server API via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the Nabla Core Server API use?

The Server API uses HTTP bearer authentication. Server backends obtain an access token via POST /oauth/token and pass it in the Authorization: Bearer header. They also mint per-user JWTs via POST /jwt/authenticate/{user_id} for client-side calls. Through Jentic, both the server credential and any minted tokens stay in the encrypted vault.

### How do I provision a clinician user in Nabla through the API?

POST /users creates a clinician account, PATCH /users/{id} updates fields, and POST /users/{id}/activate and /users/{id}/deactivate handle lifecycle changes. Use GET /users/find_by_external_id/{external_id} to bridge from your HR system's identifier.

### Can the Nabla API turn an encounter recording into a structured note?

Yes. POST /listen accepts encounter audio for ambient transcription, POST /digest produces a structured clinical digest, and POST /generate_normalized_data returns normalized clinical data such as ICD codes. The patient-instruction operations generate the after-visit summary.

### What rate limits apply to the Nabla Core Server API?

Rate limits are not declared in the OpenAPI spec. Treat the API as moderately rate-limited, implement exponential backoff on HTTP 429, and contact Nabla for committed throughput before running large historical-encounter backfills against the listen and digest operations.

### How do I run a Nabla operation from an AI agent through Jentic?

Install the Jentic SDK with pip install jentic. Use SearchRequest with a query like 'generate a Nabla clinical digest' to find POST /digest, LoadRequest for its schema, and ExecutionRequest to call it. Get an agent API key through Jentic One, the self-hosted execution layer.

### Can I limit what my agent is allowed to do with the Nabla Core Server API?

Yes. Because you run Jentic One yourself, your own rules decide which Nabla operations the agent may call and which credentials it may use, so you can allow digest generation from POST /digest while leaving clinician creation via POST /users out until you choose to add it. Nabla puts the clinician id directly in the URL path, as in POST /jwt/authenticate/{user_id} and GET /users/find_by_external_id/{external_id}, so a rule can pin the agent to a single user. The stored bearer token and any minted per-user JWTs are injected only at execution time and never reach the agent's prompt or logs.
