Skip to main content

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.