canonical: https://jentic.com/apis/lula.com/gail-api

# Lula GAIL (Lula API)

Jentic publishes the only available OpenAPI specification for GAIL (Lula API), keeping it validated and agent-ready. GAIL (Lula API) - also called Galactus External - is the full Lula AI calling platform surface, with 103 endpoints covering calls, campaigns, contacts, contact lists, conversations, sequences, scripts, sessions, SMS, audio files, redialing rules, do-not-call lists, data extraction, organisations, use cases, webhooks, and a Zapier integration namespace. Authentication is by X-API-Key header generated in the Gail Portal under General > Integrations > API Keys.

## For AI agents

Run the full Lula AI calling platform: calls, campaigns, contact lists, conversations, sequences, scripts, SMS, do-not-call lists, sessions, and webhooks across 103 endpoints.

## Scope

Does not handle PSTN number provisioning, billing, or hosted IVR design - use for AI calling, campaigns, sequences, scripts, conversations, SMS, DNC, and webhook configuration on the GAIL platform only.

## Capabilities

- Place single and bulk outbound AI voice calls and download call recordings as audio or pre-signed URL
- Create and run campaigns over contact lists with sequences, scripts, redialing rules, and detailed touchpoint reporting
- Manage contact lists, individual contacts, and a do-not-call list to keep outreach compliant
- Pull full conversation transcripts and run data extraction over completed conversations
- Send and receive SMS messages alongside voice as part of a multi-touch sequence
- Configure webhooks for call and conversation events and integrate the platform via the Zapier namespace

## Use cases

### Multi-touch AI outreach with sequences and SMS

Sales teams orchestrate multi-touch outreach where each contact receives a calling sequence interleaved with SMS follow-ups. The Sequences and Scripts endpoints define the cadence and conversational logic, Campaigns drive the sequence over a contact list, and the Sms namespace handles message dispatch. The `/v1/campaigns/{id}/describe` endpoint previews exactly what will happen before the campaign goes live.

Example prompt: Create a 3-step sequence (call, SMS, call), attach it to a campaign over the renewal contact list, and call `/v1/campaigns/{id}/describe` to confirm the planned flow before starting.

### Conversation analytics and data extraction

Operations teams run structured data extraction over completed conversations to pull buying intent, objections raised, and next-step commitments. The Conversations and DataExtraction tag groups expose endpoints to fetch transcripts and run extractions, which downstream BI tools or CRMs can ingest. This replaces manual review of recordings with an LLM-driven structured output.

Example prompt: List yesterday's completed conversations and run a data extraction job that returns intent and outcome fields per conversation.

### Compliance: do-not-call and redialing rules

Compliance teams use the DoNotCall, RedialingRules, and Org endpoints to enforce outbound calling rules - adding numbers to the DNC list, configuring how often a number can be retried after no-answer, and inspecting org-level settings. Combined with the Webhook namespace, this supports an audit trail and real-time alerting on compliance events.

Example prompt: Add a list of phone numbers to the do-not-call registry and configure a redialing rule that limits retries to 2 attempts per 7 days.

### Agent-driven full-platform GAIL automation via Jentic

An autonomous agent overseeing a sales motion needs to read the day's conversation outcomes, append fresh leads to a campaign, send SMS follow-ups, and notify the CRM via webhook - all without holding the GAIL API key. Jentic exposes every GAIL operation by intent and stores the X-API-Key in your Jentic One instance so the agent can chain operations safely across all 103 endpoints.

