Currently, the only way to add actual custom event data is through the Web SDK, and even that requires a window object. It would be good if we could actually add rows through other means, primarily the REST API. If it were added there, it would be possible to do in any language.
I discovered this through a lot of trial and error, as it looks easy to do already. There is a “Custom Event API”, there is a Java SDK, there is a python script called a data loader. Customer support took me through these options and more, and I left no stone unturned, implemented each one--but it turns out, none of them can actually add data, despite good auth credentials. All these can do is either update existing data, add new definitions for custom events, or most commonly just read existing data. Adding this feature seems to be a no-brainer.
Adding data for all events should be possible too, not just custom ones. As far as I know, it’s not possible to add data for these either, but I didn’t look deeply into those.