about meeting participant report

I invoke the participant report when receive ENDED notification, and sometimes the response contains wrong data , like below, duration is zero.

does it means I should not invoke the report immediately after the ENDED notification?  What’s the proper time afterward?

{
page_count: 1,
page_size: 100,
total_records: 8,
next_page_token: ‘’,
participants: [{
name: ‘xxxx’,
user_email: ‘xxx’,
join_time: ‘2018-03-29T11: 09: 56Z’,
leave_time: ‘2018-03-29T11: 09: 56Z’,
duration: 0,
attentiveness_score: ‘100.0%’
},
{
name: ‘xxxx’,
user_email: ‘xxx’,
join_time: ‘2018-03-29T11: 40: 54Z’,
leave_time: ‘2018-03-29T14: 05: 32Z’,
duration: 8678,
attentiveness_score: ‘83.91%’
},
{
name: ‘xxxx’,
user_email: ‘xxx’,
join_time: ‘2018-03-29T11: 47: 46Z’,
leave_time: ‘2018-03-29T11: 55: 19Z’,
duration: 453,
attentiveness_score: ‘100.0%’
},
{
name: ‘xxxx’,
user_email: ‘xxx’,
join_time: ‘2018-03-29T11: 54: 23Z’,
leave_time: ‘2018-03-29T14: 05: 37Z’,
duration: 7874,
attentiveness_score: ‘72.94%’
},
{
name: ‘xxxx’,
user_email: ‘xxx’,
join_time: ‘2018-03-29T11: 55: 54Z’,
leave_time: ‘2018-03-29T14: 05: 40Z’,
duration: 7786,
attentiveness_score: ‘99.5%’
},
{
name: ‘xxxx’,
user_email: ‘xxx’,
join_time: ‘2018-03-29T11: 57: 21Z’,
leave_time: ‘2018-03-29T12: 18: 03Z’,
duration: 1242,
attentiveness_score: ‘100.0%’
},
{
name: ‘xxxx’,
user_email: ‘xxx’,
join_time: ‘2018-03-29T11: 58: 55Z’,
leave_time: ‘2018-03-29T14: 05: 35Z’,
duration: 7600,
attentiveness_score: ‘95.47%’
},
{
name: ‘xxxx’,
user_email: ‘xxx’,
join_time: ‘2018-03-29T12: 01: 47Z’,
leave_time: ‘2018-03-29T12: 01: 47Z’,
duration: 0,
attentiveness_score: ‘100.0%’
}]
}

What was the API call that you made to get this return content?    I cannot seem to get this information back from any API call that I make.    

Does the meeting need to be “ended” in order to do what you did?  If so, how does one end a meeting through the API?    I can’t get “PUT https://api.zoom.us/v2/meetings/{meetingId}/status” to do anything.