Leads in. Outcomes out.
Lojiq's agents, from your software.
The Lojiq Public API is the programmable side of Lojiq: push leads from anywhere, get every call, text and appointment outcome back as a signed webhook, and run Lojiq's AI voice agents from your own product with one API key.
Two APIs, two hosts#
Lojiq has two HTTP APIs. Only one of them is for you.
https://api.lojiq.ai/v1For your software, your CRM, Zapier. API-key auth. Versioned, documented here, supported.https://app.lojiq.ai/api/v1For the Lojiq web and mobile apps only. Session auth. Undocumented, changes without notice, and not served on api.lojiq.ai (it answers 404 not_found there).If you ever find yourself calling app.lojiq.ai/api/v1, stop: that surface can change under you at any time. Everything on this site lives under https://api.lojiq.ai/v1/.
What you can build#
Leads in Live
Create leads one at a time or import thousands from CSV, with consent fields and per-organization deduplication by phone number.
Outcomes out Live
Signed webhooks for lead, call, transcript, appointment and billing events, retried with backoff, idempotent by event id.
Voice agents Live
Create provider-neutral voice agents, start phone or browser calls, assign inbound numbers, read transcripts and recordings.
Managed Agents Coming soon
Run Lojiq's own agents — sales caller, receptionist, follow-up, texting journeys — inside your product, and pay per use.
Zapier Coming soon
Native triggers and actions. Today, Webhooks by Zapier already works against this API — the recipe is on the Zapier page.
Campaigns, calls, appointments
Read and steer what is already running in Lojiq: pause and resume campaigns, list every call, cancel appointments.
How it fits together#
Get a key#
An organization Owner or Admin creates a key in the Lojiq app (Developer → API keys), picks its scopes, and copies it once. Authentication & keys →
Push leads#
POST /leadsfrom your web form, CRM or any backend. The same phone number never creates a duplicate. Leads guide →Let Lojiq work#
Campaigns dial, texting journeys follow up, the receptionist answers, appointments get booked — all configured in the app.
Get outcomes back#
Subscribe once with
POST /webhooks. Every event arrives signed, with retries, at your endpoint. Webhooks guide →
At a glance#
| Base URL | https://api.lojiq.ai/v1 |
|---|---|
| Auth | Authorization: Bearer lojiq_live_… or X-Lojiq-Api-Key: lojiq_live_… (lojiq_test_… in a sandbox) |
| Format | JSON request and response bodies; CSV for the export; audio for voice previews |
| Errors | One envelope, { error, message?, request_id }, with stable snake_case codes. Every code → |
| Retries | Idempotency-Key on POST /leads and on every call-creating POST: a retry never makes a second lead or a second paid call |
| Rate limit | 60 requests per minute per key by default, Retry-After on 429 |
| Pricing | API requests are free. Calls and texts you start through the API bill tokens exactly like the app. |
| Versioning | Path-versioned (/v1); additive changes without notice, breaking changes only in a new version. Policy → |
| Request id | Every response carries X-Request-Id; quote it when you write to support@lojiq.ai |
Every endpoint#
All 45 endpoints, grouped the way the reference is. Not yet available marks endpoints that exist in the API but are not usable on production yet — their reference pages say what to use meanwhile.
| Endpoint | What it does | Scope | Status |
|---|---|---|---|
| Meta · 2 endpoints | |||
| GET / | API metadata | any scope | Live |
| GET /event-catalog | List webhook event types | webhooks:manage | Live |
| Account · 1 endpoint | |||
| GET /account | Get your organization | account:read | Live |
| Leads · 7 endpoints | |||
| GET /leads | List leads | leads:read | Live |
| POST /leads | Create a lead | leads:write | Live |
| GET /leads/{id} | Get a lead | leads:read | Live |
| PATCH /leads/{id} | Update a lead | leads:write | Live |
| POST /leads/bulk | Bulk import leads from CSV | leads:write | Live |
| POST /leads/inspect-csv | Preflight a CSV | leads:write | Live |
| GET /leads.csv | Export leads as CSV | leads:read | Live |
| Contacts · 2 endpoints | |||
| GET /contacts | List contacts | contacts:read | Not yet available |
| POST /contacts | Create a contact | contacts:write | Not yet available |
| Campaigns · 4 endpoints | |||
| GET /campaigns | List campaigns | campaigns:read | Live |
| GET /campaigns/{id} | Get a campaign | campaigns:read | Live |
| POST /campaigns/{id}/start | Start (or resume) a campaign | campaigns:write | Live |
| POST /campaigns/{id}/stop | Pause a campaign | campaigns:write | Live |
| Voice agents · 9 endpoints | |||
| GET /agents | List voice agents | agents:read | Live |
| POST /agents | Create a voice agent | agents:write | Live |
| GET /agents/{id} | Get a voice agent | agents:read | Live |
| PATCH /agents/{id} | Update a voice agent | agents:write | Live |
| DELETE /agents/{id} | Delete a voice agent | agents:write | Live |
| POST /agents/{id}/phone-number | Assign an inbound number | agents:write | Live |
| DELETE /agents/{id}/phone-number | Unassign the inbound number | agents:write | Live |
| GET /agents/{id}/calls | List an agent's calls | calls:read | Live |
| POST /agents/{id}/calls | Start a call with an agent | calls:write | Live |
| Calls · 6 endpoints | |||
| GET /calls | List calls | calls:read | Live |
| POST /calls | Start an ad-hoc call | calls:write | Live |
| GET /calls/{id} | Get a call | calls:read | Live |
| GET /calls/{id}/transcript | Get a call transcript | calls:read | Live |
| POST /calls/{id}/hangup | End a live call | calls:write | Live |
| GET /calls/{id}/recording | Get a call recording | calls:read | Live |
| Voices · 2 endpoints | |||
| GET /voices | List voices | voices:read | Live |
| GET /voices/{id}/preview | Preview a voice | voices:read | Live |
| Appointments · 2 endpoints | |||
| GET /appointments | List appointments | appointments:read | Live |
| POST /appointments/{id}/cancel | Cancel an appointment | appointments:write | Live |
| Deals · 2 endpoints | |||
| GET /deals | List deals | deals:read | Not yet available |
| PATCH /deals/{id} | Update a deal | deals:write | Not yet available |
| Webhooks · 4 endpoints | |||
| GET /webhooks | List webhook subscriptions | webhooks:manage | Live |
| POST /webhooks | Create a webhook subscription | webhooks:manage | Live |
| PATCH /webhooks/{id} | Update a webhook subscription | webhooks:manage | Live |
| DELETE /webhooks/{id} | Delete a webhook subscription | webhooks:manage | Live |
| Reference files · 4 endpoints | |||
| GET /openapi.yaml | OpenAPI spec (YAML) | no key | Live |
| GET /getting-started.md | Getting-started guide (Markdown) | no key | Live |
| GET /sdk/voice.js | Browser voice SDK (ES module) | no key | Live |
| GET /docs | Built-in reference page | no key | Live |