canonical: https://jentic.com/apis/lemonslice.com/lemonslice

# LemonSlice

The LemonSlice API runs real-time, interactive avatar sessions: it takes an avatar's audio and publishes synchronized talking video to a LiveKit, Daily, Pipecat, or Agora transport. A session starts from a saved agent_id or a single agent_image_url, and while it runs, control events can swap the reference image, adjust the expression prompts, trigger actions, or terminate it. The same API creates hosted sessions for an avatar, sends a LiveKit-based avatar into Zoom, Google Meet, Microsoft Teams, or Webex meetings, and generates standing, bust, sitting, or portrait reference images from one source photo.

## For AI agents

Start real-time talking-avatar video sessions over LiveKit, Daily, Pipecat, or Agora, control a live avatar's image and expression, send it into Zoom or Google Meet calls, and generate avatar reference images.

## Scope

Does not handle speech recognition, language model responses, text-to-speech, or recorded video editing. Use for real-time avatar video sessions, meeting joins, and avatar image preparation only.

## Capabilities

- Start a real-time avatar session from an agent_id or an agent_image_url, publishing video to LiveKit, Daily, or WebSocket transports
- Create a hosted session for a saved LemonSlice avatar and check its status by session_id
- Swap a live avatar's reference image or change its agent_prompt and idle prompt mid-session with control events
- Send a LiveKit-based avatar into a Zoom, Google Meet, Microsoft Teams, or Webex meeting, and remove it again by meeting_bot_id
- Start and stop avatar sessions on Agora with video_encoding and agora_settings
- Generate standing, bust, sitting, or portrait avatar reference images from a single source photo

## Use cases

### Agent-launched avatar sessions through Jentic

A voice agent that should appear on camera can ask LemonSlice for a session, pass its LiveKit room details, and receive a session_id and control_url to steer the avatar. Through Jentic the agent finds the create-session operation by intent, the X-API-Key credential is injected at execution time, and a rule can allow session creation and control while leaving meeting joins out of reach.

Example prompt: Call POST `/liveai/sessions` with agent_id 'agent_abc123', transport_type 'livekit', and properties containing the livekit_url and livekit_token for the room, then store the returned session_id

### Avatars in third-party meetings

Some assistants need to show up where people already meet. LemonSlice can send a LiveKit-based avatar session into Zoom, Google Meet, Microsoft Teams, or Webex given the meeting_url, livekit_url, and broadcast_token, with an optional bot_name, and remove it later with the meeting_bot_id the join call returned.

Example prompt: Call POST `/liveai/sessions/{session_id}/join-meeting` with meeting_url 'https://meet.google.com/abc-defg-hij', the livekit_url, the broadcast_token, and bot_name 'Support Avatar'

### Live avatar control

A running avatar can be adjusted without restarting the session. Control events sent to a session update the reference image from an image_url or image_base64, set an agent prompt that shapes expression while speaking or an idle prompt for pauses, trigger actions on CWM-1 avatars, reset the idle timeout, or terminate the session.

Example prompt: Call POST `/liveai/sessions/{session_id}/control` with event 'update-image' and image_url 'https://example.com/avatar-winter.jpg'

### Avatar image preparation

Avatar quality depends on the reference image's pose and framing. The avatar variants operation takes one source photo by image_url or image_base64 and returns reframed images for the variant_ids you request, such as standing, bust, sitting, or portrait, ready to use when creating a session.

