basic api request interface