What you can build
Every Lola Health booking — the first integrator on this surface — flows through the same service these endpoints call. The path you hit is the path Lola hits internally.
Create bookings programmatically
POST /api/integration/v1/bookings mints a confirmed Job with your external correlation ids echoed back on every webhook.
Hosted patient checkout via short-lived JWT
POST /api/integration/v1/booking-url returns a single-use, 24-hour token that drops your patient onto book.loladispatch.com to complete the flow themselves.
In-venue venue and slot discovery
GET /api/integration/v1/venues + /venues/{id}/availability surface the venue network and bookable slots for the IN_VENUE channel.
Event-driven, signed webhooks
job.created, job.confirmed, job.rescheduled, job.cancelled, dispatch.assigned, and sample.registered ship Standard Webhooks signatures with your externalOrderId echoed on every payload.
Mint a hosted-booking URL
The shortest path to a working integration: trade an API key for a single-use JWT that hands your patient off to a Lola-hosted booking page. Full setup lives in Getting Started.
curl -X POST https://app.loladispatch.com/api/integration/v1/booking-url \
-H "X-API-Key: pj_live_..." \
-H "X-API-Version: 1" \
-H "Content-Type: application/json" \
-d '{
"scope": { "kind": "all-mobile" },
"externalUserId": "your-internal-user-id",
"externalOrderId": "your-order-id"
}'Know who fulfilled a booking
Most draws are performed by a Lola phlebotomist or by venue staff; at times we fulfil through a vetted external collection partner. If fulfiller visibility is enabled on your account, every booking carries an optional fulfillment object — on GET /api/integration/v1/bookings, on GET /api/integration/v1/bookings/{id}, and on the job payload of every webhook event.
{
"id": "job_...",
"status": "COMPLETED",
"fulfillment": {
"type": "PARTNER",
"partner": { "id": "ptr_...", "name": "Bloods & Beyond" }
}
}typeisINTERNALorPARTNER. A draw by venue staff isINTERNAL— the venue is already named byfulfillmentChanneland the venue block.partnercarries the partner id and name, and is null forINTERNAL.- The whole key is absent — not null — when fulfiller visibility is off for your account. Ask your account manager to enable it.
- Booking status is unaffected: a partner-fulfilled booking moves through the same statuses and emits the same events as an internally-fulfilled one.
TypeScript SDK
We publish generated TypeScript types for the v1 surface, derived directly from the OpenAPI 3.1 spec. Drop them into your project for typed request and response bodies — no runtime dependency, just declarations.
v1.d.ts
Regenerated whenever the spec changes — a CI gate keeps it in sync.
Documentation
Four pages cover the surface end-to-end. Start with the quickstart if you are integrating from scratch.
API Reference→
Interactive reference for every /api/integration/v1/* endpoint, generated from the OpenAPI 3.1 spec.
Requires an active API key — request access below if you do not have one.
Getting Started→
End-to-end quickstart for mobile bookings and the in-venue channel, plus the hosted-patient JWT flow.
Webhooks→
Standard Webhooks signing, verification snippets, replay-from-dashboard, and the 24-hour secret-rotation window.
Changelog→
Versioned API changes. The v1 path segment is part of the contract — breaking changes ship as a new version.
Request API access
API keys are issued by Lola staff after a short intake. Tell us your use case, expected volume, and which channels (mobile, in-venue, or hosted patient) you need enabled — we will reply with next steps.