A video conferencing API is defined as a hosted service that handles WebRTC signaling, media routing, and recording so your application only handles the interface. You integrate it by creating a room on your server, minting a short-lived token, and joining that room from a client SDK. VideoSDK covers that path in four calls.

The demo works on localhost. Then the first production call drops twenty minutes in, because the token was minted in the browser with a twenty minute expiry and the secret shipped inside the JavaScript bundle.

That failure is the norm, not the exception. The API surface is small. The work around it, token minting, room lifecycle, permission prompts, and reconnection, is where teams lose weeks.

This guide walks the whole path with VideoSDK: a room created from your server, a scoped JWT, a browser client that joins and renders streams, then recording, mobile, errors, and real cost math.

What is a video conferencing API?

A video conferencing API is a hosted service that runs the parts of a real-time call your product should never own: signaling, media routing, and infrastructure.

A video conferencing API is defined as a set of REST endpoints and client SDKs that create meeting rooms, authenticate participants, route audio and video between them, and expose recording and streaming as server-side calls. It works by placing a selective forwarding unit between participants, so each device uploads its stream once and the server fans it out to everyone else.

That distinction matters for cost. In a mesh peer-to-peer call, every participant uploads a separate copy of their video to every other participant, so a five-person call means four uploads per device. A selective forwarding unit turns that into one upload per device regardless of room size.

VideoSDK provides this through a rooms-based model. You create a Room, mint a Meeting Token scoped to that room, and join it from any of the client SDKs, currently React, JavaScript, React Native, Android, iOS, Flutter, Unity, C++, IoT, and Python. Recording, interactive live streaming, transcription, and SIP telephony run as server-side calls against the same room.

API or SDK: Which one are you integrating?

Both, and the split is worth naming because it decides where your code lives.

The API is the server surface. It is HTTP, you call it from your backend with your secret, and it handles room creation, token minting, recording control, and analytics. The REST API reference documents these endpoints.

The SDK is the client surface. It is a package you install into your web or mobile app, it holds the WebRTC connection, and it never sees your secret. When people say they want to integrate a video conferencing SDK, this is the half they mean.

Your backend talks to the API. Your frontend talks to the SDK. The JWT is the handoff between them, and getting that handoff right is most of the integration.

Before you start integrating a video conferencing API

Five things need to be in place before you integrate video conferencing API calls into a real product, and four of them fail silently if you skip them.

1. An account and API credentials. Sign up at VideoSDK, open the dashboard, and copy your API key and secret. A new account starts with $20 free credit, which is enough to run the full walkthrough below many times over. The dashboard also issues a temporary token you can paste into a terminal for the first REST call, before your own token endpoint exists.

2. A token server. You need one backend route that signs a JWT with your secret. Node, Python, Go, or anything else works. This is not optional and not something to defer: the secret must never reach the browser, because anyone who reads your bundle can then mint tokens against your account.

3. An HTTPS origin. Browsers only expose getUserMedia and getDisplayMedia in a secure context, per the MDN MediaDevices reference. http://localhost counts as secure, so development works. The moment you deploy to a plain HTTP host, camera access returns nothing and the failure looks like a permissions bug.

4. Camera and microphone permission handling. The permission prompt fires on the first getUserMedia call, and users deny it often enough that you need a real path for it. Plan a pre-call device check screen rather than discovering the denial after the participant has already joined.

5. A browser support decision. VideoSDK runs on Chrome, Edge, Firefox, and Safari on both desktop and mobile. Screen sharing is the exception.

SurfaceAudio and video callingScreen sharing
Chrome, Edge, Firefox (desktop)SupportedSupported
Safari (macOS)SupportedSupported
Chrome, Firefox (Android)SupportedNot supported in browser
Safari (iOS and iPadOS)SupportedNot supported in browser
React Native and Flutter appsSupportedSupported through native screen capture