Example prompt: Search Jentic for 'gail run sequence', chain create-sequence, attach-to-campaign, start-campaign, and configure-webhook operations against the renewal use case.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/v1/calls` | Start a single outbound call |
| POST | `/v1/calls/bulk` | Start outbound calls in bulk |
| POST | `/v1/campaigns` | Create a new campaign |
| GET | `/v1/campaigns/{id}/describe` | Describe what will happen when a campaign runs |
| GET | `/v1/campaigns/{id}/touchpoints` | Touchpoints history for a campaign |
| GET | `/v1/calls/{callId}/recording-url` | Pre-signed URL for a call recording |
| GET | `/v1/audio_files` | Catalog of available audio assets |

## Key resources

- **Calls** — Single and bulk outbound calls, recordings, and per-call data
- **Campaigns** — Campaign create, start, stop, describe, touchpoints, and reports
- **Sequences** — Multi-step cadence definitions linking scripts and channels
- **Scripts** — Conversational scripts the AI agent follows on calls
- **Conversations** — Completed conversation transcripts and metadata
- **DataExtraction** — Structured extraction over conversation content
- **ContactLists / Contacts / DoNotCall** — Contact and DNC management
- **Sms** — SMS dispatch and inbound handling alongside voice
- **Webhook / Zapier** — Event delivery and Zapier namespace operations

## Why Jentic

- **Setup:** Wiring the GAIL API by hand means sending the X-API-Key header on every call and coordinating one key across calls, campaigns, sequences, scripts, conversations, SMS, and webhook paths. Through Jentic you install once, import the GAIL API from the API Directory, store the key once, and your agent calls it.
- **Permission scoping:** GAIL puts the campaign id in the URL path (`/v1/campaigns/{id}/...`), so a rule can pin your agent to one campaign: it can describe that campaign and read its touchpoints and nothing else. You choose the operations it may call, so call placement or bulk outbound dialing are not included unless you add them.
- **Credential handling:** Your GAIL key is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'create a GAIL sequence', 'extract data from a conversation', or 'add a number to the do-not-call list', and Jentic returns the matching GAIL operation with its parameter schema so the agent calls the right endpoint directly.

## Related APIs

- **GAIL API** — The slimmer 15-endpoint v1 GAIL surface focused on calls, campaigns, contacts, and recordings
- **Bland.ai** — Competing AI voice agent platform with programmable conversational pathways
- **Retell AI** — Real-time low-latency AI voice agent platform

## FAQ

### Why is there no official OpenAPI spec for GAIL (Lula API)?

Lula does not publish an OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call GAIL (Lula API) via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the GAIL (Lula API) use?

GAIL (Lula API) uses an X-API-Key header. Generate the key in the Gail Portal under General > Integrations > API Keys and pass it as X-API-Key on every request to api.lula.com. Through Jentic, the key is held encrypted in your Jentic One instance and injected per request.

### Can I extract structured data from completed conversations?

Yes. The DataExtraction tag group exposes endpoints for running structured extraction over completed Conversations, and you can fetch transcripts directly via the Conversations endpoints. This lets you pull intent labels, objections, and outcomes into a CRM without re-listening to call audio.

### What are the rate limits for the GAIL (Lula API)?

Specific rate limits are not declared in the spec. Expect per-account quotas tied to the Lula plan and outbound carrier capacity. Design clients to back off on 429 responses and prefer the bulk and campaign endpoints over tight loops on `/v1/calls.`

### How do I describe a campaign before starting it through Jentic?

Search Jentic for 'describe gail campaign', load GET `/v1/campaigns/{id}/describe`, and execute it with the campaign ID. The response details how contacts are sourced and converted to assignments, what sequences will run, and what scripts will execute at each step - useful as a dry-run before you call POST `/v1/campaigns/{id}/start.`

### Does GAIL (Lula API) support SMS as well as voice?

Yes. The Sms tag group exposes SMS dispatch and handling endpoints, and SMS steps can be combined with voice steps inside Sequences. This is what lets you build call-then-SMS multi-touch outreach in a single campaign.

### Can I limit what my agent is allowed to do with the GAIL (Lula API)?

Yes. Jentic One is self-hosted, so your own rules decide which GAIL operations and credentials the agent may use. Because GAIL puts the campaign id in the URL path (`/v1/campaigns/{id}/...`), you can pin an agent to a single campaign so it may only describe that campaign and read its touchpoints. Since you choose the operations it can call, higher-risk actions like placing calls or bulk outbound dialing on `/v1/calls` stay off unless you explicitly add them.
