Synchronous and asynchronous are types of machine detection that are used on a call depending on the use case.
Synchronous machine detection
The “machine _detection” and “machine_detection_url” parameters come hand-in-hand with the answer machine detection. When the machine detection is defined either as true or hang up and if the machine_detection_url is not defined in the outbound call API, then the method of detection that will be executed is synchronous.
Note: This method is used when the initiator of the call is more than 50% sure that a machine is answering the call.
Asynchronous machine detection
Thee method of detection that will be executed is asynchronous when the machine detection is defined either as true and if the machine_detection_url is defined with a different call flow (e.g., to trigger a transfer a call API) in the outbound call API.
Note: This method is used when the initiator of the call is not sure if a machine or a human is answering the call.
For further reading
Please refer to these guides for more detail.
https://www.plivo.com/docs/api/call/#asynchronous-machine-detection
https://www.plivo.com/docs/getting-started/machine-detection/