VideoSDK supports screen sharing on desktop browsers. Mobile and tablet browsers don't allow it, that's a browser limitation, so if mobile screen share is part of your requirements, you'll need a native app rather than a web build.

How to integrate a video conferencing API in six steps

To integrate a video conferencing API, create a room on your server, mint a scoped token, join the room from the client, render the streams, wire the controls, then clean up on exit.

  1. Create a room. Call the rooms endpoint from your backend and store the returned room ID against your own appointment, class, or ticket record.
  2. Generate a JWT. Sign a token server-side with your API secret, scoped to one room and one participant, with a short expiry.
  3. Join the room. Pass the token and room ID to the client SDK and call join from a user action.
  4. Render participants. Subscribe to participant and stream events, then attach each track to a media element.
  5. Add controls. Wire mute, camera toggle, and screen share to SDK methods rather than to raw browser APIs.
  6. Leave and clean up. Call leave, detach listeners, and stop local tracks so the camera light actually goes out.

Teams that integrate video conferencing API endpoints for the first time usually underestimate steps 2 and 6.

Follow this quickstart to integrate video conferencing API yourself!

You can also watch this video to get a quick integration guide idea!

Common video conferencing API integration errors

Six failures account for most of the debugging time in a first integration, and five of them raise a specific error code rather than a generic connection failure.

SymptomCode and nameCauseFix
Join silently fails, no participants appear4002 INVALID_TOKENToken empty, malformed, or expired before joinMint the token immediately before join, not at page load. Confirm the payload carries apikey and permissions.
Join rejected for a room that exists4003 INVALID_MEETING_IDRoom ID mistyped, or deactivatedLog the exact roomId you pass to initMeeting. A room closed by autoCloseConfig returns this too.
Token works for one room only4022 UNAUTHORIZED_MEETING_IDToken was scoped to a different roomIdMint per room. A token with roomId set cannot join any other room.
Black tile, no video, no error dialog3014 ERROR_GET_VIDEO_MEDIA_PERMISSION_DENIEDCamera permission denied, or the page is not on HTTPSAdd a pre-call device check. Confirm the origin is HTTPS or localhost.
Video works in Chrome, fails in SafariERROR_VIDEO_PRODUCE_CODEC_NOT_SUPPORTEDRequested codec unsupported on that deviceVideoSDK falls back to VP8 automatically while codecSwitchEnabled stays true. Do not disable it.
Remote video stays frozen on first frame on iPhoneAutoplay blocked, no SDK codeiOS Safari blocks unmuted autoplaySet playsInline and muted on the element, then call play() inside the join click handler.

Two of those deserve more than a table row.

Codec negotiation. VideoSDK supports VP8, H264, VP9, and AV1, with VP8 as the default. If a device cannot produce the codec you requested, the SDK switches that participant to VP8 and raises the error rather than dropping them. VP9 and AV1 do not support multi-layer streaming, so passing multiStream: true with either one silently sets it to false. The optimize video track guide documents the full matrix.
Read this to know more about codecs: H.264 vs H.265

Autoplay on iOS. Since 2016, WebKit has allowed inline autoplay only for muted video, as described in Apple's video policies post. Remote audio needs a user gesture, which is why calling play() inside the join handler works and calling it from a stream-enabled listener sometimes does not.

Testing and production checklist

Two participants on one laptop proves the code compiles. It does not prove the integration works.

Test the failure paths, not the happy path.

  • Open the room in two browsers, not two tabs. Two tabs of the same browser share one permission grant and hide permission bugs.
  • Deny camera permission on purpose and confirm your interface says something useful.
  • Throttle to a slow connection in Chrome DevTools and watch whether video degrades or the call drops.
  • Kill wifi mid-call for ten seconds and confirm the participant returns instead of leaving a frozen tile.
  • Run one client on cellular. Corporate wifi and home wifi both hide TURN relay problems that mobile networks expose.
  • Test Safari on a real iPhone. The simulator does not reproduce autoplay and inline playback behaviour.

