Designed for beauty, built for growth.
Build on the PatientNow APIs
REST APIs for med-spa and aesthetics practices. Read and write patients, appointments, services, treatments and more — the same data that powers PatientNow. Pick the API for your product and make your first call in minutes.
Choose your API
Three APIs on the PatientNow platform. Pick the one that matches your product.
PatientNow Essentials (PNE)
The full customer-facing API: customers, scheduling, clinical & treatments, commerce & inventory, staff, and event webhooks.
VISH
A slimmed-down API customized for VISH customers — a focused subset covering appointments, companies, employees, services, orders and formulas.
PatientNow Pro (PNP)
The PatientNow Pro REST API — patients, appointments, scheduling
availability, waitlists, billing, and reference data, all scoped to your
practice ID. Uses token-based auth (no gateway apikey required).
What you can build
Patient & customer records
Sync patient profiles, manage contact and marketing opt-ins, and power booking front-ends. Available across all three APIs.
Scheduling
Read appointments, find available time slots by provider and service, manage waitlists, check in, and start or complete services. Available across all three APIs.
Clinical & treatments
Capture SOAP notes, injections, laser treatments, vitals, allergies, medications and chronic conditions. PNE only.
Commerce & inventory
Manage products, services, packages, memberships, gift certificates, orders, coupons and purchase orders. PNE only.
Staff & operations
Work with employees, departments, time cards, goals, security profiles and work schedules. PNE and VISH.
Event webhooks
Register webhooks to be notified when data changes, so your integration stays in sync without polling. PNE only.
From zero to first call
Pick the track for your API — either way, under ten minutes.
PNE & VISH
- Get credentials — a username and password authorized for
API access, plus a gateway
apikeyfor the EnvisionCloud gateway. - Send both —
?apikey=YOUR_API_KEYon every query string;Authorization: Basic base64(user:pass)header on every request. - Call an endpoint —
GET /api/v1/statusconfirms connectivity for PNE. VISH starts withGET /api/v1/companies(no status endpoint).
PNE quickstart → ·
VISH quickstart →
How PNE & VISH auth works →
PatientNow Pro
- Get your token — obtain an API token for your PatientNow
Pro account and note your
practiceId. - Send the token —
Authorization: YOUR_TOKENheader on every request. No gateway key and no Base64 encoding. - Call an endpoint —
GET /practices/{practiceId}/patientslists patients; a200 OKmeans you're in.
Your first request
Select the tab for your API.
PNE — confirm connectivity
curl "https://api.envisiongo.com/api/v1/status?apikey=YOUR_API_KEY" \
-u "USERNAME:PASSWORD"const token = btoa("USERNAME:PASSWORD");
const res = await fetch(
"https://api.envisiongo.com/api/v1/status?apikey=YOUR_API_KEY",
{ headers: { Authorization: `Basic ${token}` } }
);
console.log(await res.json());import requests
from requests.auth import HTTPBasicAuth
res = requests.get(
"https://api.envisiongo.com/api/v1/status",
params={"apikey": "YOUR_API_KEY"},
auth=HTTPBasicAuth("USERNAME", "PASSWORD"),
)
print(res.json())using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
var http = new HttpClient { BaseAddress = new Uri("https://api.envisiongo.com/api/v1/") };
var token = Convert.ToBase64String(Encoding.UTF8.GetBytes("USERNAME:PASSWORD"));
http.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", token);
var res = await http.GetAsync("status?apikey=YOUR_API_KEY");
Console.WriteLine(await res.Content.ReadAsStringAsync());PatientNow Pro — list patients
curl "https://backend-production.patientnow.net/backend/patientnowpro/practices/YOUR_PRACTICE_ID/patients" \
-H "Authorization: YOUR_TOKEN"const base = "https://backend-production.patientnow.net/backend/patientnowpro";
const res = await fetch(`${base}/practices/YOUR_PRACTICE_ID/patients`, {
headers: { Authorization: "YOUR_TOKEN" },
});
console.log(await res.json());import requests
base = "https://backend-production.patientnow.net/backend/patientnowpro"
s = requests.Session()
s.headers.update({"Authorization": "YOUR_TOKEN"})
res = s.get(f"{base}/practices/YOUR_PRACTICE_ID/patients")
print(res.json())using System;
using System.Net.Http;
var http = new HttpClient {
BaseAddress = new Uri("https://backend-production.patientnow.net/backend/patientnowpro/")
};
http.DefaultRequestHeaders.Add("Authorization", "YOUR_TOKEN");
var res = await http.GetAsync("practices/YOUR_PRACTICE_ID/patients");
Console.WriteLine(await res.Content.ReadAsStringAsync());All three APIs write to live practice data immediately. There is no sandbox or test environment. Test with records you can clean up, and confirm the account behind your credentials before running any write operation.
Keep exploring
PNE & VISH
Authentication — PNE & VISH
Gateway apikey, the Basic scheme, and common 401 pitfalls.
Guides — PNE & VISH
Pagination (Page/Rows), filtering, IDs, dates, and errors.
Recipes — PNE & VISH
Customer 360, booking a visit, ringing up a sale — end-to-end workflows.
Follow a workflow →Reference — PNE
Every PNE resource and operation, with parameters and curl samples.
Browse endpoints →Reference — VISH
Every VISH resource and operation, with parameters and curl samples.
Browse endpoints →PatientNow Pro
Authentication — PNP
Token header, base URL, practice ID, and 401/403 pitfalls.
Get authenticated →Guides — PNP
Token auth, Page/Limit pagination, practiceId scoping, and errors.
Recipes — PNP
Patient lookup, scheduling from availability, waitlist management.
Follow a workflow →Reference — PNP
Every PatientNow Pro resource and operation, with parameters and samples.
Browse endpoints →