>> But it not uncommon to use int for time/date storing and data transfer
Agree Diunuge, there is a lot of stuff out there. However, our objective is to produce the cleanest and the most intuitive API we can.

See some of the nicer API's  for reference, like https://developers.google.com/google-apps/calendar/recurringevents (you can easily figure out working with such API's even without any documentation)

>> Best case would be using use {"(DateTime) event_start", "(Time) event_duration"} instead of {start_date, end_date,

Have a look at the community app and check out how end_date is used. I think its usage is equivalent to recurrence.UNTIL field in the google calendar API. So you would still need another field to signify the duration or the end time of the calendar event (I would probably have an end time rather that a duration as this would need an unnecessary calculation)