All guides

Calls

Share a call with your client

Mark a recorded call as shared and show its recording, transcript and screenshots inside your own admin panel with the project's server key and glitchgrab/server

Steps checked September 15, 2026

After a client call, you can show that client the recording inside your own product, for example in your super admin panel, without giving them a Glitchgrab login. You choose call by call what they get to see.

Before you start

  • You own the project the call is filed under. Team members with access can listen to calls but cannot share them.
  • The call is filed to a project. A call showing no project yet — file it has to be filed first.
  • Your admin panel runs on a server you control: a Next.js app with the glitchgrab package, or any server that can make an HTTP request.

1. Share the call

  1. Open Calls and click the call.
  2. Under the title, Client access says Only people on this project can open it.

Client access on a call that is not shared: the share with client button, and a no server key link to API Tokens

  1. Press share with client. You will see Shared with the client, and the button now reads shared with client.

Shared calls show a shared badge in the Calls list. Press the button again to stop sharing. You will see No longer shared, and your admin panel stops seeing that call at once.

Only shared calls ever leave Glitchgrab. Internal calls and prospect calls on the same project stay private, even after you create a key.

2. Get the project's server key

The server key is how your admin panel proves it may read this project's shared calls. There is one per project, and the same key writes the project's guides. If you already issued one for guides, use it here too.

  1. Open API Tokens in the left sidebar and switch to the Server keys tab. The no server key link (or server key, once one exists) in Client access on the call opens the same tab.

The Server keys tab on API Tokens: one row per project you own, each with its key status and an Issue key button

  1. Press Issue key on the project's row, then Issue key in the dialog. You will see Server key issued.

The server_key dialog: what the key does, and a warning to keep it on your server

  1. Copy the ggc_… key straight away. It is shown exactly once.

Keep it on your server: never in browser code, a NEXT_PUBLIC_ variable or a public repo. Anyone holding it can play and delete every shared call on the project, and rewrite its guides.

Lost it? Press ManageIssue new key. The old key stops working immediately, for calls and guides alike (New key issued — the old one stopped working). To switch it off entirely, press ManageRevokeSure? Revoke.

3. Show calls in your admin panel

Put the key in your server's environment:

GLITCHGRAB_CALLS_KEY=ggc_your_key

Then read the calls from a server component, behind your own admin sign-in:

// app/admin/calls/page.tsx
import { listCalls } from "glitchgrab/server";

export default async function CallsPage() {
  const calls = await listCalls(); // shared calls, newest first
  return calls.map((c) => (
    <a key={c.id} href={`/admin/calls/${c.id}`}>
      {c.title} — {c.overview}
    </a>
  ));
}
// app/admin/calls/[id]/page.tsx
import { notFound } from "next/navigation";
import { getCall } from "glitchgrab/server";

export default async function CallPage({ params }: { params: Promise<{ id: string }> }) {
  const { id } = await params;
  const call = await getCall(id);
  if (!call) notFound();

  return (
    <article>
      <h1>{call.title}</h1>
      {call.audio.map((a) => (
        <audio key={a.track} controls src={a.url} />
      ))}
      <p>{call.summary?.overview}</p>
      <pre>{call.transcript}</pre>
    </article>
  );
}

What you get back:

  • audio: a call recorded by the bot has one track, call. A call recorded with the extension has two: client (everyone else on the call) and recorder (your side).
  • transcript and summary: the summary's moments carry tMs, so you can start the audio at the moment something was said.
  • frames: screenshots taken during the call, 50 at a time. Ask for more with getCall(id, { framesOffset: 50 }). frames.total says how many exist.
  • participants: names and emails from the call. Use the emails to show each customer only their own calls.

Audio and screenshot links expire after 15 minutes. Read the call when the page renders. Do not save the links in your database.

Not on Next.js? Call the API directly with the key:

curl https://glitchgrab.dev/api/v1/sdk/calls \
  -H "Authorization: Bearer ggc_your_key"

curl "https://glitchgrab.dev/api/v1/sdk/calls?id=<callId>" \
  -H "Authorization: Bearer ggc_your_key"

4. Delete a call from your admin panel

import { deleteCall } from "glitchgrab/server";

const result = await deleteCall(callId);
if (!result.deleted) console.log(result.error);

This deletes the recording, screenshots and transcript for good, in Glitchgrab too. It works only on shared calls. It never throws: a failure comes back as { deleted: false, error }.

Messages

  • Only the project owner can share a call with the client: ask the project's owner to press share with client.
  • File this call under a project before sharing it: pick the project on the call first.
  • Calls need this project's server key (ggc_…), not the public SDK token: you sent the gg_ token. Use the server key.
  • Invalid server key: the key was replaced or revoked. Issue a new one. An old guides-only key (ggw_…) also gets this, because it never reaches calls.
  • Call not found: the call is not shared, belongs to another project, or was deleted.
  • The bot is still in this call — delete it after the call ends: wait for the call to end, then delete it.
  • No server key — set GLITCHGRAB_CALLS_KEY (ggc_…): deleteCall found no key on your server.
  • listCalls() returns an empty list: no call is shared yet, or GLITCHGRAB_CALLS_KEY is missing on the server.
  • The same key writes guides: see Write guides from your own server.
  • An AI agent can read calls too, with your own login instead of a key: see Connect your AI agent to Glitchgrab (MCP).
  • Reading and deleting calls in Glitchgrab: see Read a call's transcript.
Still stuck? Press ⌘⇧G on any Glitchgrab page to tell us — or see the SDK docs.