final api with image uploads