Popin Insta Call API Documentation

Popin Insta Call API Documentation

This documentation covers the Popin Insta Call APIs for capturing users, creating video call links, retrieving available time slots, and scheduling video calls, with full support for advanced routing, tracking, and customization options.


πŸ” Authentication

All API requests must include the following headers:

  • X-API-KEY: Your unique API key
    Generate this in the Popin Dashboard under:
    Settings β†’ Developers β†’ Popin API β†’ Generate API Key

  • X-TOKEN: Your seller token
    Found in the Popin Dashboard under Integrations

  • Accept: Must be set to application/json

Example Headers

X-API-KEY: {{apiKey}}
X-TOKEN: {{sellerToken}}
Accept: application/json

πŸ“₯ 1. Capture User API

Endpoint
POST https://widget01.popin.to/api/v1/external/capture

Purpose

Captures and registers a customer. Returns a unique customer_id and a join link for a Popin video call.

Required Fields in Request Body

  • name: Customer's full name

  • mobile: Customer's mobile number

Optional Fields

  • email: Customer's email address

  • group: Group identifier for call routing (from Dashboard β†’ Routing)

  • pincode : Customer's postal or ZIP code

  • country: Country code (e.g., 91 for India). Defaults to +91

  • agent: ID of the agent to route the call to

  • native: Boolean value. If set to false, the video call join URL will be a custom URL set in the seller’s Dashboard. Defaults to true

  • campaign: Custom object for tracking or metadata. Can include values like utm_source, pincode, frequency, etc.

Sample Request Body

{
  "name": "Vijith",
  "email": "vijith@popin.to",
  "mobile": "9544510895",
  "country": "91",
  "group": "5211",
  "agent": 210,
  "pincode": "221007",
  "campaign": {
    "utm_source": "google",
    "pincode": "221007",
    "frequency": "10"
  },
  "native": false
}

Successful Response

{
  "status": 1,
  "customer_id": "MzE1",
  "url": "https://live.popin.to/8131-a157",
  "message": "User captured successfully"
}

Notes

  • You must capture and store the returned customer_id to use it in the Schedule a Call API.

  • If native is false, the join URL is taken from your Dashboard settings or custom URL passed during scheduling.

  • The campaign field can be used to attach any additional metadata for tracking or segmentation.


πŸ“… 2. Get Available Slots API

Endpoint
GET https://widget01.popin.to/api/v1/external/slots

Purpose

Fetches a list of upcoming available time slots that can be used to schedule a video call.

Sample Response

{
  "availability": [
    {
      "date": "Wed, 24 Sep 2025",
      "slots": [
        "01:00 PM",
        "01:15 PM",
        "01:30 PM",
        "10:45 PM"
      ]
    },
    {
      "date": "Thu, 25 Sep 2025",
      "slots": [
        "10:00 AM",
        "10:15 AM",
        "10:45 PM"
      ]
    }
  ],
  "slotDiff": 15,
  "timezone": "Asia/Kolkata"
}

Notes

  • The response includes dates and 15-minute interval slots.

  • All times are in the specified timezone (e.g., Asia/Kolkata).

  • To schedule a call, combine the selected date and time in the following format:
    "Thu, 25 Sep 2025 03:15 PM"

Use this full string in the time field when calling the Schedule API.


πŸ“† 3. Schedule a Call API

Endpoint
POST https://widget01.popin.to/api/v1/external/schedule

Purpose

Schedules a video call for a customer using the customer_id from the Capture API and a selected time slot.

Required Field

  • customer_id: Unique ID returned by the Capture User API

  • time: Full date and time string (e.g., "Fri, 19 Sep 2025 07:30 PM")

Optional Fields

  • agent: ID of the agent to assign the call to

  • native: Boolean value. If set to false, the system will use the URL passed in the url field or fallback to the custom Dashboard URL

  • url: Custom video call URL (only considered if native is set to false). If native is not included or set to true, this value is ignored

Updated Sample Request Body

{
  "customer_id": "MjU2",
  "time": "Fri, 19 Sep 2025 07:30 PM",
  "agent": 210,
  "native": false,
  "url": "https://example.com/product-detail/ring"
}

Successful Response

{
  "status": 1,
  "schedule": {
    "data": {
      "name": "Vijith",
      "time": "Fri, Sep 19 | 07:30 PM",
      "timezone": "Asia/Kolkata"
    }
  },
  "data": "+919544510895"
}

Notes

  • If native is false, and a url is provided, the customer will receive a join link using that URL.

  • If native is false but no url is provided, the system will use the URL configured in the seller’s Dashboard profile.

  • If native is not provided or is true, a default Popin live.popin.to join link will be generated.

  • The agent field is optional and is used to route the call to a specific agent.


βœ… Summary of API Endpoints

Capture User
POST /api/v1/external/capture
Register a customer with optional group, agent, pincode, and campaign data. Supports routing and join URL customization via native.

Get Available Slots
GET /api/v1/external/slots
Fetch available 15-minute time slots across upcoming days in your configured timezone.

Schedule a Call
POST /api/v1/external/schedule
Schedule a call using a valid customer_id and selected time. Supports custom agent assignment and custom join URLs.

    • Related Articles

    • Popin Export Report API Documentation

      The Popin Export Report API allows you to export and download reports related to customer calls or scheduled video calls for a specific date. πŸ”— API Endpoint POST https://dashboard.popin.to/api/v1/export πŸ” Authentication You need an API key to ...
    • Case Study: Boosting Video Call Engagement for Chi-Link with Popin's Link Generator API

      Background Chi-Link, a direct-to-consumer (D2C) brand, partnered with Popin to offer personalized shopping experiences through live video calls. While Chi-Link loved the concept of one-on-one interaction with their customers, they faced a significant ...
    • Popin 3P Events Documentation

      Popin provides JavaScript events through window.popinEvent to help track user actions, permissions, and call activities on the widget. Integration Place the following snippet below the Popin integration script: window.popinEvent = (event, data) => { ...
    • How do I receive call on Popin Seller agent app ?

      1. Initiating the Call * Customers initiate the inbound call. * Call will appear like any other call on your phone. 2. Accepting the Call * Customer's name will be displayed. * Option to see which product they are calling about (Only on Android). * ...
    • How do I track live call data in Popin Dashboard?

      1. Accessing Call Data on Dashboard * Navigate to the calls tab on the dashboard. * Find essential data such as calls, missed calls, abandoned calls, and call success rate. 2. Viewing Live Calls * Live calls are displayed, including a watch icon for ...