Skip to main content

API Reference

Complete reference for all types, interfaces, and exports in the patter package.

Patter Class

Constructor

new Patter(options: LocalOptions)

Instance Methods

MethodSignatureDescription
agent(opts: AgentOptions) => AgentOptionsValidates and returns an agent configuration.
serve(opts: ServeOptions) => Promise<void>Starts the embedded server (local mode only).
call(opts: LocalCallOptions) => Promise<void>Makes an outbound call.
test(agent: AgentOptions, opts?: TestOptions) => Promise<void>Starts an interactive terminal test session (local mode only). See Test Mode.

Static Methods

MethodSignatureDescription
Patter.deepgram(opts: { apiKey: string; language?: string }) => STTConfigCreates a Deepgram STT config.
Patter.whisper(opts: { apiKey: string; language?: string }) => STTConfigCreates a Whisper STT config.
Patter.elevenlabs(opts: { apiKey: string; voice?: string }) => TTSConfigCreates an ElevenLabs TTS config.
Patter.openaiTts(opts: { apiKey: string; voice?: string }) => TTSConfigCreates an OpenAI TTS config.
Patter.guardrail(opts: { name: string; blockedTerms?: string[]; check?: (text: string) => boolean; replacement?: string }) => GuardrailCreates a guardrail config.
Patter.tool(opts: { name: string; description?: string; parameters?: object; handler?: Function; webhookUrl?: string }) => ToolDefinitionCreates a tool definition. Requires either handler or webhookUrl.

Interfaces

LocalOptions

interface LocalOptions {
  mode: "local";
  twilioSid?: string;
  twilioToken?: string;
  openaiKey?: string;
  phoneNumber: string;
  webhookUrl: string;
  telephonyProvider?: "twilio" | "telnyx";
  telnyxKey?: string;
  telnyxConnectionId?: string;
  telnyxPublicKey?: string;
  pricing?: Record<string, Partial<ProviderPricing>>;
}

AgentOptions

interface AgentOptions {
  systemPrompt: string;
  voice?: string;
  model?: string;
  language?: string;
  firstMessage?: string;
  tools?: ToolDefinition[];
  provider?: "openai_realtime" | "elevenlabs_convai" | "pipeline";
  elevenlabsKey?: string;
  elevenlabsAgentId?: string;
  deepgramKey?: string;
  stt?: STTConfig;
  tts?: TTSConfig;
  variables?: Record<string, string>;
  guardrails?: Guardrail[];
}

ServeOptions

interface ServeOptions {
  agent: AgentOptions;
  port?: number;
  onCallStart?: (data: Record<string, unknown>) => Promise<void>;
  onCallEnd?: (data: Record<string, unknown>) => Promise<void>;
  onTranscript?: (data: Record<string, unknown>) => Promise<void>;
  onMessage?: PipelineMessageHandler | string;
  onMetrics?: (data: Record<string, unknown>) => Promise<void>;
  recording?: boolean;
  voicemailMessage?: string;
  dashboard?: boolean;
  dashboardToken?: string;
}

LocalCallOptions

interface LocalCallOptions {
  to: string;
  agent: AgentOptions;
  machineDetection?: boolean;
  voicemailMessage?: string;
  variables?: Record<string, string>;
}

ToolDefinition

interface ToolDefinition {
  name: string;
  description: string;
  parameters: Record<string, unknown>;
  webhookUrl: string;
}

Guardrail

interface Guardrail {
  name: string;
  blockedTerms?: string[];
  check?: (text: string) => boolean;
  replacement?: string;
}

STTConfig

interface STTConfig {
  readonly provider: string;
  readonly apiKey: string;
  readonly language: string;
  toDict(): Record<string, string>;
}

TTSConfig

interface TTSConfig {
  readonly provider: string;
  readonly apiKey: string;
  readonly voice: string;
  toDict(): Record<string, string>;
}

IncomingMessage

interface IncomingMessage {
  readonly text: string;
  readonly callId: string;
  readonly caller: string;
}

CallControl

interface CallControl {
  readonly callId: string;
  readonly caller: string;
  readonly callee: string;
  readonly telephonyProvider: string;
  transfer(number: string): Promise<void>;
  hangup(): Promise<void>;
  readonly isTransferred: boolean;
  readonly isHungUp: boolean;
  readonly ended: boolean;
}
Passed as the second argument to onMessage handlers. Allows dynamic call management during a conversation.

CallMetrics

interface CallMetrics {
  callId: string;
  durationSeconds: number;
  turns: TurnMetrics[];
  cost: CostBreakdown;
  latencyAvg: LatencyBreakdown;
  latencyP95: LatencyBreakdown;
  providerMode: string;
  sttProvider: string;
  ttsProvider: string;
  telephonyProvider: string;
}

CostBreakdown

interface CostBreakdown {
  stt: number;
  tts: number;
  llm: number;
  telephony: number;
  total: number;
}

LatencyBreakdown

interface LatencyBreakdown {
  sttMs: number;
  llmMs: number;
  ttsMs: number;
  totalMs: number;
}

TurnMetrics

interface TurnMetrics {
  turnIndex: number;
  userText: string;
  agentText: string;
  latency: LatencyBreakdown;
  sttAudioSeconds: number;
  ttsCharacters: number;
  timestamp: number;
}

ProviderPricing

interface ProviderPricing {
  unit: string;
  price?: number;
  audio_input_per_token?: number;
  audio_output_per_token?: number;
  text_input_per_token?: number;
  text_output_per_token?: number;
}

Type Aliases

type CallEventHandler = (data: Record<string, unknown>) => Promise<void>;
type PipelineMessageHandler = (data: Record<string, unknown>) => Promise<string>;

Error Classes

All errors extend PatterError, which extends the native Error class.
ClassDescription
PatterErrorBase error class for all SDK errors.
PatterConnectionErrorWebSocket connection failures or disconnection errors.
import {
  PatterError,
  PatterConnectionError,
} from "getpatter";

try {
  await phone.call({ to: "+15559876543", agent });
} catch (error) {
  if (error instanceof PatterConnectionError) {
    console.error("Connection issue:", error.message);
  }
}

Exports

Classes

export { Patter } from "getpatter";
export { ElevenLabsConvAIAdapter } from "getpatter";
export { OpenAIRealtimeAdapter } from "getpatter";
export { DeepgramSTT } from "getpatter";
export { WhisperSTT } from "getpatter";
export { ElevenLabsTTS } from "getpatter";
export { OpenAITTS } from "getpatter";

Error Classes

export {
  PatterError,
  PatterConnectionError,
} from "getpatter";

Factory Functions

export { deepgram, whisper, elevenlabs, openaiTts } from "getpatter";

Transcoding Utilities

export {
  mulawToPcm16,
  pcm16ToMulaw,
  resample8kTo16k,
  resample16kTo8k,
  resample24kTo16k,
} from "getpatter";

All Type Exports

export type {
  IncomingMessage,
  STTConfig,
  TTSConfig,
  LocalOptions,
  AgentOptions,
  ServeOptions,
  LocalCallOptions,
  CallEventHandler,
  PipelineMessageHandler,
  ToolDefinition,
  Guardrail,
  LocalConfig,
  CallControl,
  CallMetrics,
  CostBreakdown,
  LatencyBreakdown,
  TurnMetrics,
  ProviderPricing,
} from "getpatter";