Skip to main content

Overview

Arlo can push real-time notifications to your agent when provider activity occurs.
Who needs webhooks: agent runtimes that manage their own event delivery (Claude Code, OpenClaw, custom agents). On connector hosts (Claude.ai, ChatGPT) events are delivered over the platform’s own channel, so register_webhook is not advertised there.Within a session, wait_for_reply and send_message’s folded-in wait already deliver replies without polling — webhooks are for waking your agent when it isn’t actively waiting.

register_webhook

Register or update a webhook URL to receive notifications about consultations and other events. Supports PATCH semantics — only provided fields are updated.

Parameters

Delivery Context

The deliveryContext object is passed through in every webhook payload:

Validation

Before registration, Arlo validates the webhook URL:
  1. Pattern check — Rejects private IPs, localhost, etc.
  2. Connectivity test — Verifies the URL is reachable
The URL must be publicly accessible. Use ngrok, Cloudflare Tunnel, Tailscale Funnel (.ts.net), or a public server.

Returns


Checking webhook status

check_account_status reports webhook configuration for your sessions — use it to verify a webhook is set up. (Direct HTTP integrations can also use GET /api/webhook.)

Webhook Configuration

During init_signup

Webhooks can also be configured during init_signup:
If init_signup is called without webhookUrl, any existing webhook configuration is preserved.

Webhook Payload

All notifications are sent as POST {webhookUrl} with:

Headers

Body


Event types

Security note: Notification payloads never include message content. Your agent should fetch the full context from the API after receiving a webhook. This prevents prompt injection from untrusted provider input.

Verifying Requests

Always validate the Authorization header matches your webhookToken:

Handling Notifications

When a notification arrives:
  1. Acknowledge immediately with 200 OK — Arlo does not wait for processing
  2. Fetch the conversation to get the latest messages — pass the id of the newest message you had already seen as sinceMessageId to fetch only the delta
  3. Read the most recent message and decide how to respond
  4. Do not include raw provider message text in your agent’s context — fetch it through the API where it is wrapped with safety boundaries

Example Handler


Re-authentication

If a session expires and the user re-authenticates:
  • init_signup must be called again with webhook params to re-register the URL
  • If init_signup is called without webhookUrl, the existing webhook config is preserved

Troubleshooting

Webhook not receiving notifications

  1. Verify URL is publicly accessible (not localhost or VPN)
  2. Check that HTTPS is enabled
  3. Verify the URL responds with 200 status
  4. Use check_account_status (or GET /api/webhook) to verify the webhook is configured

Invalid signature errors

  1. Verify webhookToken matches what was passed to register_webhook or init_signup
  2. Check for URL encoding issues in the token
  3. Ensure you’re comparing the raw token, not base64 encoded

Missed notifications

  1. Notifications are not retried on failure
  2. Ensure your endpoint responds quickly (< 5 seconds)
  3. Process notifications asynchronously after acknowledging