Personalization
Reuse one agent for every caller. Fill in details like a name or account status the moment each call starts, so every conversation sounds personal.
Dynamic variables
Dynamic variables are fill-in-the-blank slots in your agent's prompt and opening line. You write a placeholder like {{customer_name}} in the system_prompt or first_message, and Aethex swaps in a real value the moment a call starts.That means one agent can greet every caller by name. Set default values on the agent, then override them per call by passing dynamic_variables — on POST /calls/trigger for a phone call, or on POST /conversation/connect for a browser session. Either way the values apply to that one call and nothing is written back to the agent.The two paths differ on what happens when a placeholder has neither a default nor a supplied value. A phone call is rejected right away with a clear error, so a contact never hears a half-filled greeting. A browser session leaves the placeholder as written instead: a keyless session — a public agent reached without an API key, or a call token — cannot supply values at all, so rejecting would leave it no way through. Keyless sessions likewise ignore any values they send and use the agent's defaults.
system__ placeholders like system__caller_id for you at call time, so you never set those yourself — on a browser session there is no phone leg, so system__caller_id and system__called_number come through empty. Use the secret__ prefix for values that belong only in a tool's request headers, such as an API token: they are passed to your tools but never shown to the model or saved in logs.# 1. Configure placeholders and their default values on the agent.
curl -X PATCH https://api.aethexai.com/api/v1/agents/$AGENT_ID \
-H "X-API-Key: $AETHEX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"system_prompt": "You are a support agent for {{company_name}}. The customer name is {{customer_name}}.",
"dynamic_variables": {
"company_name": "Acme Corp",
"customer_name": "Alice"
}
}'
# 2. Override the defaults per call (and fill any placeholder that has no default).
curl -X POST https://api.aethexai.com/api/v1/calls/trigger \
-H "X-API-Key: $AETHEX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"agent_id": "'$AGENT_ID'",
"to_number": "+14155551234",
"from_number": "+18885551234",
"dynamic_variables": {
"company_name": "Globex Bank",
"customer_name": "Jordan"
}
}'Pull details from your CRM
This is how you make a call feel like you already know the caller. Before the call, look the person up in your CRM and pass what you find as dynamic_variables: their name, their plan, their last order, whatever matters. The agent then opens with those details instead of a generic hello.Need information that changes during the conversation, like today's balance or an order status? Give the agent a tool that queries your CRM live, and it can fetch the answer mid-call. See Tools.
Metadata
The metadata field is a place to keep your own notes on an agent, as a simple set of key and value pairs. The model never sees it and it does not change how calls run. Use it to label agents however you like, for example by team, product line, or prompt version, so you can filter them in your own dashboards.It comes back exactly as you saved it on every agent read.
Next
Now that your agent is configured, wire it to a phone number or trigger calls programmatically. See Phone numbers or the API reference.
