Orders
Create an order
POST /api/v1/create-order
purchase_with_attached_payment controls how the order is paid for that controls how the order is paid for:
true: skip credits and charge the attached payment method immediately, on demand.false: pay with prepaid credits. If the credit pool cannot cover the order, the request fails with400"Not enough credits"; there is no automatic card fallback on the API path.
Orders can also carry an explicit paymentMethod field that names the payment source directly instead of relying on the boolean flag. Mixed kit-type orders can be paid by card; the earlier 400 on multi-kit-type card orders was lifted in the July 2026 payments refactor. Pay-later (pending payment) orders are created from the admin dashboard flow, not through this API.
Prefer to automate order creation from your own store instead of calling the API directly? Contact support for a current Zapier integration invite; invite links expire periodically, so ask for a fresh one rather than reusing an old link you may have seen in these docs before.
Kit types for B2B Starter panels
Pass one of these values as kitType in the kit_types array of your /create-order request to automate ordering for the standard B2B Starter panels:
| Panel | kitType |
|---|---|
| Core Health | ED1NL4E3L |
| GLP & Cardio | ED14KY98G |
| Women's Health | ED2KXO3EE |
| HRT Monitoring | ED23L1ELT |
| Ultimate Health | ULTIMATE_METABOLIC_HORMONE_THYROID_EASY_DRAW |
Only panels provisioned for your account can be ordered. If a request with one of these values is rejected, or the panel is missing from your GET /credits response, contact support to have it enabled for your business. Custom and enterprise panels have their own identifiers, provided during onboarding.
Credits
GET /api/v1/credits
Returns each kit type's credit balance for your business. A few things worth knowing before you integrate against it:
- Only provisioned kit types are returned. The response is built from your business's own product list, not the full kit-type catalog; a kit type your account was never set up for simply won't appear.
- An unset balance is omitted, not zero. If a provisioned product has no credit balance configured, its
creditsfield is left out of the response entirely rather than returned as0. Treat a missing field the same as a zero balance. - The
typevalue can differ from the internal kit-type identifier for legacy reasons (ORIGINALis exposed asBASE). Join on thetypestring returned by this endpoint, not on your own internal enum, to avoid a silent mismatch.
1 credit = 1 kit
Send Email Notifications to User
If you want your user to receive email notifications upon order and kit status changes, please send isNotifyReceiver:true flag in the body of the request.

Full request and response schemas for every endpoint, testable with your sandbox token.