← All docs
Getting started
Your first sessionThe workspaceSSH access
Core concepts
Agent rolesExperimentsResearch plansCanvasWorkflows
Integrations
GitHubWebhooksNotifications
Platform
Billing and plansAgent memoryMulti-chatKeyboard shortcuts
Reference
GPU catalogAgent toolsAPI referenceSecurityLimits and quotas
← Docs
Integrations

Webhooks

What webhooks do

Webhooks let you receive HTTP POST requests when things happen in your Meshia sessions. Use them to trigger external systems, update a dashboard, notify Slack, start a deployment, log to your own database.

Creating a webhook

Go to Settings > Webhooks and click Add webhook.

  1. URL. The HTTPS endpoint that receives the POST request
  2. Events. Pick which events trigger the webhook (or select all)
  3. Secret. An optional signing secret for verifying request authenticity

Click Save. Meshia sends a test ping to your URL. If it returns 2xx, you're set.

Supported events

| Event | Fires when |

|---|---|

| session.started | A GPU pod finishes provisioning and is ready |

| session.stopped | A session is stopped (by you or auto-idle) |

| experiment.completed | An experiment run finishes |

| experiment.failed | An experiment run errors out |

| plan.completed | A research plan finishes all experiments |

| plan.needs_input | The agent needs your decision on an ambiguous result |

| workflow.completed | A scheduled workflow finishes |

| workflow.failed | A workflow step fails and the workflow halts |

Payload format

Every webhook POST includes a JSON body:


{


  "event": "experiment.completed",


  "timestamp": "2026-04-11T14:32:00Z",


  "session_id": "sess_abc123",


  "data": {


    "experiment_id": "exp_def456",


    "metrics": { "loss": 0.0342, "accuracy": 0.921 },


    "duration_seconds": 1847


  }


}


Signature verification

If you set a signing secret, every request includes an X-Meshia-Signature header. Verify it like this:


import hmac, hashlib





def verify(payload_bytes, signature, secret):


    expected = hmac.new(


        secret.encode(), payload_bytes, hashlib.sha256


    ).hexdigest()


    return hmac.compare_digest(f"sha256={expected}", signature)


Delivery logs

Every webhook delivery is logged. Go to Settings > Webhooks, click a webhook, and open the Deliveries tab. You'll see the request body, response status, and latency for each attempt. Failed deliveries are retried 3 times with exponential backoff.

← GitHubNotifications →