Catalog and pricing
curl https://labify-staging-3hnx3fg7ca-uc.a.run.app/api/v1/catalog \
-H "Authorization: Bearer $JUSTLABS_API_KEY"
Returns every orderable tests[] and panels[] entry, your partner-specific
per-order fees, and restrictedStates — the two-letter US states JustLabs
cannot currently serve (NY, NJ, RI, HI as of this writing; always read
the live value from the response rather than hardcoding it).
All prices are integer cents (priceCents). An order total is:
totalCents = sum(item.priceCents for item in order.items)
+ fees.labCollectionCents
+ fees.physicianOrderCents
Fees are charged once per order, not per item. There are no bundle
discounts — a panel's priceCents is a flat catalog price, unrelated to the
sum of any component tests.
Panels have no biomarkers field. CatalogPanel only lists tests
(the member test ids) — look each one up in tests[] for biomarker detail.
Quest draw locations
Patients have their blood drawn at a Quest Diagnostics patient service
center. Pull nearby locations to show in your own UI, and optionally pass
one back as preferredLocationId when you create the order (a patient can
still walk into any Quest center; the preference only prints on the
requisition).
# by coordinates (radiusMiles default 50, max 250; limit default 50, max 200)
curl "https://labify-staging-3hnx3fg7ca-uc.a.run.app/api/v1/locations?lat=39.10&lng=-94.58&radiusMiles=25" \
-H "Authorization: Bearer $JUSTLABS_API_KEY"
# by ZIP (exact 5-digit match on the center's ZIP; no geocoding)
curl "https://labify-staging-3hnx3fg7ca-uc.a.run.app/api/v1/locations?zip=64105" \
-H "Authorization: Bearer $JUSTLABS_API_KEY"
Each row is { id, name, address, city, state, zip, phone|null, lat, lng, distanceMiles|null }; distanceMiles is only set on coordinate searches.
The list is refreshed from Quest weekly, so cache it for a day at most. An
unknown preferredLocationId on order creation is rejected with
400 unknown_location.