Before you ship.

  • The API secret exists only in server environment variables. Search your built bundle for it to be sure.
  • Tokens are scoped with roomId and participantId, and expire in an hour or less.
  • Only hosts get allow_mod.
  • The token route sits behind your own authentication and authorisation.
  • Recording and streaming start from the server, never from a client control.
  • The whole app is served over HTTPS, including any iframe embedding it.
  • Room IDs are stored against your own records so you can reconcile sessions and billing later.
  • Webhook endpoints for recording and session events are live and verified.

How much does it cost to integrate video conferencing?

VideoSDK charges per participant minute, so cost scales with people multiplied by time, not with the number of rooms you create.

These are the published rates as of September 8, 2026.

ServiceRate
Voice only$0.001 per participant minute
Video HD, 720p$0.004 per participant minute
Video Full HD, 1080p$0.008 per participant minute
Recording, HD$0.015 per recorded minute
Interactive live streaming, HD$0.002 per viewer minute
HLS encoding, HD$0.04 per livestream minute
Real-time transcription$0.020 per transcription minute

Work the arithmetic for your own shape of call before you commit.

  • A 1:1 telehealth consult, 20 minutes, HD video:
    2 participants × 20 minutes × $0.004 = $0.16
  • A 12-person standup, 15 minutes, HD video:
    12 × 15 × $0.004 = $0.72
  • The same consult with recording:
    $0.16 + (20 recorded minutes × $0.015) = $0.46
  • A webinar with 4 speakers and 500 viewers for 60 minutes, using interactive live streaming:
    (4 × 60 × $0.004) + (500 × 60 × $0.002) = $60.96

The pattern that catches teams out is the viewer side of streaming. Speaker cost is trivial and audience cost is linear, so a webinar product's margin is set by the streaming rate rather than the calling rate.

The $20 free credit on signup covers roughly 5,000 participant minutes of HD video, which is enough to build and test a product before any card is involved. Current rates live on the VideoSDK pricing page.

When a different provider fits better

An honest integration guide names the cases where its own product is the wrong pick.

Choose something else when you need a fully managed meeting product rather than an API, because a scheduling and hosting tool such as Zoom or Google Meet already solves that and a build does not. Choose an open-source stack you host yourself when data residency rules require media to never leave hardware you control, and you have the operations team to run turn servers and an SFU.

VideoSDK's limits are worth stating too. Browser screen share is desktop only. VP9 and AV1 give up multi-layer streaming. Expo Go cannot load the React Native SDK, so mobile means a development build.

If you are still comparing vendors rather than implementing, the evaluation criteria and provider comparison live in VideoSDK's video conferencing API developer hub guide. This article assumes the decision is made and the work is the build.

Glossary

Room: A VideoSDK meeting space identified by a room ID such as abc-xyzw-lmno. Participants join a room, and every server-side operation, including recording and streaming, targets that room ID.
Meeting token: A JWT signed server-side with your API secret that authorises one participant to join one room. Scoping it with roomId and participantId is what stops a leaked room ID from becoming an open door.
Participant: A person or an AI agent connected to a room, each carrying their own audio and video streams, addressable through useParticipant in React or the participant object in JavaScript.
SFU (selective forwarding unit): The media server that receives one upload from each participant and forwards it to the others. It is why a 20-person VideoSDK call does not require 19 uploads from every device.
Composition: The server-side layout applied when a room is recorded or streamed, controlling layout, quality, grid size, orientation, and theme. It is what turns many participant streams into one rendered video file or feed.
Network-adaptive streaming: VideoSDK's automatic adjustment of bitrate and resolution as available bandwidth changes, which is what degrades a call gracefully instead of dropping it.

