Details from: #1818 (comment)
The last thing to address is using kwargs only on api.py module.
This is how it looks like:
>>> def hello(*, name='world'): print('hello', name)
>>> hello()
"hello world"
>>> hello("people")
TypeError: hello() takes 0 positional arguments but 1 was given
It makes the interface more explicit.
To make it work you only need to put an asterisk before the keyword arguments.
Details from: #1818 (comment)