API event loop