Skip to content
Included on every paid plan

Embed video calls in your product, call screen included

A REST API for rooms and join tokens, and one React component for the whole call — screen sharing, chat, a whiteboard, polls, breakout rooms and recording. Themed to match your product, with every permission decided by your backend.

  • About ten minutes to integrate
  • Your key never reaches a browser
  • No media servers to run
How it works

Three calls from your server, one component on your page

Most meeting apps bolt an SDK on afterwards. InlineMeet started as an API: the call screen our own meetings run on is the component you embed.

  • Create a room. POST /v1/rooms with your API key. It’s idempotent, so call it on every join.
  • Mint a join token. POST /v1/rooms/:code/tokens — choose the person’s role and what they may publish.
  • Render the call. <CallRoom /> connects browsers straight to our media servers — grid, spotlight and sidebar layouts, chat, polls, the whiteboard, a waiting room, moderation and recording included.
route.ts
// Runs on your server. The API key never reaches a browser.
const API = 'https://api.inlinemeet.com/v1';
const headers = {
  Authorization: `Bearer ${process.env.INLINEMEET_API_KEY}`,
  'Content-Type': 'application/json',
};
type Ctx = { params: Promise<{ code: string }> };

export async function POST(req: Request, { params }: Ctx) {
  const user = await getSignedInUser(req); // your own auth
  const { code: room } = await params;

  // Idempotent: the first join creates the room.
  await fetch(`${API}/rooms`, {
    method: 'POST', headers,
    body: JSON.stringify({ code: room }),
  });

  const res = await fetch(`${API}/rooms/${room}/tokens`, {
    method: 'POST', headers,
    body: JSON.stringify({
      identity: `${user.id}:${crypto.randomUUID()}`,
      name: user.name,
      role: user.isTeacher ? 'moderator' : 'participant',
      publish: { microphone: true, camera: true },
    }),
  });
  return Response.json(await res.json(), { status: res.status });
}
White-label

Looks like your product, not ours

Every colour, font and corner is a CSS variable, in light mode and dark. Point them at your design tokens and the call looks native. Try it:

yourapp.com/classes/algebra-101

Algebra 101 — live lesson

Alex Morgan · 24 students enrolled

● Live now
Algebra 101

4 people here · live lesson

Want the exact CSS? The theme playground writes it for you.

Platform

Everything around the call, too

Permissions the server enforces

Each token carries exactly what its holder may do — speak, share a screen, draw, moderate — and the media server holds them to it.

Recordings, tagged your way

Start and stop recordings from your server, label them with your own IDs, and get a webhook when each one starts, is ready or fails.

Moderation over the API

Turn on a waiting room, set a password, open breakout rooms or remove someone — from your backend, mid-call.

Usage you can read

Your month’s participant-minutes, recording storage and licences in use, through the API — to show in your own product.

No media servers to run

Browsers connect straight to our media servers. You don’t operate, scale or patch any video infrastructure.

Keys we can’t leak

API keys are 256-bit, shown once and stored only as a hash. Revoke one and it stops working on the next request.

Built for

Video wherever your customers already are

Teams embed InlineMeet so their users never have to leave for a meeting app.

Learning platforms

Live classes inside your courses, with teachers and students decided by your own auth. Classroom features.

Marketplaces and coaching

Coaches and clients, buyers and sellers meet on your platform, under your brand, without ever leaving it.

Consultations and support

Private one-to-one rooms with join links that expire when the appointment does, and recordings for review.

FAQ

The video API, answered

What is a video call API?

A service that lets developers add video calls to their own website or app without building video infrastructure. With InlineMeet your server creates rooms and join tokens over a REST API, and your frontend renders a complete call screen — so your users meet inside your product and never leave it.

Which frameworks does it work with?

The call UI is a React component (React 18 or later), so it drops into Next.js, Vite, Remix or any React app. The REST API is plain HTTPS and JSON, callable from any backend language. Install it with npm install @inlinemeet/call-ui livekit-client.

How is the video API priced?

It comes with every paid plan, on the same host licences as your meetings. Each licence includes 10,000 embedded participant-minutes a month on Pro and 20,000 on Business, then $0.0015 and $0.001 a minute. How usage is counted.

Can I remove the InlineMeet branding?

On Business and Enterprise, yes: pass branding={false} to the call UI and the small “powered by” mark is gone. On Pro it stays, in the corner.

Does my API key ever reach the browser?

Never. Your server holds the key and asks us for a short-lived join token per person; the browser only ever sees that token. The call UI talks to your own routes, not to us.

How long does an integration take?

The quickstart takes about ten minutes: an API key, one server route, and the <CallRoom /> component on a page.

Ship video calls this week

Sign up, create an API key on any paid plan, and follow the quickstart. You’ll have a call running in your app in minutes.