Execute integration actions to interact with third-party services through a unified API.
Actions are the core way to interact with third-party services through Weavz. Each integration exposes a set of actions — like sending a Slack message, creating a GitHub issue, or reading a Google Sheet.
# Target a specific alias when the same integration has multiple configurationscurl -X POST https://api.weavz.io/api/v1/actions/execute \ -H "Authorization: Bearer wvz_your_key" \ -H "Content-Type: application/json" \ -d '{ "integrationName": "slack", "actionName": "send_channel_message", "input": { "channel": "#alerts", "text": "Alert!" }, "workspaceId": "proj_abc123", "integrationAlias": "slack_bot" }'
typescript
// Let workspace integration configuration resolve the connectionawait client.actions.execute('slack', 'send_channel_message', { input: { channel: 'C01ABCDEF', text: 'Hello!' }, workspaceId: 'proj_abc123',})// Target a specific alias when the same integration has multiple configurationsawait client.actions.execute('slack', 'send_channel_message', { input: { channel: '#alerts', text: 'Alert!' }, workspaceId: 'proj_abc123', integrationAlias: 'slack_bot',})
python
# Let workspace integration configuration resolve the connectionclient.actions.execute( "slack", "send_channel_message", input={"channel": "C01ABCDEF", "text": "Hello!"}, workspace_id="proj_abc123",)# Target a specific alias when the same integration has multiple configurationsclient.actions.execute( "slack", "send_channel_message", input={"channel": "#alerts", "text": "Alert!"}, workspace_id="proj_abc123", integration_alias="slack_bot",)
typescript
// Let workspace integration configuration resolve the connectionawait fetch('https://api.weavz.io/api/v1/actions/execute', { method: 'POST', headers: { 'Authorization': 'Bearer wvz_your_key', 'Content-Type': 'application/json', }, body: JSON.stringify({ integrationName: 'slack', actionName: 'send_channel_message', input: { channel: 'C01ABCDEF', text: 'Hello!' }, workspaceId: 'proj_abc123', }),})// Target a specific alias when the same integration has multiple configurationsawait fetch('https://api.weavz.io/api/v1/actions/execute', { method: 'POST', headers: { 'Authorization': 'Bearer wvz_your_key', 'Content-Type': 'application/json', }, body: JSON.stringify({ integrationName: 'slack', actionName: 'send_channel_message', input: { channel: '#alerts', text: 'Alert!' }, workspaceId: 'proj_abc123', integrationAlias: 'slack_bot', }),})
python
import httpxheaders = {"Authorization": "Bearer wvz_your_key"}# Let workspace integration configuration resolve the connectionhttpx.post( "https://api.weavz.io/api/v1/actions/execute", headers=headers, json={ "integrationName": "slack", "actionName": "send_channel_message", "input": {"channel": "C01ABCDEF", "text": "Hello!"}, "workspaceId": "proj_abc123", },)# Target a specific alias when the same integration has multiple configurationshttpx.post( "https://api.weavz.io/api/v1/actions/execute", headers=headers, json={ "integrationName": "slack", "actionName": "send_channel_message", "input": {"channel": "#alerts", "text": "Alert!"}, "workspaceId": "proj_abc123", "integrationAlias": "slack_bot", },)
When you execute an action, Weavz resolves which connection to use based on the parameters you provide and the workspace's configured integrations:
Explicit connection — connectionExternalId directly specifies the connection
Workspace integration — if workspaceId is set, the workspace's integration configuration determines the connection based on its strategy (fixed, per_user, or per_user_with_fallback)
Fallback — if no workspace integration or explicit connection is found, returns a CONNECTION_REQUIRED error
List all available integrations and their actions:
bash
# List all integrationscurl https://api.weavz.io/api/v1/integrations \ -H "Authorization: Bearer wvz_your_key"# Get details for a specific integrationcurl "https://api.weavz.io/api/v1/integrations?name=slack" \ -H "Authorization: Bearer wvz_your_key"
typescript
// List all integrationsconst { integrations } = await client.integrations.list()// Get a specific integrationconst { integrations: [slack] } = await client.integrations.list({ name: 'slack' })console.log(slack.actions) // Available actions with input schemas
python
# List all integrationsresult = client.integrations.list()# Get a specific integrationresult = client.integrations.list(name="slack")slack = result["integrations"][0]print(slack["actions"]) # Available actions with input schemas
typescript
// List all integrationsconst res = await fetch('https://api.weavz.io/api/v1/integrations', { headers: { 'Authorization': 'Bearer wvz_your_key' },})const { integrations } = await res.json()// Get details for a specific integrationconst slackRes = await fetch('https://api.weavz.io/api/v1/integrations?name=slack', { headers: { 'Authorization': 'Bearer wvz_your_key' },})const { integrations: [slack] } = await slackRes.json()console.log(slack.actions)
python
import httpxheaders = {"Authorization": "Bearer wvz_your_key"}# List all integrationsres = httpx.get("https://api.weavz.io/api/v1/integrations", headers=headers)integrations = res.json()["integrations"]# Get details for a specific integrationres = httpx.get( "https://api.weavz.io/api/v1/integrations", headers=headers, params={"name": "slack"},)slack = res.json()["integrations"][0]print(slack["actions"])
The integration details include all available actions with their input schemas, making it easy to discover what's possible.
Input partials are saved parameter presets that pre-fill action inputs. They are scoped to a workspace and can be assigned to specific integrations or actions. When a partial is active, its values are merged into the action input automatically — and enforced keys cannot be overridden at runtime.
This is useful for setting default channels, repositories, or other parameters that should remain consistent across executions. See the Playground guide for how to create and manage partials from the dashboard.