Upload API endpoint