What if you send this as a flat "timings[post_number]": duration? Does it work?
If I send a request containing that payload:
{
"timings[1]": 10000,
"topic_time": 10000,
"topic_id": 6,
}
It updates the timing tables and the post is marked as read, and /activity/read is updated as well.
Why are you trying to do that? What is the purpose?