Embed LeadTracker AI in your voice AI and automation stack.
Read live availability, create native bookings, synchronize CRM leads and inbound conversations, submit User Journey forms, and retain attribution, reminders, meeting links, and Telegram notifications in one system.
https://leadtrackerai.com/api/v1Use the Developer API from Vapi, Retell, Bland, n8n, Zapier code steps, or your own backend. Do not expose API keys in browser code or a client-side voice widget.
Authentication
Create an API key from LeadTracker AI app → Developer API. Keys are workspace-scoped, shown once, and use explicit permissions.
Workspace isolation
A key never accepts a workspace ID from the request. Its workspace is resolved from the credential.
Least privilege
Choose narrowly scoped scheduling, leads, forms, analytics, conversation, or workflow permissions for each integration.
Operational control
Set an expiry, inspect last use, rotate safely, and revoke a compromised key immediately.
curl https://leadtrackerai.com/api/v1/scheduling/event-types \
-H "Authorization: Bearer lt_live_..."
X-API-Key: lt_live_...
Idempotency-Key header for every mutation. This prevents a platform retry from creating duplicate leads, form submissions, conversations, bookings, or workflow executions.402 quota_exceeded.Event types
Fetch the booking types available in the authenticated workspace. Use an event type ID when retrieving availability or creating a booking.
/scheduling/event-typesList active event types
GET/scheduling/availabilityRead live availability
POST/scheduling/bookingsCreate a booking
/scheduling/event-typesscheduling:readReturns active event types and their scheduling constraints.
curl https://leadtrackerai.com/api/v1/scheduling/event-types \
-H "Authorization: Bearer $LEADTRACKER_API_KEY"{
"data": [{
"id": 42,
"title": "Discovery Call",
"duration_minutes": 30,
"timezone": "America/New_York",
"booking_window_days": 14
}]
}Availability
Slots are returned as UTC ISO 8601 timestamps. Convert them to the caller's local time in your voice experience, then pass the selected UTC start time when booking.
/scheduling/availabilityscheduling:read| Query parameter | Type | Description |
|---|---|---|
| event_type_id required | integer | An ID returned by the event types endpoint. |
| start_date required | YYYY-MM-DD | First calendar date to inspect. |
| end_date required | YYYY-MM-DD | Last calendar date to inspect. Ranges may be up to 31 days. |
curl "https://leadtrackerai.com/api/v1/scheduling/availability?event_type_id=42&start_date=2026-07-15&end_date=2026-07-21" \ -H "Authorization: Bearer $LEADTRACKER_API_KEY"
{
"data": {
"event_type_id": 42,
"timezone": "America/New_York",
"slots": [{
"start": "2026-07-15T14:00:00.000Z",
"end": "2026-07-15T14:30:00.000Z"
}]
}
}Create a booking
LeadTracker AI creates or updates the attendee's CRM lead, performs a final conflict check, creates the native meeting room, writes the connected calendar event, starts reminder delivery, and sends the normal Telegram booking notification.
/scheduling/bookingsscheduling:write| Body field | Type | Description |
|---|---|---|
| event_type_id required | integer | The active LeadTracker AI event type. |
| start required | ISO 8601 UTC | The exact slot start returned by availability. |
| attendee.name required | string | Prospect name. |
| attendee.email or attendee.phone required | string | At least one contact method. Phone is recommended for SMS reminders. |
| attendee.timezone required | IANA timezone | For example America/Chicago or Asia/Dubai. |
| source | string | Your integration label, such as vapi or retell. |
| external_reference | string | Your call, conversation, or booking identifier for reconciliation. |
| metadata | object | Optional integration context, stored with the booking. Maximum 16 KB. |
curl -X POST https://leadtrackerai.com/api/v1/scheduling/bookings \ -H "Authorization: Bearer $LEADTRACKER_API_KEY" \ -H "Idempotency-Key: vapi-call-6d9f08b2" \ -H "Content-Type: application/json" \ -d '{ "event_type_id": 42, "start": "2026-07-15T14:00:00.000Z", "attendee": { "name": "Avery Chen", "email": "avery@northstar.example", "phone": "+15125550123", "timezone": "America/Chicago", "company": "Northstar Health", "location": "Austin, TX" }, "source": "vapi", "external_reference": "call_01J123", "metadata": { "agent": "inbound-sales" } }'
{
"data": {
"id": "ltbk_9c7bd1...",
"status": "scheduled",
"start": "2026-07-15T14:00:00.000Z",
"end": "2026-07-15T14:30:00.000Z",
"meeting_url": "https://leadtrackerai.com/meet/...",
"lead_id": 2194
},
"duplicate": false,
"lead_created": true
}Idempotency-Key. LeadTracker AI returns 200 and duplicate: true instead of creating a second appointment.Read a booking
/scheduling/bookings/{booking_id}scheduling:readUse the LeadTracker AI booking ID returned when an appointment is created. The record is only accessible within the API key's workspace.
curl https://leadtrackerai.com/api/v1/scheduling/bookings/ltbk_9c7bd1... \
-H "Authorization: Bearer $LEADTRACKER_API_KEY"Reschedule a booking
/scheduling/bookings/{booking_id}/reschedulescheduling:writeLeadTracker AI validates the requested slot again, updates the connected calendar event and native meeting, and re-evaluates reminder delivery.
{
"start": "2026-07-16T16:00:00.000Z",
"reason": "Caller requested a later time"
}Cancel a booking
/scheduling/bookings/{booking_id}/cancelscheduling:writeCancelling removes the provider event when connected, stops pending reminders, clears the active appointment from the CRM lead, and retains the booking history.
{
"reason": "Prospect cancelled during the call"
}Leads
Use the CRM endpoints to identify a caller, create or update a contact, and add durable notes or activities. They expose a deliberately small CRM-safe field set: no deletion, assignment, campaign enrollment, billing, or bulk export operations are available.
/leadsList up to 50 recent leads/leads/search?q=... | email=... | phone=...Find a specific lead/leads/{lead_id}Read one lead/leads | /leads/upsertCreate or match a lead/leads/{lead_id}Update CRM-safe fields/leads/{lead_id}/notes | /activitiesAdd CRM history/leads/upsertleads:writeProvide an email or phone to match an existing record. Every lead mutation requires Idempotency-Key.
curl -X POST https://leadtrackerai.com/api/v1/leads/upsert \ -H "Authorization: Bearer $LEADTRACKER_API_KEY" \ -H "Idempotency-Key: voice-call-01JABC" \ -H "Content-Type: application/json" \ -d '{ "name": "Avery Chen", "email": "avery@northstar.example", "phone": "+15125550123", "company": "Northstar Health", "timezone": "America/Chicago", "source": "retell", "attribution": { "utm_source": "partner" } }'
Inbound conversations
Ingest caller messages, transcripts, summaries, and dispositions into the existing lead timeline. These routes accept inbound data only; they never invoke an email, SMS, WhatsApp, or calling provider.
/conversations/inboundStore an inbound channel message/conversations/inbound-callsStore an inbound call transcript or outcome/conversations/inbound-callsconversations:writeSupply lead_id, lead_email, or lead_phone, plus an external call ID and at least one of transcript, summary, disposition, or outcome. STOP requests are routed through LeadTracker AI's normal suppression handling.
User Journey forms
Render the saved LeadTracker AI User Journey definition on a trusted server, then preserve the exact qualification, attribution, event stream, and lead notification behavior when a prospect submits it.
{brand} is your workspace's own brand slug — one per public booking/application page you've set up (find yours on the Applications dashboard's User Journey Forms page, or in each page's live URL). Any brand slug your workspace owns works here; it isn't limited to any fixed list.
/forms/{brand}Fetch the saved form definition/forms/{brand}/eventsAppend a funnel event/forms/{brand}/submissionsValidate and submit a completed form/forms/acme/submissionsforms:submitThe submission is checked against the saved form definition. Send contact data, answers, IANA timezone, optional location, attribution, and a stable session ID. New leads follow the existing Telegram notification route; retries replay safely.
lt_live_ key in a browser embed. Use LeadTracker AI's public hosted journey for client-side pages.Funnel analytics
Read aggregate application, qualification, booking, attribution, and abandonment metrics without exposing contact details, answers, session identifiers, or raw query strings.
/analytics/application-funnel?days=30&brand=acmeanalytics:readdays accepts 7 through 90. brand is optional and, when given, must be one of your workspace's own registered brand slugs (omit it to aggregate across all of them). The response contains totals, daily trend data, attribution rows, and abandonment points only.
Workflow triggers
Trigger a preconfigured webhook workflow from an external system. The API cannot create, edit, activate, or inspect workflow definitions; it can only invoke an active webhook.received workflow in the key's workspace.
/workflows/{workflow_id}/triggerworkflows:triggerSend { "event": "voice.call.completed", "payload": { ... } } with an Idempotency-Key. If the workflow defines trigger_config.api_event, the event must match.
402 subscription_required for a trial workspace and fails closed if subscription verification is unavailable. Any message or call action still performs its normal usage and compliance checks.Booking webhooks
Create endpoints from LeadTracker AI app → Developer API. Endpoint configuration is owner/admin session-only; API keys cannot add a destination or reveal a signing secret.
booking.createdNative booking was confirmedbooking.rescheduledNative booking time changedbooking.cancelledNative booking was cancelledbooking.no_showAttendance was marked no-showYour configured HTTPS endpointHMAC SHA-256LeadTracker AI sends JSON over DNS-pinned public HTTPS, never follows redirects, and retries at least once with a stable event ID. De-duplicate deliveries with X-LeadTracker-Event-Id.
| Header | Description |
|---|---|
| X-LeadTracker-Event | The booking event name. |
| X-LeadTracker-Event-Id | Stable event identifier for receiver de-duplication. |
| X-LeadTracker-Timestamp | Unix timestamp in seconds. |
| X-LeadTracker-Signature | v1= + HMAC SHA-256 of timestamp + "." + raw_body. |
Errors and limits
All errors include a stable machine-readable code and an request_id for support and diagnostics.
{
"error": {
"code": "slot_taken",
"message": "That slot is no longer available."
},
"request_id": "4c0725d0-..."
}Security practices
Use separate keys for every provider and environment. Give each key a recognizable name, set a practical expiration, and replace it before sharing changes hands.
Never put a LeadTracker AI API key in a frontend bundle, publicly accessible webhook URL, or transcript. For a suspected exposure, create a replacement key and revoke the existing one immediately.