Bring Your Own Room
Connect your LiveKit agent to a FaceTime line.
Quickstart
Prepare your line and room for inbound or outbound calls.
Outbound
Start a FaceTime Audio or Video call from your backend.
Authentication
Create a project key and authenticate server requests.
Audio and video
Understand current media support and acceptance requirements.
FaceTime CLI
Connect an audio or video agent with chert dev, without a webhook.
Receive a call
For a named LiveKit agent, use the CLI to handle inbound audio and video without building a webhook receiver. If you prefer your own receiver, the webhook flow is:- A caller rings your provisioned FaceTime handle.
- Chert asks your backend to accept or decline.
- You return a short-lived token for your LiveKit room.
- Chert joins the room and bridges the call to your agent.
- When the call ends, both services clean up their resources.
BYOR supports two-way audio, agent video, and separately enabled caller-camera capture. Confirm both video directions for your assigned line before relying on vision.
Designed to fail closed
Readiness checks gate call acceptance. A missing, late, or invalid acceptance response declines the call. Monitor call state, media tracks, and terminal reasons throughout the call.Place a call
Prepare your LiveKit room and silent agent, then send a project-authenticated request with the line ID and recipient toPOST /api/v1/calls. Chert dials from that line and bridges audio after answer. Start the greeting only on bridge_ready or the corresponding outbound call.started notification. See Outbound.
Outbound supports audio and video on enabled, ready lines. For FaceTime Video, use media: { audio: true, video: true } with an outbound-video-enabled line.
Other integration models
Managed Assistants run Chert-managed agent behavior. Hosted Sessions describes a proposed model and is not the current customer-controlled integration.The FaceTime API uses
https://facetime.trychert.com/api and FaceTime project credentials. The Messaging API elsewhere on this documentation site has a separate API contract.
