with API data, is there any way of determining if a duplication is manual single instance or an automated reoccurrence?
The API task object itself has no knowledge of any recurrence settings. The only thing I can think of you could do is to query a task’s stories and look for the
[username] duplicated task from... story.
This has two potential issues keeping it from being 100% reliable:
The “Duplicate task” menu function creates the same story.
Stories are not 100% accurate because (a) they can be deleted by users and (b) they can be removed by Asana as part of the story-consolidation process (the same operation by the same user within 24 hours without any intervening other operations will cause only the last of those same operations to be kept).
Having said that, perhaps none of these limitations will be an issue for you and you can use stories.