Batch delete
Delete many vendors in one call. `selection` works two ways: `mode: "ids"` with an explicit list, or `mode: "filter"` with the same `q` the list endpoint takes plus `excludedIds` for the rows the user unticked. Filter mode is what "select all matching" sends, so nothing has to round-trip every id. Selections resolving to more than 10,000 vendors are refused with 413 and a body giving the count and the cap. The response reports how many rows were affected.
Authentication
sf_… API key in the bearerAuth field below.A SaaSFlow API key (format sf_…) or an OAuth bearer token. Paste only the key — the proxy adds the Bearer prefix. Create an API key in Settings → Company settings → API keys — see API keys.
In: header
Path Parameters
1 <= lengthRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
curl -X POST "https://example.com/companies/string/vendors/batch_delete" \ -H "Content-Type: application/json" \ -d '{ "selection": { "mode": "ids", "ids": [ "string" ] } }'{ "success": true, "affected": 0}Apply default categorization
Re-apply a vendor's default categorization to transactions already booked against it. `applyTo` decides how far it reaches: `empty` only fills in transactions with no categorization, `autoAssigned` also overwrites what SaaSFlow categorized itself, and `all` overwrites hand-edited categorizations too. Run the `/preview` endpoint first to see the counts. If the template books a transfer, the missing counter transactions are created and counted in the response. Fails with 400 when the vendor has no default categorization to apply.
Merge
Merge duplicate vendors into one. Creates the vendor described in the body, repoints the transactions and external ids of every id in `vendorIds` onto it, then deletes the originals. Use this when the same supplier came in under several spellings, since it keeps spend history in one place instead of scattering it. Returns the merged vendor.