
The User needs “Bulk API Hard Delete” Permission to make Salesforce BULK API V1 Hard Delete request.
1. Create a Permission Set with “Bulk API Hard Delete” Permission. Assign the Permission Set to the Integration User which will be used to perform the Hard Delete operation.

2. Create a Connected App in Salesforce.
Callback URL should be https://{Your Domain}.my.salesforce.com/services/oauth2/callback
Example:
https://test-ec-dev-ed.develop.my.salesforce.com/services/oauth2/callback

3. Get the Access token.
Endpoint URL:
https://test-ec-dev-ed.develop.my.salesforce.com/services/oauth2/token

4. Use the Access Token from Step 3 and make a POST Request to create a Job.
Endpoint URL:
https://test-ec-dev-ed.develop.my.salesforce.com/services/async/56.0/job/
Header:

Body:
<?xml version="1.0" encoding="UTF-8"?>
<jobInfo
xmlns="http://www.force.com/2009/06/asyncapi/dataload">
<operation>hardDelete</operation>
<object>Account</object>
<concurrencyMode>Parallel</concurrencyMode>
<contentType>JSON</contentType>
</jobInfo>

5. Note down the id from the create job request.

6. Create a batch request using the job id.
Endpoint URL:
https://test-ec-dev-ed.develop.my.salesforce.com/services/async/56.0/job/7503t00000fiMQcAAM/batch
Header:

Body:

Output:
