Gateway API Reference
The Flowork Gateway API is the central hub for user authentication, engine management, and proxied communication. All API routes are prefixed with /api/v1.
Authentication
The Gateway API uses two primary methods of authentication:
Cryptographic Auth (Crypto Auth): Used for all user-facing routes. The GUI client must sign a message using the user's Private Key and send the following headers:
X-User-Address: The user's public0x...address.X-Signature: The resulting signature.X-Signed-Message: The unique message that was signed.
Internal Token Auth: Used for service-to-service communication (e.g., Core Engine to Gateway, Momod to Gateway).
X-API-Key: Uses the sharedGATEWAY_SECRET_TOKEN.X-Engine-Token: Uses the uniqueFLOWORK_ENGINE_TOKENfor engine-specific calls.
Auth Routes
Endpoints for handling user identity verification.
GET /auth/profile
Auth: Crypto Auth
This is the primary "login" endpoint. By sending a valid signed request, the client proves its identity. The Gateway responds with the user's profile data (username, email, tier, permissions) if the signature is valid. If the X-User-Address is not recognized, the Gateway will auto-register a new user.
POST /auth/logout
Auth: Crypto Auth
Acknowledges a user's logout request. In a stateless crypto system, this has minimal server-side effect but confirms the client's intent.
POST /auth/register
Status: Stubbed
Not used. Identity creation (registration) is handled client-side by generating a new Private Key / Mnemonic phrase.
POST /auth/login
Status: Stubbed
Not used. Authentication is handled by GET /auth/profile using a cryptographic signature.
User & Engine Routes
Endpoints for managing a user's account and their registered engines.
GET /user/engines
Auth: Crypto Auth
Fetches a list of all engines owned by the authenticated user.
POST /user/engines
Auth: Crypto Auth
Registers a new engine for the authenticated user.
- Body:
{ "name": "My New Engine Name" } - Response:
{ "id": "...", "name": "...", "raw_token": "dev_engine_..." }
DELETE /user/engines/<engine_id>
Auth: Crypto Auth
Deletes an engine owned by the user.
POST /user/engines/<engine_id>/reset-token
Auth: Crypto Auth
Generates a new raw_token for an existing engine and updates its hash in the database.
- Response:
{ "token": "dev_engine_...", "engine_id": "..." }
PUT /user/engines/<engine_id>/update-name
Auth: Crypto Auth
Updates the friendly name of an owned engine.
- Body:
{ "name": "New Engine Name" }
GET /user/shared-engines
Auth: Crypto Auth
Fetches a list of all engines shared with the authenticated user (i.e., engines they do not own but can access).
Engine Sharing Routes
Endpoints for managing engine access permissions.
GET /engines/<engine_id>/shares
Auth: Crypto Auth
For an engine you own, get a list of all users you have shared it with.
POST /engines/<engine_id>/shares
Auth: Crypto Auth
Share an engine you own with another user.
- Body:
{ "share_with_identifier": "username_or_public_address" }
DELETE /engines/<engine_id>/shares/<shared_user_id>
Auth: Crypto Auth
Revoke access for a specific user from an engine you own.
Workflow Sharing Routes
Endpoints for creating and managing public share links for workflows.
GET /workflows/<preset_name>/shares
Auth: Crypto Auth
Gets a list of all share links created for one of your workflows.
POST /workflows/<preset_name>/shares
Auth: Crypto Auth
Creates a new, unique share link for one of your workflows.
- Body:
{ "permission_level": "view-run", "link_name": "My Link" } - Permissions:
view,view-run,view-edit-run
PUT /workflow-shares/<share_id>
Auth: Crypto Auth
Updates the permission level of an existing share link you own.
- Body:
{ "permission_level": "view" }
DELETE /workflow-shares/<share_id>
Auth: Crypto Auth
Deletes a share link you own, revoking access.
GET /workflow-shares/resolve/<share_token>
Auth: Public
A public endpoint to resolve a share token. It returns the workflow's name, owner, and permission level.
User State Routes
Endpoints for storing persistent, user-specific key-value data (like GUI preferences).
GET /user/state/favorite_presets
Auth: Crypto Auth
Retrieves the user's saved list of favorite preset IDs (an array of strings).
PUT /user/state/favorite_presets
Auth: Crypto Auth
Overwrites the user's saved list of favorite preset IDs.
- Body:
[ "preset-id-1", "preset-id-2" ]
Internal & System Routes
Endpoints used for service-to-service communication.
GET /system/health
Auth: Public
A simple health check endpoint for the Gateway service, used by Docker.
GET /engine/get-engine-auth-info
Auth: Internal Auth (X-Engine-Token)
Called by a Core Engine on startup. The engine sends its unique token, and the Gateway responds with the list of user public addresses authorized to access that engine (the owner + all shared users).
GET /engine/claim-token
Auth: Internal Auth (X-API-Key)
Called by the Core Engine's local dashboard. This is the final step in the dashboard-to-web authorization flow, allowing the engine to claim a newly generated token.
GET /system/disabled-components
Auth: Internal Auth (X-API-Key)
Called by the Core Engine to fetch the global "kill-switch" list of component IDs that should be disabled for security or maintenance reasons.
Proxied Routes
The Gateway acts as a reverse proxy for several routes, forwarding them to the user's active Core Engine.
Public Proxies
These routes are proxied from the Core Engine and are publicly accessible (no auth needed).
GET /localization/<lang_code>: Fetches language dictionary files.GET /news: Fetches the news feed.GET /components/<type>/<id>/icon: Fetches the icon for a specific component.
Authenticated Proxies
All other requests to /api/v1/... that are not listed above (e.g., /presets, /variables, /dashboard/summary) are treated as authenticated proxy requests. The Gateway forwards them to the user's active Core Engine after verifying their Crypto Auth headers.