Skip to content

Repository files navigation

VAPI Example Cockpit

A cockpit to view and control the current activity of VAPI voice agents. This cockpit is all about outbound agents, which are much more complicated than inbound agents (e. g. support bots).

Code for the LinkedIn article https://www.linkedin.com/pulse/how-tame-flock-vapi-voice-agents-ralph-g%C3%B6llner-jfope/

This is a minimal solution to demonstrate the usage of VAPI API endpoints:

Architecture

Required: An Outbound Phone Number

To be able to schedule alls you need to have an outbound phone number set up in VAPI. Phone calling requires the consent of the called person in most countries - expect some compliance work before you are able to use such a number! VAPI as of 2025 does not provied outbound numbers you have to resort to twilio.com or similar providers.

Tech Stack

  • React/Vite/shadcn
  • Express/node.js
  • Supabase

UI

Main Tab)

Supabase Data Objects

VAPI Agents to supervise

create table public.vapi_scheduled_calls (
  id bigint generated by default as identity not null,
  created_at timestamp with time zone not null default now(),
  agent_name text null,
  call_time timestamp with time zone null,
  topic text null,
  phone_number text null,
  customer_name text null,
  is_done boolean null default false,
  constraint vapi_scheduled_calls_pkey primary key (id)
) TABLESPACE pg_default;

Scheduled Calls

create table public.vapi_scheduled_calls (
  id bigint generated by default as identity not null,
  created_at timestamp with time zone not null default now(),
  agent_name text null,
  call_time timestamp with time zone null,
  topic text null,
  phone_number text null,
  customer_name text null,
  is_done boolean null default false,
  constraint vapi_scheduled_calls_pkey primary key (id)
) TABLESPACE pg_default;

Call Log

Please notice: This table must be real-time enabled in Supabase for the dashboard to refresh automatically.

create table public.vapi_logs (
  id bigint generated by default as identity not null,
  created_at timestamp with time zone not null default now(),
  status text null default 'in-progress'::text,
  agent_id text null,
  duration_seconds smallint null,
  messages text null,
  summary text null,
  costs real null default '0'::real,
  call_id text null,
  schedule_item_id bigint null,
  constraint vapi_logs_pkey primary key (id),
  constraint vapi_logs_call_id_key unique (call_id),
  constraint vapi_logs_schedule_item_id_fkey foreign KEY (schedule_item_id) references vapi_scheduled_calls (id)
) TABLESPACE pg_default;

API Endpoints

Documentation

Releases

Packages

Used by

Contributors

Languages