Configure Redial Schedules
About 1 min
Configure Redial Schedules
Proxy providers usually need to rotate IPs on a fixed schedule to expose sufficient address capacity. You can create multiple time-to-live profiles—for example:
- 2 minutes: Short-living IPs for stateless crawling (the random pool typically redials every two minutes).
- 5 minutes: General-purpose crawling where occasional IP changes are acceptable.
- 10 minutes: Transactional flows (e.g., shopping bots) that need longer stability.
Different device groups can follow different schedules. Redial plans encode all these rules.
Open the Redial Plans page and click Create Redial Plan.

Rule DSL
Rules are defined using a Groovy-based DSL to keep things flexible.
//// WARNING: only the last cron/fixDelay setting is applied. Multiple lines
//// are shown here purely to demonstrate syntax.
// Schedule with a cron expression
cron "* 0/5 * * * ?"
// Or run every 300 seconds (5 minutes)
fixDelay 300
//// Multiple match blocks are also overwritten by the last one.
//// Configure a single match condition in production.
/**
* Example 1: endpoint IDs starting with "wuhan_"
*/
match {
clientId.startsWith("wuhan_")
}
/**
* Example 2: endpoints in the "TpLink" or "Mercury" groups
*/
match {
group == "TpLink" || group == "Mercury"
}
/**
* Example 3: endpoints whose exit IP is located in Florence, Italy
*/
match {
outIpCity.city?.name == "florence"
}Recurrence Options
fixDelay: run the task at a fixed interval (seconds).cron: trigger redial using a cron expression. Use with caution—the schedule becomes highly synchronized, leaving a short window where no nodes are available.
Match Conditions
match returns a boolean that decides whether a node joins the current plan.
match {
// All devices participate
true
}You can use conditionals, helper classes, and any expression. The DSL exposes the following variables:
public interface AgentDescription {
String getClientId(); // Endpoint ID
String getGroup(); // Endpoint group
String getOutIp(); // Exit IP
String getExtra(); // Custom attributes from the client config
CityResponse getOutIpCity(); // Geo information derived from the exit IP
}Priority
If an endpoint matches multiple plans, there is currently no priority control. The system picks one arbitrarily, so design rules to avoid overlap.
