Developers

Designed for beauty, built for growth.

Build on the PatientNow APIs

REST APIs for med-spa and aesthetics practices. Read and write customers, 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

Two APIs on the same platform. They share authentication and conventions — 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.

What you can build

👤

Customer experiences

Sync patient records, look up profiles, manage contact and marketing opt-ins, and power your own booking front-ends.

📅

Scheduling

Read appointments, find available time slots by provider and service, check customers in, and start or complete services.

💉

Clinical & treatments

Capture SOAP notes, injections, laser treatments, vitals, allergies, medications and chronic conditions.

🛍️

Commerce & inventory

Manage products, services, packages, memberships, gift certificates, orders, coupons and purchase orders.

🧑‍⚕️

Staff & operations

Work with employees, departments, time cards, goals, security profiles and work schedules.

🔔

Event webhooks

Register webhooks to be notified when data changes, so your integration stays in sync without polling.

From zero to first call

Three steps, under ten minutes.

Get credentials

Use a PatientNow Essentials username and password authorized for API access. How auth works →

Send both credentials

Add your gateway apikey to the query string, and send Base64 username:password as an HTTP Basic Authorization header.

Call an endpoint

Hit GET /api/v1/status to confirm connectivity, then read your customers and appointments. Quickstart →

Your first request

# Confirm connectivity and authentication (apikey + Basic credentials)
curl "https://api.envisiongo.com/api/v1/status?apikey=YOUR_API_KEY" \
  -H "Authorization: Basic $(printf 'USERNAME:PASSWORD' | base64)"
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())
ℹ️ One host, two APIs

Both APIs share the base URL https://api.envisiongo.com/api/v1; your gateway apikey determines which one you reach. The example above uses PNE's status endpoint — VISH has none, so its first call is GET /api/v1/companies (see the VISH quickstart). See Base URL.