Support 1,000 active participants and up to 100,000 person real-time interactive calls. We also give you more features for your use case.
100K
person calls, 25 publishers
1K
participants all with cams and mics on
Daily gives a nice level of abstraction. What took several hundred lines of code with one of your competitors took four lines of code with Daily.
Michael Nguyen, Senior Engineer, Kumospace (Former Twilio customer)
Prototype in minutes, not days. Sample code and templates for spatial audio, breakout rooms, audio and more use cases. Visit our developer guides.
Add powerful video calls — in minutes — to any product with Daily Prebuilt. Get 100,000 person calls, chat, recording, and more in a robust UI embed.
We handle everything under the hood for video calls of all sizes to ensure high-quality delivery across networks, bandwidth constraints and devices.
Pay-as-you-go pricing made for developers and priced to scale. 10,000 free minutes, automatic volume discounts, and no credit card required to get started.
Features | ||
Max. participants per call | 50 | 100,000 |
Max. cameras and mics on per call | 50 | 1,000 |
Max. concurrent room participants | 10,000 | Unlimited |
Full HD recording | No | Yes |
RTMP output for livestreams | No | Yes |
HIPAA UI embed | No | $200 add-on |
Automatic p2p/SFU switching | No | Yes |
Fully supported prebuilt UI | No | Yes |
Pricing | ||
Group video call | $0.004 per participant minute | $0.0015–$0.004 + automatic volume discounts |
Peer-to-peer | $0.001 per participant minute | $0.0015 automatic volume discounts |
Recording | $0.004 per participant minute (raw tracks only) |
$0.01349 per recording minute |
Compositing | $0.01 per composed minute | Free Learn more |
Support | Only email support included | Free support Email and chat |
When we switched from Twilio to Daily, we saw the percentage of complaints about video quality and stability go down by at least 50%.
Nate Wildermuth, Software Engineer at Rally video
<script src="https://unpkg.com/@daily-co/daily-js"></script>
<script>
callFrame = window.DailyIframe.createFrame();
callFrame.join({ url: 'https://you.daily.co/hello' });
</script>
val call = CallClient(applicationContext)
call.addListener(object: CallClientListener {
override fun onParticipantJoined(participant: Participant) {
Log.d(TAG, "Participant ${participant.id} joined the call on Android!")
showParticipant(participant)
}
}
call.addListener(object: CallClientListener {
override fun onCallStateUpdated(state: CallState) {
showUIForCallState(state);
}
}
const call = DailyIframe.createCallObject();
await call.setNetworkTopology({ topology: 'sfu' });
await call.setNetworkTopology({ topology: 'peer' });
curl --request POST \
--url https://api.staging.daily.co/v1/rooms/ROOM-NAME\
--header 'Authorization: Bearer TOKEN' \
--header 'Content-Type: application/json' \
--data '{"properties": {"enable_mesh_sfu":true,"enable_terse_logging":true,"enable_hidden_participants":true,"owner_only_broadcast":true,"experimental_optimize_large_calls":true}}'
const call = DailyIframe.createCallObject();
const roomURL = 'DAILY_ROOM_URL';
const token = 'DAILY_MEETING_TOKEN';
const rtmpURL = 'RTMP_URL';
await call.join({
url: roomURL,
token,
});
callFrame.startLiveStreaming({ rtmpUrl });