> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pam.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# PAM Agents

> Choose a PAM-managed agent for calls and SMS conversations.

PAM agents are managed voice and SMS agents that you can use from the API with a stable `agentSlug`.

Use an agent slug when PAM has provided one for a supported use case, such as recall outreach or retention follow-up. Your API key determines attribution, billing, and webhook routing.

## Agent Selection

Conversation create requests must include exactly one of:

* `agentSlug` — a stable slug for a PAM-managed agent.
* `agentId` — a specific agent UUID.

Prefer `agentSlug` when you use a PAM-managed agent in an external integration.

```json theme={null}
{
  "agentSlug": "sms-recall",
  "toNumber": "+15555550199",
  "fromNumber": "+15555550123"
}
```

## Available Agents

| Managed agent           | Channel | Required `dynamicVariables`                                                                                                             | Optional `dynamicVariables`                                                                                                                                                                                        |
| ----------------------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `voice-recall`          | Voice   | `contact_first_name`, `dealership_name`, `service_ids`, `recall_id`, `vin`, `vehicle_year`, `vehicle_make`, and `vehicle_model`         | `contact_last_name`, `contact_email`, `vehicle_mileage`, `service_names`, `transport_type`, `recall_date`, `recall_summary`, `recall_safety_risk`, `recall_remedy`, `recall_part`                                  |
| `sms-recall`            | SMS     | `contact_first_name`, `dealership_name`, `service_ids`, `recall_id`, `vin`, `vehicle_year`, `vehicle_make`, and `vehicle_model`         | `contact_last_name`, `contact_email`, `vehicle_mileage`, `service_names`, `transport_type`, `recall_date`, `recall_summary`, `recall_safety_risk`, `recall_remedy`, `recall_part`                                  |
| `voice-retention`       | Voice   | `contact_first_name`, `dealership_name`, `service_ids`, `offer_description`, `vin`, `vehicle_year`, `vehicle_make`, and `vehicle_model` | `contact_last_name`, `contact_email`, `vehicle_mileage`, `service_names`, `transport_type`, `offer_expiration`                                                                                                     |
| `sms-retention`         | SMS     | `contact_first_name`, `dealership_name`, `service_ids`, `offer_description`, `vin`, `vehicle_year`, `vehicle_make`, and `vehicle_model` | `contact_last_name`, `contact_email`, `vehicle_mileage`, `service_names`, `transport_type`, `offer_expiration`                                                                                                     |
| `sms-declined-services` | SMS     | `contact_first_name`, `dealership_name`, `service_ids`, `declined_services`, `vin`, `vehicle_year`, `vehicle_make`, and `vehicle_model` | `contact_last_name`, `contact_email`, `vehicle_mileage`, `service_names`, `transport_type`, `service_context`, `customer_briefing`, `primary_category`, `vehicle_summary`, `offer_description`, `offer_expiration` |

## Dynamic variables

Use `dynamicVariables` to pass the customer, dealership, vehicle, recall, offer, and scheduling details the selected agent needs. Use the canonical `snake_case` field names below.

Each PAM-managed agent has its own required variables. Values must be strings.

PAM uses these public fields to construct internal prompt context and tool variables, such as customer, dealership, scheduling, recall, offer, declined-services, and vehicle-logistics context blocks. Those generated context blocks are internal. They are not accepted as public API fields and are not returned by conversation GET or list endpoints.

## Recall agents

Use `voice-recall` for recall calls and `sms-recall` for recall SMS conversations.

Required dynamic variables for recall agents:

| Variable             | Description                                                                                                                             |
| -------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| `contact_first_name` | Contact first name the agent can use in the conversation.                                                                               |
| `dealership_name`    | Dealership or business name the agent represents.                                                                                       |
| `recall_id`          | Safety recall identifier. Send either an NHTSA campaign ID or a manufacturer recall ID.                                                 |
| `service_ids`        | Service or opcode identifier used for availability and booking tool calls. Use a comma-separated string when sending multiple services. |
| `vin`                | Vehicle VIN.                                                                                                                            |
| `vehicle_year`       | Vehicle year.                                                                                                                           |
| `vehicle_make`       | Vehicle make.                                                                                                                           |
| `vehicle_model`      | Vehicle model.                                                                                                                          |

Optional recall context:

