Skip to main content
POST
Create Webhook
Create a webhook listener for one of your connected accounts. The delivery mode is determined by whether you provide a url:
  • With url — Custom mode: events are sent as POST requests to your URL
  • Without url — Hosted mode: events are available via SSE stream or polling
Monitoring starts automatically. As soon as the webhook is created, the account’s real-time SSE stream is opened and credit billing begins (≈10 credits/day per account). You don’t need to call /start — that endpoint is only used to resume a webhook that was previously stopped via /stop.Calling POST /v2/webhooks itself costs 0 credits; the running cost comes from the live monitoring it enables.

Header Parameters

string
required
Your API key

Body Parameters

string
required
The ID of the account to monitor. Must be an account you own (created via /v2/login).
string
The URL where events will be sent as POST requests. Must be a publicly accessible HTTPS endpoint.Omit this field to create a hosted webhook (SSE/polling).
array
default:"[\"all\"]"
List of event types to listen for. Defaults to ["all"] which receives every event. Applies to custom mode only: hosted webhooks always receive every event type.Available event types: message_received, accepted_invitation, invitation_received, all. For an email account, message_received covers new incoming emails and email_bounced (delivered via all) covers bounces — see Email events.
boolean
default:"true"
Custom mode only. When true, a POST that times out or gets a 5xx/429 is retried with backoff (8 attempts over ~45 h) and every attempt is visible in the delivery log. Set false for fire-and-forget (failures are still logged). See Delivery & retries.
boolean
default:"false"
Custom mode only. When true, every outbound POST is signed with HMAC-SHA256 so you can verify it came from LinkUp. The response returns a secret once — store it; it cannot be retrieved later. See Signature Verification.

Response

boolean
Whether the webhook was created successfully
object

Notes

  • The webhook is created in an active and monitoring state — events start flowing immediately, no extra call required.
  • You can create multiple webhooks for the same account with different event filters. Billing is per-account (not per-webhook), so adding a second webhook to the same account doesn’t double the credit cost.
  • Stopping the last active webhook on an account (via /stop or DELETE) halts monitoring and stops the credit billing automatically. Other webhooks on the same account are unaffected.
  • For custom mode, the webhook URL must return a 200 status code to acknowledge receipt.
  • When accepted_invitation is in the events list, the API performs an initial sync of your connections to enable detection of new acceptances. Likewise, invitation_received stores a baseline of your pending invitations — the existing backlog is never notified, only invitations received after creation.