Xbee: read digital pins of multiple modules

I have multiple xbees (15) acting as endpoints and talking to a coordinator. Each endpoint module has two pushbuttons connected to digital input pins, and I need to detect from the central node (coordinator) if any of the pushbutton is pressed. I`m using an arduino connected to the coordinator Xbee to get the data.

On my first approach I configured two digital pins on the endpoint xbee and the same pins on the coordinator. Then, using arduino to read the digital outputs of the coordinator I was able to detect if the pushbutton of the endpoint was pressed. the "OnChange" parameter was enabled at the endpoint.

The problem with this is that as I said before, there will be 15 endpoints, so reading the digital pins of the coordinator wouldn't provide the source address of the endpoint whose pushbutton was pressed. I need to know wich of the endpoints pressed a button.

To solve this I'm tying to receive the information using the coordinator's UART serial port (DOUT). I read that the information is sent using the API frame format. Using arduino I can visualize the information, and I've identified the starting identifier, but I'm having a really hard time trying to extract the payload, computing the checksum, etc.

Do you think this is a correct way for reading pushbuttons connected to multiple endpoints?

Can you suggest a way for getting the source ID when performing a digital read at the coordinator?

Do you think I need to run the Xbees in API mode? why?

I'm using XbeePRO (XBP24) and Arduino Mega.

Thank you very much for your comments.

Best Regards