| Variable             | Description                                                                                                                                              |
| -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `contact_last_name`  | Contact last name, if available.                                                                                                                         |
| `recall_date`        | Recall date, if available.                                                                                                                               |
| `recall_summary`     | Short recall summary if your integration sends individual recall detail fields.                                                                          |
| `recall_safety_risk` | Safety risk or consequence summary.                                                                                                                      |
| `recall_remedy`      | Remedy or corrective action.                                                                                                                             |
| `recall_part`        | Affected part or component.                                                                                                                              |
| `contact_email`      | Customer email used when booking, if available.                                                                                                          |
| `vehicle_mileage`    | Current vehicle mileage, if available.                                                                                                                   |
| `service_names`      | Human-readable service names.                                                                                                                            |
| `transport_type`     | Expected service logistics. Supported values include `WAITER`, `DROPOFF`, `SHUTTLE`, `LOANER`, `VALET`, `MOBILE_SERVICE`, `UBER`, and `PICKUP_DELIVERY`. |

```json theme={null}
{
  "agentSlug": "sms-recall",
  "toNumber": "+15555550199",
  "fromNumber": "+15555550123",
  "welcomeMessage": "Hi Ada, this is PAM Motors following up on your service recall.",
  "dynamicVariables": {
    "contact_first_name": "Ada",
    "contact_last_name": "Lovelace",
    "dealership_name": "PAM Motors",
    "recall_id": "24V-123",
    "service_ids": "RECALL_SERVICE",
    "vin": "1HGBH41JXMN109186",
    "vehicle_year": "2021",
    "vehicle_make": "Honda",
    "vehicle_model": "Accord"
  }
}
```

`recall_id` must identify a safety recall registered with NHTSA. Send either the NHTSA campaign ID or a manufacturer recall ID.

## Retention agents

Use `voice-retention` for retention calls and `sms-retention` for retention SMS conversations.

Required dynamic variables for retention agents:

| Variable             | Description                                                                                                                             |
| -------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| `contact_first_name` | Contact first name the agent can use in the conversation.                                                                               |
| `dealership_name`    | Dealership or business name the agent represents.                                                                                       |
| `offer_description`  | The retention offer or service reason the agent should discuss.                                                                         |
| `service_ids`        | Service or opcode identifier used for availability and booking tool calls. Use a comma-separated string when sending multiple services. |
| `vin`                | Vehicle VIN.                                                                                                                            |
| `vehicle_year`       | Vehicle year.                                                                                                                           |
| `vehicle_make`       | Vehicle make.                                                                                                                           |
| `vehicle_model`      | Vehicle model.                                                                                                                          |

Optional retention context:

| Variable            | Description                                                                                                                                              |
| ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `contact_last_name` | Contact last name, if available.                                                                                                                         |
| `offer_expiration`  | Expiration date for the retention offer.                                                                                                                 |
| `service_names`     | Human-readable service name.                                                                                                                             |
| `contact_email`     | Customer email used when booking, if available.                                                                                                          |
| `vehicle_mileage`   | Current vehicle mileage, if available.                                                                                                                   |
| `transport_type`    | Expected service logistics. Supported values include `WAITER`, `DROPOFF`, `SHUTTLE`, `LOANER`, `VALET`, `MOBILE_SERVICE`, `UBER`, and `PICKUP_DELIVERY`. |

```json theme={null}
{
  "agentSlug": "sms-retention",
  "toNumber": "+15555550199",
  "fromNumber": "+15555550123",
  "welcomeMessage": "Hi Ada, this is PAM Motors checking in about your recommended service.",
  "dynamicVariables": {
    "contact_first_name": "Ada",
    "contact_last_name": "Lovelace",
    "dealership_name": "PAM Motors",
    "offer_description": "$50 off your next scheduled maintenance visit",
    "service_ids": "MAINTENANCE_SERVICE",
    "vin": "1HGBH41JXMN109186",
    "vehicle_year": "2021",
    "vehicle_make": "Honda",
    "vehicle_model": "Accord",
    "service_names": "Scheduled maintenance"
  }
}
```

## Declined-services agents

Use `sms-declined-services` for SMS follow-up on services a customer previously declined.

Required dynamic variables for declined-services agents:

