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.
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
X-API-KEY: {{apiKey}}
X-TOKEN: {{sellerToken}}
Accept: application/json
Endpoint
POST https://widget01.popin.to/api/v1/external/capture
Captures and registers a customer. Returns a unique customer_id
and a join link
for a Popin video call.
name
: Customer's full name
mobile
: Customer's mobile number
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.
{
"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
}
{
"status": 1,
"customer_id": "MzE1",
"url": "https://live.popin.to/8131-a157",
"message": "User captured successfully"
}
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.
Endpoint
GET https://widget01.popin.to/api/v1/external/slots
Fetches a list of upcoming available time slots that can be used to schedule a video call.
{
"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"
}
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.
Endpoint
POST https://widget01.popin.to/api/v1/external/schedule
Schedules a video call for a customer using the customer_id
from the Capture API and a selected time slot.
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"
)
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
{
"customer_id": "MjU2",
"time": "Fri, 19 Sep 2025 07:30 PM",
"agent": 210,
"native": false,
"url": "https://example.com/product-detail/ring"
}
{
"status": 1,
"schedule": {
"data": {
"name": "Vijith",
"time": "Fri, Sep 19 | 07:30 PM",
"timezone": "Asia/Kolkata"
}
},
"data": "+919544510895"
}
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.
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.