You can use either synchronous or asynchronous machine detection on a call.
Synchronous machine detection
Synchronous machine detection is effective when you're more than 50% sure that a machine is answering the call. When the Call object's machine_detection attribute is set to either "true" or "hangup" and the machine_detection_url is not defined, Plivo uses synchronous machine detection.
Asynchronous machine detection
Asynchronous machine detection is effective when you're not sure if a machine or a human is answering the call. When the Call object's machine_detection attribute is set to "true" and the machine_detection_url is defined with a different call flow (for instance, to trigger a call transfer), Plivo uses asynchronous machine detection.