Generic API layer