Right, so we’re trying to automate a massive refresh of Knowledge Base articles across several orgs using a Python wrapper around the SDK. Simple enough, right? Wrong. Because apparently, the API has decided that a 202 Accepted doesn’t actually mean the work is being done. Ffs.
The script hits POST /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/documents/bulk/update with a batch of 50 documents. The response is a clean 202, which usually means “we’ve got it from here”. But then the documents just… don’t update. No changes to the content, no version bumps. Nothing.
Why is this happening? Because the asynchronous nature of these bulk endpoints is a complete black box. I’ve spent the last hour polling GET /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/operations to see what’s actually going on behind the curtain. The operation shows up as “Succeeded”, but the documents themselves are untouched. It’s like the API is just pretending to work to keep the response times low. Argh.
The logic is sound. I’ve got a custom retry handler that manages 429s with exponential backoff, and the payloads are validated before they ever leave the local environment. Yet, the logs are showing this:
{
"id": "88f2-4a1b-9c3d-1234567890ab",
"status": "Succeeded",
"type": "BulkUpdate",
"knowledgeBaseId": "kb-999-xyz",
"startTime": "2023-10-27T10:00:00Z",
"endTime": "2023-10-27T10:00:05Z",
"errors": []
}
The errors array is empty. It’s literally telling me everything went perfectly while the actual data remains stale. I’ve tried reducing the batch size to 10, but the behavior persists. The operation is marked as finished in milliseconds, which is physically impossible for a bulk update of that size. Something is just swallowing the requests.