Data upload via API