Quickstart
Try it on a test key
curl -s "https://api.wellwardhealth.com/v1/prices?service=colonoscopy&near=00010&limit=3" -H "Authorization: Bearer $WELLWARD_KEY"
From nothing to your first price in about five minutes, on a free test key.
1. Get a test key
Create an account at wellwardhealth.com/developers. Confirm your email and you land on the dashboard holding a test key (wl_test_…). It is shown once — copy it.
Test keys return fictional data — never real prices. Every practice a test key returns is made up, and its name starts with
[TEST]. Every response to a test key carries aWellward-Mode: testheader, and every successful one also carriesmeta.mode: "test"and ameta.test_mode_notice. Switch to a live key for real prices.
A test key reads a fixed, fictional dataset: three metros on ZIP codes 00010, 00011, 00020 and 00030 that exist only in test mode. It exercises every endpoint and the common errors, and it is never billed. See Test mode.
2. Make your first call
Send the key as Authorization: Bearer <key> (or in an X-Api-Key header).
curl
curl -s "https://api.wellwardhealth.com/v1/prices?service=colonoscopy&near=00010&limit=3" \
-H "Authorization: Bearer $WELLWARD_KEY"
Python
import os, requests
r = requests.get(
"https://api.wellwardhealth.com/v1/prices",
params={"service": "colonoscopy", "near": "00010", "limit": 3},
headers={"Authorization": f"Bearer {os.environ['WELLWARD_KEY']}"},
timeout=30,
)
r.raise_for_status()
for p in r.json()["data"]["prices"]:
print(p["amount"]["display"], p["practice"]["name"], "quoted", p["as_of"])
JavaScript (Node 18+)
const url = new URL("https://api.wellwardhealth.com/v1/prices");
url.search = new URLSearchParams({ service: "colonoscopy", near: "00010", limit: "3" });
const res = await fetch(url, { headers: { Authorization: `Bearer ${process.env.WELLWARD_KEY}` } });
if (!res.ok) throw new Error((await res.json()).detail);
const { data } = await res.json();
for (const p of data.prices) console.log(p.amount.display, p.practice.name, "quoted", p.as_of);
You get one record per practice, cheapest first. Each carries amount, as_of (the date the provider quoted it), the practice's details, and any addons[]: things billed on top of the core price, unless you ask for them with addons= (then they are inside amount and marked included_in_amount: true).
3. Find what you can ask for
curl -s "https://api.wellwardhealth.com/v1/services" -H "Authorization: Bearer $WELLWARD_KEY"
curl -s "https://api.wellwardhealth.com/v1/coverage?near=00030" -H "Authorization: Bearer $WELLWARD_KEY"
/v1/services is the catalog (service slugs and their variants). /v1/coverage says how well each service is priced near a point — full or partial, and a service with nothing nearby is left out — and is free. In test mode /v1/services shows the real catalog; only the twelve test services have test prices (see Test mode). Call it first: see Coverage first.
4. Show prices correctly
Every price you display needs the disclaimer beside it — it is the one required element. Crediting Wellward and showing the quoted date are optional. Pull the wording from /v1/meta/attribution rather than hard-coding it. See Displaying prices.
5. Go live
When your integration works on the test key:
- An org admin accepts the API terms (dashboard → Billing).
- Add a card (Stripe; we never see the number).
- Create a live key (
wl_live_…) and swap it in. The endpoints, parameters and responses are identical; only the data changes.
Live use is billed per Read (each page of a price or benchmark call, including through MCP, that returns data) and per price request that obtains a price, at the rates on the pricing page. Empty results, everything else, and all test-key calls are free. See Billing.
API reference · Dashboard · Questions: hello@wellwardhealth.com