POST to /services/data/vXX.0/jobs/ingest with a JSON body specifying object, operation (insert/update/upsert/delete), and contentType (CSV)
Upload a CSV payload via PUT to the uploadedFiles endpoint returned in the job creation response, with Content-Type text/csv
Close the upload by sending a PATCH to the job URL with state UploadComplete
Poll the job URL with GET until state reaches JobComplete or Failed
Retrieve success and failure result files via the GET successfulResults and failedResults URLs on the job
Known gotchas
CSV files must use UTF-8 encoding and include a header row matching Salesforce API field names exactly
A single bulk job has a record-count limit and a file-size limit — consult current Salesforce documentation for exact thresholds as they vary by edition
Bulk API 2.0 jobs are asynchronous; polling too aggressively can hit API usage limits — use exponential backoff
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp