diff --git a/pages/develop/legacy/api/javascript/ecore/mainloop.txt b/pages/develop/legacy/api/javascript/ecore/mainloop.txt
new file mode 100644
index 000000000..3e4cc85f8
--- /dev/null
+++ b/pages/develop/legacy/api/javascript/ecore/mainloop.txt
@@ -0,0 +1,81 @@
+===== Javascript binding API - Ecore Mainloop =====
+
+[[api:javascript:ecore|Back to the JS Ecore page]]
+
+**DRAFT**
+
+This page discusses functions that are acting on Ecore's main loop itself or on events and infrastructure directly linked to it.
+
+Most programs only need to start and end the main loop, the rest of the function discussed here are meant to be used in special situations, and with great care.
+
+==== Constants ====
+
+=== Callback control ===
+
+These constants are used through ecore to control the lifetime of callbacks. They are usually returned by the callback to indicate if the callback should be kept for future activations, if it should be cancelled, etc.
+
+ * ''efl.Ecore.Mainloop.CALLBACK_CANCEL'' - Remove the callback from the active list.
+ * ''efl.Ecore.Mainloop.CALLBACK_DONE'' - Stop event handling.
+ * ''efl.Ecore.Mainloop.CALLBACK_PASS_ON'' - Pass the event to the next handler.
+ * ''efl.Ecore.Mainloop.CALLBACK_RENEW'' - Keep the callback active for future activation.
+
+==== Functions ====
+
+=== begin() ===
+
+Syntax
+
+
+efl.Ecore.Mainloop.begin();
+
+
+Runs the application main loop.
+
+=== getAnimatorTicked() ===
+
+Syntax
+
+
+var animatorTicked = efl.Ecore.Mainloop.getAnimatorTicked()
+
+
+Return value
+
+ * boolean - ''true'' if an animator has been called, ''false'' otherwise.
+
+Returns if an animator has ticked off during this loop iteration
+
+=== getNested() ===
+
+Syntax
+
+
+var isRunning = efl.Ecore.Mainloop.getNested()
+
+
+Return value
+
+ * number - an integer specifying if the ecore_main_loop is running, 0 if not running, > 0 if running
+
+Returns if the ecore_main_loop is running
+
+
+=== iterate() ===
+
+Syntax
+
+
+efl.Ecore.Mainloop.iterate()
+
+
+Runs a single iteration of the main loop to process everything on the queue.
+
+=== quit() ===
+
+Syntax
+
+
+efl.Ecore.Mainloop.quit()
+
+
+Quits the main loop once all the events currently on the queue have been processed.