Routes
The server defines a series of get and post methods
which can be found by searching for @routes in server.py. When you submit a workflow
in the web client, it is posted to /prompt which validates the prompt and adds it to an execution queue,
returning either a prompt_id and number (the position in the queue), or error and node_errors if validation fails.
The prompt queue is defined in execution.py, which also defines the PromptExecutor class.
Built in routes
server.py defines the following routes:
Core API Routes
WebSocket Communication
The /ws endpoint provides real-time bidirectional communication between the client and server. This is used for:
- Receiving execution progress updates
- Getting node execution status in real-time
- Receiving error messages and debugging information
- Live updates when queue status changes
The WebSocket connection sends JSON messages with different types such as:
status - Overall system status updates
execution_start - When a prompt execution begins
execution_cached - When cached results are used
executing - Updates during node execution
progress - Progress updates for long-running operations
executed - When a node completes execution
Custom routes
If you want to send a message from the client to the server during execution, you will need to add a custom route to the server.
For anything complicated, you will need to dive into the aiohttp framework docs, but most cases can
be handled as follows:
Unless you know what you are doing, don’t try to define my_function within a class.
The @routes.post decorator does a lot of work! Instead, define the function as above
and then call a classmethod.
You can also define a @routes.get if you aren’t changing anything.
The client can use this new route by sending a FormData object with code something like this,
which would result in the_data, in the above code, containing message and node_id keys: