Skip to main content

Overview

Webhooks send HTTP POST requests to your server when memory events occur. Use them to sync memories with your app, trigger workflows, or build real-time features.

Create a webhook

hook = m.create_webhook(
    url="https://your-app.com/webhooks/mengram",
    name="Production webhook",
    event_types=["memory_add", "memory_update", "memory_delete"],
    secret="your-hmac-secret",  # optional, for signature verification
)
print(hook)  # {"id": 1, "url": "...", "active": true}

Event types

EventDescription
memory_addNew entity or facts added
memory_updateEntity facts updated
memory_deleteEntity deleted

Webhook payload

{
  "event": "memory_add",
  "timestamp": "2026-02-27T10:30:00Z",
  "data": {
    "entity": "PostgreSQL",
    "type": "technology",
    "facts": ["Uses PostgreSQL 16", "Deployed on Railway"],
    "user_id": "default"
  }
}

Signature verification

If you provided a secret, each request includes an X-Mengram-Signature header with an HMAC-SHA256 signature of the request body.
import hmac, hashlib

def verify_webhook(body: bytes, signature: str, secret: str) -> bool:
    expected = hmac.new(
        secret.encode(), body, hashlib.sha256
    ).hexdigest()
    return hmac.compare_digest(f"sha256={expected}", signature)

Manage webhooks

# List all
hooks = m.get_webhooks()

# Update
m.update_webhook(webhook_id=1, active=False)

# Delete
m.delete_webhook(webhook_id=1)