Does it need to happen synchronously, before the HTTP response ends? If not, you could use Workflows and do batches of 100 and then a sleep. Alternatively, you could use Queues and publish a message per item and have some rate limiting, but Workflows will be better imo. Only drawback will be you’d need to create sub Workflows at a certain point with the current step limit (e.g. you’d have an effective cap of 51,200 inserts per Workflow)