Fire events at deployed Metaflow flows with curl.
1. Configure Outerbounds (one-time, requires Python):
pip install outerbounds
outerbounds configure <config-string-from-ui>
# or for CI: outerbounds service-principal-configure --name ... --deployment-domain ...2. Extract webhook credentials:
python extract_credentials.py # writes WEBHOOK_URL and AUTH_KEY to .env3. Deploy the flow:
python flows/webhook_receiver/flow.py argo-workflows create4. Fire an event:
source .env
curl -X POST "$WEBHOOK_URL" \
-H "Content-Type: application/json" \
-H "x-api-key: $AUTH_KEY" \
-d '{
"payload": {
"name": "incoming_webhook",
"id": "'$(uuidgen | tr A-Z a-z)'",
"timestamp": '$(date +%s)',
"utc_date": "'$(date -u +%Y%m%d)'",
"generated-by-metaflow": false,
"record_count": 77
}
}'A 200 means the event was accepted and the flow will run.
For long-lived apps, use a library instead of raw curl:
- Node.js:
@outerbounds/events - Python:
pip install ob-events
Both accept the awssm-arn:... config string from the UI and handle token refresh automatically.