According to the API docs, rate limiting errors (429) will have the following format:
The Content-Type of the response can be JSON or plaintext. If it is JSON, it will be type RateLimitError.
I've recently seen an increasing number of reports from users of my app, using the Dropbox Python SDK, where 429 errors with content-type 'application/json' don't conform to the expected JSON structure. In particular, they don't contain an "error" tag, leading to exceptions when the SDK tries to deserialise them as RateLimitError in https://github.com/dropbox/dropbox-sdk-python/blob/487793dff3c5a8a3a76010799dc4803cabdb70f3/dropbox/dropbox_client.py#L644-L649:
err = None
if res.headers.get('content-type') == 'application/json':
err = stone_serializers.json_compat_obj_decode(
> RateLimitError_validator, res.json()['error'])
E KeyError: 'error'
Has anything changed in the expected body of error responses?