Skip to main content
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.
{
  "agentSlug": "sms-recall",
  "toNumber": "+15555550199",
  "fromNumber": "+15555550123"
}

Available Agents

Managed agentChannelRequired dynamicVariablesOptional dynamicVariables
voice-recallVoicecontact_first_name, dealership_name, service_ids, recall_id, vin, vehicle_year, vehicle_make, and vehicle_modelcontact_last_name, contact_email, vehicle_mileage, service_names, transport_type, recall_date, recall_summary, recall_safety_risk, recall_remedy, recall_part
sms-recallSMScontact_first_name, dealership_name, service_ids, recall_id, vin, vehicle_year, vehicle_make, and vehicle_modelcontact_last_name, contact_email, vehicle_mileage, service_names, transport_type, recall_date, recall_summary, recall_safety_risk, recall_remedy, recall_part
voice-retentionVoicecontact_first_name, dealership_name, service_ids, offer_description, vin, vehicle_year, vehicle_make, and vehicle_modelcontact_last_name, contact_email, vehicle_mileage, service_names, transport_type, offer_expiration
sms-retentionSMScontact_first_name, dealership_name, service_ids, offer_description, vin, vehicle_year, vehicle_make, and vehicle_modelcontact_last_name, contact_email, vehicle_mileage, service_names, transport_type, offer_expiration
sms-declined-servicesSMScontact_first_name, dealership_name, service_ids, declined_services, vin, vehicle_year, vehicle_make, and vehicle_modelcontact_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:
VariableDescription
contact_first_nameContact first name the agent can use in the conversation.
dealership_nameDealership or business name the agent represents.
recall_idSafety recall identifier. Send either an NHTSA campaign ID or a manufacturer recall ID.
service_idsService or opcode identifier used for availability and booking tool calls. Use a comma-separated string when sending multiple services.
vinVehicle VIN.
vehicle_yearVehicle year.
vehicle_makeVehicle make.
vehicle_modelVehicle model.
Optional recall context:
VariableDescription
contact_last_nameContact last name, if available.
recall_dateRecall date, if available.
recall_summaryShort recall summary if your integration sends individual recall detail fields.
recall_safety_riskSafety risk or consequence summary.
recall_remedyRemedy or corrective action.
recall_partAffected part or component.
contact_emailCustomer email used when booking, if available.
vehicle_mileageCurrent vehicle mileage, if available.
service_namesHuman-readable service names.
transport_typeExpected service logistics. Supported values include WAITER, DROPOFF, SHUTTLE, LOANER, VALET, MOBILE_SERVICE, UBER, and PICKUP_DELIVERY.
{
  "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:
VariableDescription
contact_first_nameContact first name the agent can use in the conversation.
dealership_nameDealership or business name the agent represents.
offer_descriptionThe retention offer or service reason the agent should discuss.
service_idsService or opcode identifier used for availability and booking tool calls. Use a comma-separated string when sending multiple services.
vinVehicle VIN.
vehicle_yearVehicle year.
vehicle_makeVehicle make.
vehicle_modelVehicle model.
Optional retention context:
VariableDescription
contact_last_nameContact last name, if available.
offer_expirationExpiration date for the retention offer.
service_namesHuman-readable service name.
contact_emailCustomer email used when booking, if available.
vehicle_mileageCurrent vehicle mileage, if available.
transport_typeExpected service logistics. Supported values include WAITER, DROPOFF, SHUTTLE, LOANER, VALET, MOBILE_SERVICE, UBER, and PICKUP_DELIVERY.
{
  "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:
VariableDescription
contact_first_nameContact first name the agent can use in the conversation.
dealership_nameDealership or business name the agent represents.
declined_servicesDescription of the service or services the customer previously declined. Use newline-separated text for multiple services.
service_idsService or opcode identifier used for availability and booking tool calls. Use a comma-separated string when sending multiple services.
vinVehicle VIN.
vehicle_yearVehicle year.
vehicle_makeVehicle make.
vehicle_modelVehicle model.
Optional declined-services context:
VariableDescription
contact_last_nameContact last name, if available.
service_contextBrief context from the prior visit or recommendation.
customer_briefingNotes the agent should consider when discussing the recommendation.
primary_categoryMain service category, such as maintenance or safety.
vehicle_summaryHuman-readable vehicle summary when you do not want the agent to infer it from year, make, and model.
offer_descriptionOptional offer tied to the declined-services follow-up.
offer_expirationExpiration date for the declined-services offer.
service_namesHuman-readable service names.
contact_emailCustomer email used when booking, if available.
vehicle_mileageCurrent vehicle mileage, if available.
transport_typeExpected service logistics. Supported values include WAITER, DROPOFF, SHUTTLE, LOANER, VALET, MOBILE_SERVICE, UBER, and PICKUP_DELIVERY.
{
  "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.
FieldRequired forDescription
service_idsAvailability search and bookingService or opcode identifier used by scheduling tools.
toNumberBookingCustomer phone number from the create request.
contact_emailBooking, when availableCustomer email used when creating the appointment.
service_namesConversation contextHuman-readable service name.
vehicle_mileageBooking, when availableCurrent vehicle mileage.
transport_typeConversation contextExpected 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.
{
  "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.
{
  "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.