***

title: addPreAnswerVerb
slug: /reference/typescript/agents/agent-base/add-pre-answer-verb
description: Add a SWML verb to run before the call is answered.
max-toc-depth: 3
---------------------

For a complete index of all SignalWire documentation pages, fetch https://signalwire.com/docs/llms.txt

[swml-reference]: /docs/swml/reference

[ref-agentbase]: /docs/server-sdks/reference/typescript/agents/agent-base

Add a verb to run before the call is answered (phase 1). Pre-answer verbs execute
while the call is still ringing.

<Warning>
  Only certain verbs are safe before answering. The platform may ignore or
  reject verbs that require an active media session. Verbs with `auto_answer`
  capability (like `play` and `connect`) must include `"auto_answer": false` in
  their config to prevent automatic answering.
</Warning>

Safe pre-answer verbs: `transfer`, `execute`, `return`, `label`, `goto`, `request`,
`switch`, `cond`, `if`, `eval`, `set`, `unset`, `hangup`, `send_sms`, `sleep`,
`stop_record_call`, `stop_denoise`, `stop_tap`.

## **Parameters**

<ParamField path="verbName" type="string" required={true} toc={true}>
  SWML verb name (e.g., `"play"`, `"sleep"`, `"request"`).
</ParamField>

<ParamField path="config" type={"Record<string, unknown>"} required={true} toc={true}>
  Verb configuration object. See the
  [SWML reference][swml-reference] for verb-specific parameters.
</ParamField>

## **Returns**

[`AgentBase`][ref-agentbase] -- Returns `this` for method chaining.

## **Example**

```typescript {5}
import { AgentBase } from '@signalwire/sdk';

const agent = new AgentBase({ name: 'support', route: '/support' });
agent.setPromptText('You are a helpful assistant.');
agent.addPreAnswerVerb('play', {
  urls: ['ring:us'],
  auto_answer: false,
});
await agent.serve();
```