Obtain an OAuth 2.0 access token using the Connected App client credentials or JWT bearer flow against your Salesforce instance's token endpoint.
Set the Authorization header to 'Bearer YOUR_TOKEN' and target your Salesforce instance URL (e.g., https://YOUR_ORG.my.salesforce.com).
Create a new Case record with POST /services/data/vXX.0/sobjects/Case, supplying required fields: 'Subject', 'Status', and 'Origin', plus optional fields like 'AccountId', 'ContactId', 'Priority', and 'Description'.
Note the 'id' in the response — this is the 18-character Salesforce record ID for the new Case.
Associate an existing Contact by setting 'ContactId' to the contact's record ID; the case appears on the contact's related list immediately.
Update an existing case with PATCH /services/data/vXX.0/sobjects/Case/{caseId} using a partial JSON body — PATCH supports partial updates, unlike PUT.
Known gotchas
The API version segment (vXX.0) must match a version supported by your org — use GET /services/data/ to retrieve the list of supported versions; using a deprecated version may cause field compatibility issues.
Case assignment rules in Salesforce are not triggered by default on API-created cases — include the 'AssignmentRuleHeader' SOAP header equivalent (via a custom header or the Apex trigger route) if you need assignment rules to fire.
Field-level security and record-type restrictions apply to API calls just as they do to UI interactions — ensure the Connected App's running user profile has access to the fields you intend to set.
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