Skip to content
Resum
Talk to sales

Enterprise API and SDK

A live conversation, written into the agents you name.

Resum opens a speech socket, then captures audio from a microphone, a file, or a live stream. Finalized turns append to a transcript while people are still talking. When the session ends, each named agent gets one file.

Pricing is available from sales. Resum is offered to enterprises only.

Information flow from live audio to a transcript and agent filesMicrophone, file, and RTMP merge after the socket opens into ffmpeg. The same audio is saved and sent in ten-second chunks to AssemblyAI. Finalized turns append to the transcript. Agent files are written after Terminate.microphonefilertmpffmpeg10s chunksAssemblyAItranscript.srtaudio.aacagent filessocket open16 kHz AACsession inputuniversal-3-5-profinalized turnsthe same bytes, savedgpt-4o-mininotes, summary, or a tagCtrl+E, duration, or stop-request.jsonflush, then Terminatecontrol.jsonrecordingstoppedsummary startedsummary endedcompleted
Capture starts after the speech socket opens. The same AAC bytes are saved and sent. Agent files are written once, after Terminate.

The session

What a session does

One path, from the moment the socket opens to the files left on disk. The API and the terminal runner share it.

  1. 01

    Socket, then capture

    Audio is not sent until the AssemblyAI websocket is open. The terminal waits on session.ready() before ffmpeg starts.

  2. 02

    One stream, two sinks

    ffmpeg emits mono 16 kHz AAC. The same bytes are written to audio.aac and handed to the session in ten-second chunks.

  3. 03

    Finalized turns only

    A turn is appended to transcript.srt when it ends. Cue times step one second per finalized turn. They are not media timestamps.

  4. 04

    One file per agent

    notes and summary have a fixed shape. Any other tag is plain text. Files are written once, after the session ends, with gpt-4o-mini.

  5. 05

    Stops that still finish

    Ctrl+E, a duration, or stop-request.json each flush the buffer, send Terminate, and then write the agent files. The default duration is 60 minutes.

  6. 06

    Keys stay in your environment

    STT_KEY opens the live session. OPENAI_API_KEY is required only when the session ends and agent files are written. Secret values are not logged.

Where audio enters

01

Microphone

avfoundation device :0, unless you pass another format and device.

02

File

A local recording, paced with ffmpeg -re so the session stays realtime.

03

RTMP

A live stream URL. The URL is used by ffmpeg and is not written to the log.

Left on disk

Files a session leaves behind

  • audio.aacThe capture, saved as it is sent.
  • transcript.srtFinalized turns, appended while the session is open.
  • notes.txtTitle, excerpts, a short body, next steps, and action items.
  • summary.txtTitle, date and time, audio source, speakers, highlights, and a full summary.
  • session.jsonAn index of file paths. It does not store the transcript text.
  • control.jsonrecording, stopped, summary started, summary ended, completed.

SDK

The session, in the calls that matter.

Open it, wait until the socket is ready, then pipe audio. Listen while people are still talking. End it when the conversation is over.

  • realtime must be true.
  • A live run needs STT_KEY.
  • Agent files need OPENAI_API_KEY when the session ends.
  • --cmd stop requires --session.
session.tsresum
import Resum, { AudioListener } from "resum";

const resum = new Resum({
  key: process.env.STT_KEY,
  platform: "assembly",
  openAiKey: process.env.OPENAI_API_KEY,
  audioChunkSeconds: 10,
});

const session = await resum.sessions.create({
  participants: [
    { name: "Alice", device: "web" },
    { name: "Bob", device: "mobile" },
  ],
  agents: ["notes", "summary"],
  realtime: true,
  audioSource: "microphone: avfoundation :0",
});

await session.ready();

const listener = new AudioListener({
  source: {
    kind: "microphone",
    inputFormat: "avfoundation",
    device: ":0",
  },
});

listener.connect().pipe(session.input());

Enterprise

Pricing is a conversation with sales.

Resum is not sold self-serve. There is no public price. An agreement with Viroke Technologies Inc sets the license and the price.

williams@viroke.com