| Variable             | Description                                                                                                                             |
| -------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| `contact_first_name` | Contact first name the agent can use in the conversation.                                                                               |
| `dealership_name`    | Dealership or business name the agent represents.                                                                                       |
| `declined_services`  | Description of the service or services the customer previously declined. Use newline-separated text for multiple services.              |
| `service_ids`        | Service or opcode identifier used for availability and booking tool calls. Use a comma-separated string when sending multiple services. |
| `vin`                | Vehicle VIN.                                                                                                                            |
| `vehicle_year`       | Vehicle year.                                                                                                                           |
| `vehicle_make`       | Vehicle make.                                                                                                                           |
| `vehicle_model`      | Vehicle model.                                                                                                                          |

Optional declined-services context:

| Variable            | Description                                                                                                                                              |
| ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `contact_last_name` | Contact last name, if available.                                                                                                                         |
| `service_context`   | Brief context from the prior visit or recommendation.                                                                                                    |
| `customer_briefing` | Notes the agent should consider when discussing the recommendation.                                                                                      |
| `primary_category`  | Main service category, such as maintenance or safety.                                                                                                    |
| `vehicle_summary`   | Human-readable vehicle summary when you do not want the agent to infer it from year, make, and model.                                                    |
| `offer_description` | Optional offer tied to the declined-services follow-up.                                                                                                  |
| `offer_expiration`  | Expiration date for the declined-services offer.                                                                                                         |
| `service_names`     | Human-readable service names.                                                                                                                            |
| `contact_email`     | Customer email used when booking, if available.                                                                                                          |
| `vehicle_mileage`   | Current vehicle mileage, if available.                                                                                                                   |
| `transport_type`    | Expected service logistics. Supported values include `WAITER`, `DROPOFF`, `SHUTTLE`, `LOANER`, `VALET`, `MOBILE_SERVICE`, `UBER`, and `PICKUP_DELIVERY`. |

```json theme={null}
{
  "agentSlug": "sms-declined-services",
  "toNumber": "+15555550199",
  "fromNumber": "+15555550123",
  "welcomeMessage": "Hi Ada, this is PAM Motors following up on your recommended services.",
  "dynamicVariables": {
    "contact_first_name": "Ada",
    "contact_last_name": "Lovelace",
    "dealership_name": "PAM Motors",
    "declined_services": "Brake fluid exchange recommended at your last visit.",
    "service_ids": "BRAKE_FLUID",
    "vin": "1HGBH41JXMN109186",
    "vehicle_year": "2021",
    "vehicle_make": "Honda",
    "vehicle_model": "Accord"
  }
}
```

## Scheduling and booking fields

Managed agents can discuss the outreach reason with the required variables above. If the agent should search availability or book an appointment, include the scheduling fields as well.

| Field             | Required for                    | Description                                                                                                                     |
| ----------------- | ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| `service_ids`     | Availability search and booking | Service or opcode identifier used by scheduling tools.                                                                          |
| `toNumber`        | Booking                         | Customer phone number from the create request.                                                                                  |
| `contact_email`   | Booking, when available         | Customer email used when creating the appointment.                                                                              |
| `service_names`   | Conversation context            | Human-readable service name.                                                                                                    |
| `vehicle_mileage` | Booking, when available         | Current vehicle mileage.                                                                                                        |
| `transport_type`  | Conversation context            | Expected service logistics, such as waiter, dropoff, shuttle, loaner, valet, mobile service, rideshare, or pickup and delivery. |

## Phone Numbers

Provide `fromNumber` on every call or SMS conversation that uses a PAM-managed agent.

```json theme={null}
{
  "agentSlug": "sms-recall",
  "toNumber": "+15555550199",
  "fromNumber": "+15555550123"
}
```

For custom agents with a configured phone number, PAM uses the number configured on the agent. If you send `fromNumber` with that type of agent, it is ignored.

## Opening SMS Copy

PAM-managed SMS agents also require `welcomeMessage`. This is the exact first SMS body sent to the customer.

```json theme={null}
{
  "agentSlug": "sms-recall",
  "toNumber": "+15555550199",
  "fromNumber": "+15555550123",
  "welcomeMessage": "Hi Ada, this is PAM Motors following up on your service recall."
}
```

Generate or select the opening message in your application, then pass the resolved copy when creating the SMS conversation.

## Webhook Routing

Webhook delivery is scoped to the organization associated with your API key.

When a conversation event fires, PAM routes it using the conversation's organization, the pinned agent version, and the event type.
