MedFlo integration API
The outward, public API that external systems integrate against — the way partners read residents, coverage, and clinical data out of MedFlo and subscribe to events.
The MedFlo integration API is a versioned, REST + JSON API with FHIR-aligned resources. It is authenticated with OAuth2 client-credentials, scoped per tenant, and rate limited per client. It is read-oriented: clinical and financial writes are confirmed by a human inside the product and are not exposed here.
Base URL
All endpoints live under
https://medflo-pcc-vendor-api-eez5kqwsxa-uw.a.run.app/api/v1. A health probe is available (unauthenticated) at https://medflo-pcc-vendor-api-eez5kqwsxa-uw.a.run.app/health.What you can do
- Authenticate by exchanging a client_id + secret for a short-lived bearer token — see Authentication.
- Read FHIR resources — Patient, Coverage, Condition, MedicationRequest, AllergyIntolerance, and Observation. See the API reference.
- Subscribe to signed webhooks for admit / discharge / coverage / clinical events — see Webhooks.
The request lifecycle
- Get a token. POST your credentials to
/api/v1/oauth/tokenwithgrant_type=client_credentials. You get back a scoped bearer token. - Call a resource. Send
Authorization: Bearer <token>to a tenant-scoped path like/api/v1/ofctx/{org_id}/{facility_id}/residents. - Read the envelope. Every response is a
{ data, meta, error }object (except the token endpoint, which follows RFC 6749).
Response envelope
Every response — success or error — uses the same shape. HTTP status is authoritative; error.code is a stable machine string.
| Field | Description |
|---|---|
data | The resource or array of resources, or null on error. |
meta | Pagination (meta.page) on list responses, otherwise null. |
error | { code, message, details } on failure, otherwise null. |
No PHI in errors or logs
Validation errors return field locations, never your echoed input. Tokens are never logged. Unexpected errors return a generic
internal_error. See Errors.Ready to make a call? Jump to the Quickstart or open the live sandbox.