Key takeaways

  • Integrating a video conferencing API is four moving parts: a room created server-side, a scoped JWT, a client SDK that joins, and event handlers that attach media to elements.
  • The API secret belongs in server environment variables only, and the token that reaches the browser should be scoped to one room and one participant with a short expiry.
  • Media arrives on stream-enabled, not on participant-joined, and treating those two events as one is the most common cause of a black tile.
  • Recording, HLS, and RTMP run from the VideoSDK Server SDK against a room ID, so participants cannot start a recording your product did not authorise.
  • VideoSDK bills per participant minute, at $0.004 for HD video, and the $20 free credit covers roughly 5,000 participant minutes of testing.

Conclusion

You now have the full path to integrate a video conferencing API: create a room, mint a scoped token, join, render, control, and clean up, plus recording, mobile, and the errors that show up in week two rather than day one.

Build it against your own product's roles rather than a generic demo, because the token route is where your authorisation model meets the call. Start with the JavaScript quickstart or the React quickstart, sign up at VideoSDK for $20 free credit, and check current rates on the pricing page.

What are you building with VideoSDK? Drop a comment with the kind of call your product needs, and if you get stuck on the token route, the VideoSDK Discord is the fastest place to get unstuck.

Frequently asked questions

What is a video conferencing API?

A video conferencing API is a hosted service that handles WebRTC signaling, media routing, recording, and streaming, exposed as REST endpoints for your server and SDKs for your client. It removes the need to run your own signaling server, SFU, and TURN infrastructure. VideoSDK provides it as a rooms-based API with client SDKs for React, JavaScript, React Native, Android, iOS, Flutter, Unity, C++, IoT, and Python.

How do I integrate a video conferencing API into my website?

To integrate a video conferencing API into a website, create a room from your backend with a POST to the rooms endpoint, sign a JWT with your API secret, pass that token and the room ID to the client SDK, then call join from a user click. With VideoSDK's JavaScript SDK, that is VideoSDK.config(token), VideoSDK.initMeeting({ meetingId }), and meeting.join(). Rendering participants means listening for participant-joined and stream-enabled and attaching each track to a video element.

What is the difference between a video conferencing API and an SDK?

The API is the server-side HTTP surface used for room creation, token minting, and recording control, and it is called with your secret from your backend. The SDK is the client-side package that holds the WebRTC connection and renders media, and it authenticates with a token rather than a secret. A working integration uses both, with the JWT as the handoff between them.

How long does video conferencing API integration take?

A working two-participant call takes a few hours, since it is one REST call, one token route, and roughly forty lines of client code. Production readiness takes longer, because permission handling, reconnection, device selection, layout, and recording controls are each real work. Teams that skip the pre-call device check and the token expiry design are the ones that spend weeks debugging after launch.

Can I integrate a video conference API without a backend?

No. You cannot integrate video conference API calls from the browser alone, because signing tokens requires your API secret, and any secret shipped to the browser can be extracted from the bundle and used to mint tokens against your account. The minimum viable backend is a single route that signs a JWT, which runs fine in a serverless function.

How much does it cost to integrate video conferencing into an app?

VideoSDK charges per participant minute, at $0.001 for voice, $0.004 for HD video, and $0.008 for Full HD, with recording at $0.015 per recorded minute, verified on September 8, 2026. A 20-minute HD consult between two people costs about $0.16, and adding a recording brings it to roughly $0.46. New accounts start with $20 free credit, which covers about 5,000 participant minutes of HD video.

Can I customise the video call interface?

Yes. The client SDKs give you the raw participant streams and state through useParticipant and the participant object, so the layout, controls, and branding are your own components. If you want a working interface without building one, the Prebuilt UI Kit drops in a complete call interface, and you can move to the custom SDK later without changing the room or token model.

How many participants can one video conferencing room hold?

Room capacity depends on the mode you use rather than on a single fixed number. Interactive calls where everyone can speak are limited by what each device can decode, so grids stay practical in the tens of participants. For larger audiences, interactive live streaming and HLS separate a small set of speakers from a much larger set of viewers, which is why the pricing model bills viewers separately.