ne_binary() | 'undefined' => api_binary()

if you see an api_* type, it is usually the type * | 'undefined'.

So api_object() => wh_json:object() | 'undefined'.

See whistle-1.0.0/include/wh_types.hrl for a bunch more!