I was able to make the calls I needed by tracking the calls from the front end.
After making the reload call to force individual aggregation, immediately make the call to the following endpoint, passing as a parameter the id returned in the previous call:
https://{tenant}.api.identitynow.com/hecate/message/client/qpoc/job/{jobid}
{
"id": "39d010a0-5bb2-47fe-b4a5-6a231a83c99b",
"rootId": null,
"created": 1749159213956,
"description": "Reload Identity: vsilva",
"location": "cluster",
"rootPayloadType": null,
"payload": {
"type": "RELOAD_IDENTITY",
"dataJson": "{\"linksToAggregate\":[\"9b7ed336cffa4fe3a973efeab41dc711\"],\"identityName\":\"vsilva\",\"identityId\":\"21d6d66bbda34ce3b30cbec3d6b18898\",\"aggregationArgs\":{\"mantisExecutor\":\"com.sailpoint.mantis.sources.task.AccountAggregationTask\",\"eventClassesCsv\":\"sailpoint.thunderbolt.events.AggregationEvents\",\"serviceClass\":\"sailpoint.thunderbolt.service.AggregationService\",\"serviceMethod\":\"accountAggregationTask\"},\"refreshArgs\":{\"disableManagerLookup\":\"true\",\"refreshThreads\":\"1\",\"enablePartitioning\":\"false\",\"processTriggers\":\"true\",\"promoteAttributes\":\"true\",\"correlateEntitlements\":\"true\",\"refreshManagerStatus\":\"true\",\"synchronizeAttributes\":\"false\",\"noRoleDeprovisioning\":\"true\",\"checkPolicies\":\"true\"}}"
},
"referenceCount": 0,
"maxReferenceCount": 0,
"status": "IN_PROGRESS",
"resultJson": null,
"nextJson": null,
"chainStart": 1749159213959,
"start": 1749159213959,
"preemptedByJobId": null,
"cancelled": null
}
The point here is to monitor the status attribute. While the aggregation is running, it will have the IN_PROGRESS status. After the aggregation is complete, it will return with SUCCESS status.
It is very important that sailpoint makes these APIs available to us.
The idn:job:read scope is required to use these endpoints, but these scopes do not even exist to be selected in the API token configuration, so I had to give the sp:scope:all scope to work.