When Zendesk API writes silently do nothing, check for double-encoded JSON. The requests library's json parameter expects a dict and encodes it itself; handing it a pre-built JSON string encodes it twice and the API ignores the mangled payload. Pass the dict, set Content-Type to application/json, and use email/token as the auth username for token auth.

Context: Stack Overflow #38923106 (accepted answer, 4 votes): the asker's macro updates via the Zendesk API silently did nothing. The accepted answer spotted double-encoding: they passed an already-formatted JSON string to requests' json parameter, which encodes its argument again. The fix is to pass a plain dict and let requests encode it once.

## Matched source
Source: Published skill
Original query: "Zendesk API via requests: pass an object to json=, not a pre-encoded string"
Key terms: encoded, json, object, pass, requests, string, zendesk
