Polling is fine for one job. It stops being fine around the time you are submitting hundreds and writing loops to ask whether each of them is done yet.
Attach a callback and Efflux makes the request instead. When the job starts, finishes, or fails, your endpoint hears about it, with the job id included, and your code goes and fetches the result.
Automate the whole round trip
This is what turns Efflux from something you check into something that feeds your pipeline. Submit the work, let the callback land in your queue, pull the results, and move on. No timers, no backoff, no guessing how long a survey takes.
Callbacks work the same way on scans, captures, surveys, permutation checks, schedules, and tasks, so one handler can cover all of it.
Save the endpoint once
Register the destination as a webhook and you reference it by id from then on. Efflux signs every delivery with the secret from that webhook, so your handler can reject anything that did not come from you before it does any work.
Then set it as a default in your preferences. New jobs that leave a phase empty pick it up, which means you are not repeating the same URL on every request you send.
See what happened when it goes wrong
Your endpoint will be down at some point. Every delivery is recorded with its attempts and response codes, and you can retry a failed one, so a bad afternoon does not quietly cost you a batch of results.
Where to go next
Callbacks covers the phases and the delivery history. Webhooks covers the signature and the secret.