Example prompt: Call POST `/liveai/avatar-variants` with image_url 'https://example.com/headshot.jpg' and variant_ids ['standing', 'portrait'], then use the standing URL as agent_image_url for the next session

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/liveai/sessions` | Create an avatar session |
| GET | `/liveai/sessions/{session_id}` | Get a session |
| POST | `/liveai/sessions/{session_id}/control` | Send a control event |
| POST | `/liveai/sessions/{session_id}/join-meeting` | Join a third-party meeting |
| POST | `/liveai/rooms` | Create a hosted session |
| POST | `/liveai/agora/session/start` | Start an Agora session |
| POST | `/liveai/avatar-variants` | Generate avatar variants |

## Key resources

- **Sessions** — Create, list, and get avatar sessions, send control events, and join or leave third-party meetings
- **Hosted sessions** — Create, list, and get hosted sessions for a saved avatar
- **Agora sessions** — Start and stop avatar sessions on Agora
- **Avatar variants** — Generate avatar reference images in standing, bust, sitting, or portrait framing

## AI readiness

This API is usable in Jentic One now. Its AI-readiness score against Jentic's framework shows where it stands today and where improvements would make it even easier for agents to use.

- **Score:** 70 / 100
- **Maturity:** AI-Aware
- **Dimensions:**
  - Foundational Compliance: 85 / 100
  - Developer Experience & Jentic Compatibility: 75 / 100
  - AI-Readiness & Agent Experience: 57 / 100
  - Agent Usability: 94 / 100
  - Security: 50 / 100
  - AI Discoverability: 81 / 100
- **View full report:** https://jentic.com/apis/lemonslice.com/lemonslice/scorecard
- **How the score is calculated:** https://docs.jentic.com/reference/api-readiness-framework/overview/
- **More about the dimensions:** https://docs.jentic.com/reference/api-readiness-framework/specification/#dimensional-model-overview

### Score it yourself

Every API in the directory is allowlisted, so you can re-score it with no key required.

- **Score your own API:** https://jentic.com/scorecard.md
- **Scoring CLI agent skill:** https://github.com/jentic/jentic-api-scorecard/blob/main/skills/jentic-api-scorecard/SKILL.md

```sh
npx @jentic/api-scorecard-cli score <openapi-url>
```

## Why Jentic

- **Setup:** Wiring LemonSlice by hand means sending the X-API-Key header, assembling the right transport properties for LiveKit, Daily, Pipecat, or Agora, and tracking session ids and control URLs across calls. Through Jentic you install once, import LemonSlice from the API Directory, store the key once, and your agent calls it.
- **Permission scoping:** LemonSlice puts the session id in the URL path (`/liveai/sessions/{session_id}/control`), so a rule can pin your agent to one session and the operations you pick. You choose the operations it may call, so ones that reach outside your app, like joining a third-party meeting, are not included unless you add them.
- **Credential handling:** Your LemonSlice API 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 'start a talking avatar session' or 'send the avatar into a meeting', and Jentic returns the matching LemonSlice operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **HeyGen API** — AI avatar video generation and streaming avatars
- **Tavus API** — Conversational video replicas and real-time video agents
- **ElevenLabs API** — Text-to-speech and voice generation
- **Agora API** — Real-time voice and video infrastructure

## FAQ

### Is there a LemonSlice MCP server?

You don't need an MCP server to give your agent the LemonSlice API. Jentic connects it directly from the API Directory: import it, store your API key once, and your agent calls it. Operations are discovered on demand, so your agent's context carries no tool definitions it will not use.

### What authentication does the LemonSlice API use?

Per its OpenAPI spec, the LemonSlice API authenticates with your API token in the X-API-Key header. The session control operation is declared without a security requirement and is addressed through the control_url a new session returns. Through Jentic, the key is stored encrypted by your own Jentic One instance and injected at execution time.

### Which transports can a LemonSlice session publish to?

POST `/liveai/sessions` accepts LiveKit SDK, Pipecat SDK, WebSocket with LiveKit, and WebSocket with Daily inputs, selected with transport_type and its matching properties such as livekit_url and livekit_token or daily_url and daily_token. Agora has its own start and stop operations under `/liveai/agora/session.`

### What are the rate limits for the LemonSlice API?

The OpenAPI spec does not specify rate limits. Check https://lemonslice.com/docs for current limits.

### How do I start an avatar session with LemonSlice through Jentic?

Install Jentic One with `curl -fsSL https://raw.githubusercontent.com/jentic/jentic-one/main/tools/install.sh | sh`, import the LemonSlice API from the directory, and store your API key. Your agent then searches for 'start a talking avatar session' and Jentic returns POST `/liveai/sessions`, which takes an agent_id or agent_image_url plus the transport details. To run it on your own infrastructure, install Jentic One from its GitHub repo.

### Can a LemonSlice avatar join a Zoom or Google Meet call?

Yes, for LiveKit-based sessions. POST `/liveai/sessions/{session_id}/join-meeting` takes a meeting_url for Zoom, Google Meet, Microsoft Teams, or Webex with a livekit_url and broadcast_token, and POST `/liveai/sessions/{session_id}/leave-meeting` removes the avatar by meeting_bot_id.

### Can I limit what my agent is allowed to do with the LemonSlice API?

Yes. Write a rule that allows only POST `/liveai/sessions` and GET `/liveai/sessions/{session_id}`: the agent can start an avatar session and check on it, but cannot send the avatar into external meetings or run Agora sessions, and every call it makes is logged.
