Act
POST /act is Membrane’s unified entry point for running an action through a connection. See the Actions guide for the conceptual walkthrough — this page is the endpoint reference.
Dispatch styles
Exactly one ofid, key, api, or code per call. Sending more than one returns 400.
| Field | Style | When to use |
|---|---|---|
api | Inline api | Make an ad-hoc HTTP request through the connection’s auth and base URL. |
code | Inline code | Run a JavaScript snippet in a sandbox with a pre-wired authenticated membrane client. |
key | Reusable | Run a saved (workspace- or integration-level) action by its stable key. |
id | Reusable | Run a catalog action or a saved action by its Membrane ID. |
Resolving a connection
Every dispatch needs a connection. Membrane resolves one in this order:connectionId— direct.connectionKey— look up by key.integrationIdorintegrationKey— use that integration’s default connection.- Workspace default connection.
api / code), the connection must resolve to something — otherwise the request returns 400.
Request body
| Field | Type | Description |
|---|---|---|
api | object | Inline HTTP spec — { method, path, body?, headers?, query? }. |
code | string | Inline JS module body, executed in a sandbox. |
key | string | Action key. Scope with integrationKey/integrationId/connectionId if non-unique. |
id | string | Action ID. Mutually exclusive with key / api / code. |
connectionId | string | Connection to run against. See resolution priority. |
connectionKey | string | Connection key alternative to connectionId. |
integrationId | string | Integration ID — used to scope key lookups or pick a default connection. |
integrationKey | string | Integration key alternative to integrationId. |
input | object | Action input. For reusable-action dispatches, validated against the action’s inputSchema. |
meta | object | Arbitrary metadata stored on the resulting Action Run Log. |
Response
actionRunId. Pass it to GET /action-run-logs/{id} to inspect the resolved action, mapped input, raw HTTP exchange, and any errors. On failure the body still includes actionRunId alongside the error.
Replay from a run log
Every action run log carries anaction field — the complete /act body that was used. Pass it back unchanged to re-run the same dispatch:
input and connectionId on the run log are deprecated — read them from action instead.
Legacy: POST /actions/{selector}/run
POST /actions/{selector}/run is the older endpoint for running a saved action. It still works for existing callers but is deprecated — /act covers all the same cases plus inline api and code dispatch.
| Before | After |
|---|---|
POST /actions/<id>/run body: { ...input } | POST /act body: { "id": "<id>", "input": {...}, "connectionKey": "..." } |
POST /actions/<key>/run?connectionId=<id> | POST /act body: { "key": "<key>", "connectionId": "<id>", "input": {...} } |
Ad-hoc HTTP via a custom run-javascript action | POST /act body: { "api": { "method": "...", "path": "..." }, "connectionKey": "..." } |
/act for new code.Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
ID of the action to run.
Key of the action to run. If the same key exists across multiple integrations, also pass integrationId, integrationKey, or connectionId so we know which one you mean.
Inline HTTP request spec, sent through the resolved connection's auth layer and base URL. Pair with connectionId, connectionKey, integrationId, or integrationKey to pick the connection.
Inline JavaScript executed in a sandbox. The module must export a function that receives { input, membrane, ... }. Its return value becomes the action output.
ID of the integration to run the action on. When key is provided, looks up the action within this integration. When no connection is specified, runs against this integration's default connection.
Key of the integration to run the action on. When key is provided, looks up the action within this integration. When no connection is specified, runs against this integration's default connection.
ID of the connection to run the action against. If a connection-level version of the action exists on this connection, that version is used; otherwise the integration-level or universal action is used.
Key of the connection to run the action against. Use when you have a stable key for the connection instead of an ID.
Input passed to the action, matching its input schema.
Arbitrary metadata stored on the action run log.