Integration

Number Masking Webhooks

Number masking event webhooks: one HTTPS endpoint receives session.created, call.incoming, call.connected, call.ended, call.missed and session.expired, signed with HMAC-SHA256. Plus a routing webhook that lets your server pick the target of each call.

Number masking at a glance

ShopifyAmazonStripeSlackNotionVercel

Quick Start

Receive your first event

  1. Step 1 of 4: Register your endpoint

    PUT /v1/masking/event-webhook with your HTTPS url and a signing secret, or set it in the portal under Settings.

  2. Step 2 of 4: Send a test

    POST /v1/masking/event-webhook/test sends a synthetic session.created event and shows the status code and latency.

  3. Step 3 of 4: Verify the signature

    Recompute HMAC-SHA256 over the raw body with your secret and compare with X-Edesy-Signature (sha256=<hex>).

  4. Step 4 of 4: Respond fast

    Return a 2xx within 5 seconds and do heavy work asynchronously.

Set Up and Payload

Register an endpoint, send a test event, and see what a delivery looks like.

# Point lifecycle events at one HTTPS endpoint
curl -X PUT https://voice-api.edesy.in/v1/masking/event-webhook \
  -H "Authorization: Bearer $EDESY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://api.yourapp.com/edesy/events","secret":"whsec_change_me"}'

# Send a synthetic session.created event to check your receiver
curl -X POST https://voice-api.edesy.in/v1/masking/event-webhook/test \
  -H "Authorization: Bearer $EDESY_API_KEY"

# What we POST (header X-Edesy-Signature: sha256=<hex HMAC of the raw body>)
{
  "event": "call.ended",
  "reference": "ORD-4821",
  "virtual_number": "918071387146",
  "caller": "9876543210",
  "callee": "9123456789",
  "direction": "a_to_b",
  "call_sid": "d28be7cd-9840-4b23-9627-199f1ef81fc6",
  "duration_sec": 92,
  "status": "completed",
  "timestamp": "2026-07-14T18:05:00Z"
}

Capabilities

Lifecycle events

session.created, call.incoming, call.connected, call.ended, call.missed and session.expired.

Signed payloads

HMAC-SHA256 over the raw body, sent as sha256=<hex> in X-Edesy-Signature.

Delivery log

GET /v1/masking/event-webhook/deliveries lists recent attempts with status code, success and error.

Routing webhook

Set a number to webhook mode and Edesy asks your server, per call, which number to connect (masking.route).

FAQ

Simple Per-Minute Pricing

Rs 1.50/min in 60-second pulses, 1-minute minimum, plus number rental (Rs 499/month mobile, Rs 449/month landline). Prices exclude 18% GST. New accounts get a Rs 20 welcome credit; no card needed to sign up.

Most Popular
Pay As You Go
₹1.50/ min
Prepaid INR wallet, billed per bridged minute
  • Two-way masking sessions
  • Extension codes and QR
  • Optional call recording
  • Analytics and CSV export
  • REST API and signed webhooks
  • Self-serve portal
  • Number rental billed separately
Get Started
Enterprise
Custom
For high volume and custom requirements
  • Everything in Pay As You Go
  • Volume pricing on request
  • Help with integration
  • GST invoices with your GSTIN
Contact Sales
Done-For-You
Don't want to integrate this yourself?
Want help setting up Edesy number masking: API integration, webhook handlers, routing or migration from another provider? Setup work is quoted per project. The self-serve product is Rs 1.50/min plus number rental for teams who prefer DIY.

Ready to Protect User Privacy?

Get started on the self-serve portal. Rs 1.50 per minute plus number rental. New accounts get a Rs 20 welcome credit; no card needed to sign up.