Reference
API reference
Every endpoint of the public API and every webhook event, generated from the same schemas the API checks requests against.
Base URL https://business.linemeup.in/api/v1. Every request sends a key as
Authorization: Bearer … — see Authentication. This page describes version 0.0.0 of the document.
Sample builder#
Choose an endpoint and fill in what you have. The request is written here and never sent — run
it from your own system, with your key in LINEMEUP_API_KEY.
Business#
The fields and recipes are on the Business page.
GET /business #
The business this key belongs to — its name, category, time zone and today.
| Field | Type | Notes |
|---|---|---|
idrequired | string | |
namerequired | string | |
slugrequired | string | |
categoryrequired | enum | One of "healthcare", "beauty_personal_care", "automotive", "food_beverage", "other" |
timeZonerequired | string | |
todayrequired | string | |
clockFormatrequired | enum | One of "12h", "24h" |
curl
curl "https://business.linemeup.in/api/v1/business" \
-H "Authorization: Bearer $LINEMEUP_API_KEY" Node
const res = await fetch("https://business.linemeup.in/api/v1/business", {
headers: {
Authorization: `Bearer ${process.env.LINEMEUP_API_KEY}`,
},
});
if (!res.ok) throw new Error(`Line Me Up answered ${res.status}`);
const answer = await res.json(); Python
import os
import requests
res = requests.get(
"https://business.linemeup.in/api/v1/business",
headers={
"Authorization": f"Bearer {os.environ['LINEMEUP_API_KEY']}",
},
timeout=10,
)
res.raise_for_status()
answer = res.json() PHP
<?php
$ch = curl_init("https://business.linemeup.in/api/v1/business");
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv("LINEMEUP_API_KEY"),
],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 10,
]);
$answer = json_decode(curl_exec($ch), true); {
"id": "bus-0193f2a1-7c4e-7a10-9b2e-000000000001",
"name": "Sunrise Clinic",
"slug": "sunrise-clinic",
"category": "healthcare",
"timeZone": "Asia/Kolkata",
"today": "2026-10-30",
"clockFormat": "12h"
} Errors this can answer
-
401Not authenticated -
403The key lacks the permission for this route, or the plan does not include integrations -
404Not found — or outside this key's business, lines or desks -
409The visit, line or desk is not in a state that allows this -
422Validation failed -
429Rate limited — wait for the Retry-After header's seconds
Every error has the same body — see Errors.
Lines#
The fields and recipes are on the Lines page.
GET /lines #
Every line this key may see, with how many are waiting on each.
| Field | Type | Notes |
|---|---|---|
datarequired | array of object | |
data[].idrequired | string | |
data[].namerequired | string | |
data[].coderequired | string | |
data[].typerequired | enum | One of "walk_in", "appointment", "scheduled_walk_in" |
data[].pausedrequired | boolean | |
data[].waitingrequired | integer | |
data[].avgServiceMinutesrequired | integer | |
data[].maxCapacityrequired | integer | |
data[].descriptionrequired | string | null | |
data[].locationrequired | string | null | |
data[].callGraceMinutesrequired | integer | |
data[].appointmentGraceBeforeMinutesrequired | integer | |
data[].maxLateArrivalMinutesrequired | integer | |
data[].autoNoShowEnabledrequired | boolean |
curl
curl "https://business.linemeup.in/api/v1/lines" \
-H "Authorization: Bearer $LINEMEUP_API_KEY" Node
const res = await fetch("https://business.linemeup.in/api/v1/lines", {
headers: {
Authorization: `Bearer ${process.env.LINEMEUP_API_KEY}`,
},
});
if (!res.ok) throw new Error(`Line Me Up answered ${res.status}`);
const answer = await res.json(); Python
import os
import requests
res = requests.get(
"https://business.linemeup.in/api/v1/lines",
headers={
"Authorization": f"Bearer {os.environ['LINEMEUP_API_KEY']}",
},
timeout=10,
)
res.raise_for_status()
answer = res.json() PHP
<?php
$ch = curl_init("https://business.linemeup.in/api/v1/lines");
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv("LINEMEUP_API_KEY"),
],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 10,
]);
$answer = json_decode(curl_exec($ch), true); {
"data": [
{
"id": "line-0193f2a1-7c4e-7a10-9b2e-000000000001",
"name": "General",
"code": "GEN",
"type": "walk_in",
"paused": false,
"waiting": 4,
"avgServiceMinutes": 10,
"maxCapacity": 60,
"description": "Walk-ins for a first visit",
"location": "Ground floor",
"callGraceMinutes": 5,
"appointmentGraceBeforeMinutes": 10,
"maxLateArrivalMinutes": 15,
"autoNoShowEnabled": true
},
{
"id": "line-0193f2a1-7c4e-7a10-9b2e-000000000002",
"name": "X-ray",
"code": "XR",
"type": "scheduled_walk_in",
"paused": false,
"waiting": 1,
"avgServiceMinutes": 15,
"maxCapacity": 30,
"description": null,
"location": "First floor, room 4",
"callGraceMinutes": 5,
"appointmentGraceBeforeMinutes": 10,
"maxLateArrivalMinutes": 10,
"autoNoShowEnabled": true
}
]
} Errors this can answer
-
401Not authenticated -
403The key lacks the permission for this route, or the plan does not include integrations -
404Not found — or outside this key's business, lines or desks -
409The visit, line or desk is not in a state that allows this -
422Validation failed -
429Rate limited — wait for the Retry-After header's seconds
Every error has the same body — see Errors.
PUT /lines #
Make a line, every setting said; refused to a key limited to some lines.
| Field | Type | Notes |
|---|---|---|
namerequired | string | At least 1 characters. Up to 60 characters |
codeoptional | string | |
typerequired | enum | One of "walk_in", "appointment", "scheduled_walk_in" |
avgServiceMinutesrequired | integer | At least 1. At most 720 |
maxCapacityrequired | integer | At least 1. At most 9999 |
descriptionoptional | string | null | Up to 280 characters |
locationoptional | string | null | Up to 120 characters |
callGraceMinutesrequired | integer | At least 0. At most 120 |
appointmentGraceBeforeMinutesrequired | integer | At least 0. At most 240 |
maxLateArrivalMinutesrequired | integer | At least 0. At most 240 |
autoNoShowEnabledrequired | boolean |
| Field | Type | Notes |
|---|---|---|
idrequired | string | |
namerequired | string | |
coderequired | string | |
typerequired | enum | One of "walk_in", "appointment", "scheduled_walk_in" |
pausedrequired | boolean | |
waitingrequired | integer | |
avgServiceMinutesrequired | integer | |
maxCapacityrequired | integer | |
descriptionrequired | string | null | |
locationrequired | string | null | |
callGraceMinutesrequired | integer | |
appointmentGraceBeforeMinutesrequired | integer | |
maxLateArrivalMinutesrequired | integer | |
autoNoShowEnabledrequired | boolean |
curl
curl -X PUT "https://business.linemeup.in/api/v1/lines" \
-H "Authorization: Bearer $LINEMEUP_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Vaccinations","code":"VAC","type":"walk_in","avgServiceMinutes":5,"maxCapacity":80,"description":"Walk in for a scheduled vaccine","location":"Ground floor, room 2","callGraceMinutes":5,"appointmentGraceBeforeMinutes":0,"maxLateArrivalMinutes":0,"autoNoShowEnabled":true}' Node
const res = await fetch("https://business.linemeup.in/api/v1/lines", {
method: "PUT",
headers: {
Authorization: `Bearer ${process.env.LINEMEUP_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"name": "Vaccinations",
"code": "VAC",
"type": "walk_in",
"avgServiceMinutes": 5,
"maxCapacity": 80,
"description": "Walk in for a scheduled vaccine",
"location": "Ground floor, room 2",
"callGraceMinutes": 5,
"appointmentGraceBeforeMinutes": 0,
"maxLateArrivalMinutes": 0,
"autoNoShowEnabled": true
}),
});
if (!res.ok) throw new Error(`Line Me Up answered ${res.status}`);
const answer = await res.json(); Python
import os
import requests
res = requests.put(
"https://business.linemeup.in/api/v1/lines",
headers={
"Authorization": f"Bearer {os.environ['LINEMEUP_API_KEY']}",
},
json={
"name": "Vaccinations",
"code": "VAC",
"type": "walk_in",
"avgServiceMinutes": 5,
"maxCapacity": 80,
"description": "Walk in for a scheduled vaccine",
"location": "Ground floor, room 2",
"callGraceMinutes": 5,
"appointmentGraceBeforeMinutes": 0,
"maxLateArrivalMinutes": 0,
"autoNoShowEnabled": True,
},
timeout=10,
)
res.raise_for_status()
answer = res.json() PHP
<?php
$ch = curl_init("https://business.linemeup.in/api/v1/lines");
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv("LINEMEUP_API_KEY"),
"Content-Type: application/json",
],
CURLOPT_POSTFIELDS => json_encode([
"name" => 'Vaccinations',
"code" => 'VAC',
"type" => 'walk_in',
"avgServiceMinutes" => 5,
"maxCapacity" => 80,
"description" => 'Walk in for a scheduled vaccine',
"location" => 'Ground floor, room 2',
"callGraceMinutes" => 5,
"appointmentGraceBeforeMinutes" => 0,
"maxLateArrivalMinutes" => 0,
"autoNoShowEnabled" => true,
]),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 10,
]);
$answer = json_decode(curl_exec($ch), true); {
"id": "line-0193f2a1-7c4e-7a10-9b2e-000000000003",
"name": "Vaccinations",
"code": "VAC",
"type": "walk_in",
"avgServiceMinutes": 5,
"maxCapacity": 80,
"description": "Walk in for a scheduled vaccine",
"location": "Ground floor, room 2",
"callGraceMinutes": 5,
"appointmentGraceBeforeMinutes": 0,
"maxLateArrivalMinutes": 0,
"autoNoShowEnabled": true,
"paused": false,
"waiting": 0
} Errors this can answer
-
401Not authenticated -
403The key lacks the permission for this route, or the plan does not include integrations -
404Not found — or outside this key's business, lines or desks -
409The visit, line or desk is not in a state that allows this -
422Validation failed -
429Rate limited — wait for the Retry-After header's seconds
Every error has the same body — see Errors.
GET /lines/{lineId} #
One line and its settings; 404 for a line this key may not see.
| Name | In | Type | Notes |
|---|---|---|---|
lineIdrequired | path | string |
| Field | Type | Notes |
|---|---|---|
idrequired | string | |
namerequired | string | |
coderequired | string | |
typerequired | enum | One of "walk_in", "appointment", "scheduled_walk_in" |
pausedrequired | boolean | |
waitingrequired | integer | |
avgServiceMinutesrequired | integer | |
maxCapacityrequired | integer | |
descriptionrequired | string | null | |
locationrequired | string | null | |
callGraceMinutesrequired | integer | |
appointmentGraceBeforeMinutesrequired | integer | |
maxLateArrivalMinutesrequired | integer | |
autoNoShowEnabledrequired | boolean |
curl
curl "https://business.linemeup.in/api/v1/lines/line-0193f2a1-7c4e-7a10-9b2e-000000000001" \
-H "Authorization: Bearer $LINEMEUP_API_KEY" Node
const res = await fetch("https://business.linemeup.in/api/v1/lines/line-0193f2a1-7c4e-7a10-9b2e-000000000001", {
headers: {
Authorization: `Bearer ${process.env.LINEMEUP_API_KEY}`,
},
});
if (!res.ok) throw new Error(`Line Me Up answered ${res.status}`);
const answer = await res.json(); Python
import os
import requests
res = requests.get(
"https://business.linemeup.in/api/v1/lines/line-0193f2a1-7c4e-7a10-9b2e-000000000001",
headers={
"Authorization": f"Bearer {os.environ['LINEMEUP_API_KEY']}",
},
timeout=10,
)
res.raise_for_status()
answer = res.json() PHP
<?php
$ch = curl_init("https://business.linemeup.in/api/v1/lines/line-0193f2a1-7c4e-7a10-9b2e-000000000001");
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv("LINEMEUP_API_KEY"),
],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 10,
]);
$answer = json_decode(curl_exec($ch), true); {
"id": "line-0193f2a1-7c4e-7a10-9b2e-000000000001",
"name": "General",
"code": "GEN",
"type": "walk_in",
"paused": false,
"waiting": 4,
"avgServiceMinutes": 10,
"maxCapacity": 60,
"description": "Walk-ins for a first visit",
"location": "Ground floor",
"callGraceMinutes": 5,
"appointmentGraceBeforeMinutes": 10,
"maxLateArrivalMinutes": 15,
"autoNoShowEnabled": true
} Errors this can answer
-
401Not authenticated -
403The key lacks the permission for this route, or the plan does not include integrations -
404Not found — or outside this key's business, lines or desks -
409The visit, line or desk is not in a state that allows this -
422Validation failed -
429Rate limited — wait for the Retry-After header's seconds
Every error has the same body — see Errors.
PUT /lines/{lineId} #
Replace a line's settings, every one said.
| Name | In | Type | Notes |
|---|---|---|---|
lineIdrequired | path | string |
| Field | Type | Notes |
|---|---|---|
namerequired | string | At least 1 characters. Up to 60 characters |
codeoptional | string | |
typerequired | enum | One of "walk_in", "appointment", "scheduled_walk_in" |
avgServiceMinutesrequired | integer | At least 1. At most 720 |
maxCapacityrequired | integer | At least 1. At most 9999 |
descriptionoptional | string | null | Up to 280 characters |
locationoptional | string | null | Up to 120 characters |
callGraceMinutesrequired | integer | At least 0. At most 120 |
appointmentGraceBeforeMinutesrequired | integer | At least 0. At most 240 |
maxLateArrivalMinutesrequired | integer | At least 0. At most 240 |
autoNoShowEnabledrequired | boolean |
| Field | Type | Notes |
|---|---|---|
idrequired | string | |
namerequired | string | |
coderequired | string | |
typerequired | enum | One of "walk_in", "appointment", "scheduled_walk_in" |
pausedrequired | boolean | |
waitingrequired | integer | |
avgServiceMinutesrequired | integer | |
maxCapacityrequired | integer | |
descriptionrequired | string | null | |
locationrequired | string | null | |
callGraceMinutesrequired | integer | |
appointmentGraceBeforeMinutesrequired | integer | |
maxLateArrivalMinutesrequired | integer | |
autoNoShowEnabledrequired | boolean |
curl
curl -X PUT "https://business.linemeup.in/api/v1/lines/line-0193f2a1-7c4e-7a10-9b2e-000000000001" \
-H "Authorization: Bearer $LINEMEUP_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"General","code":"GEN","type":"walk_in","avgServiceMinutes":12,"maxCapacity":50,"description":"Walk-ins for a first visit","location":"Ground floor","callGraceMinutes":5,"appointmentGraceBeforeMinutes":10,"maxLateArrivalMinutes":15,"autoNoShowEnabled":true}' Node
const res = await fetch("https://business.linemeup.in/api/v1/lines/line-0193f2a1-7c4e-7a10-9b2e-000000000001", {
method: "PUT",
headers: {
Authorization: `Bearer ${process.env.LINEMEUP_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"name": "General",
"code": "GEN",
"type": "walk_in",
"avgServiceMinutes": 12,
"maxCapacity": 50,
"description": "Walk-ins for a first visit",
"location": "Ground floor",
"callGraceMinutes": 5,
"appointmentGraceBeforeMinutes": 10,
"maxLateArrivalMinutes": 15,
"autoNoShowEnabled": true
}),
});
if (!res.ok) throw new Error(`Line Me Up answered ${res.status}`);
const answer = await res.json(); Python
import os
import requests
res = requests.put(
"https://business.linemeup.in/api/v1/lines/line-0193f2a1-7c4e-7a10-9b2e-000000000001",
headers={
"Authorization": f"Bearer {os.environ['LINEMEUP_API_KEY']}",
},
json={
"name": "General",
"code": "GEN",
"type": "walk_in",
"avgServiceMinutes": 12,
"maxCapacity": 50,
"description": "Walk-ins for a first visit",
"location": "Ground floor",
"callGraceMinutes": 5,
"appointmentGraceBeforeMinutes": 10,
"maxLateArrivalMinutes": 15,
"autoNoShowEnabled": True,
},
timeout=10,
)
res.raise_for_status()
answer = res.json() PHP
<?php
$ch = curl_init("https://business.linemeup.in/api/v1/lines/line-0193f2a1-7c4e-7a10-9b2e-000000000001");
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv("LINEMEUP_API_KEY"),
"Content-Type: application/json",
],
CURLOPT_POSTFIELDS => json_encode([
"name" => 'General',
"code" => 'GEN',
"type" => 'walk_in',
"avgServiceMinutes" => 12,
"maxCapacity" => 50,
"description" => 'Walk-ins for a first visit',
"location" => 'Ground floor',
"callGraceMinutes" => 5,
"appointmentGraceBeforeMinutes" => 10,
"maxLateArrivalMinutes" => 15,
"autoNoShowEnabled" => true,
]),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 10,
]);
$answer = json_decode(curl_exec($ch), true); {
"id": "line-0193f2a1-7c4e-7a10-9b2e-000000000001",
"name": "General",
"code": "GEN",
"type": "walk_in",
"paused": false,
"waiting": 4,
"avgServiceMinutes": 12,
"maxCapacity": 50,
"description": "Walk-ins for a first visit",
"location": "Ground floor",
"callGraceMinutes": 5,
"appointmentGraceBeforeMinutes": 10,
"maxLateArrivalMinutes": 15,
"autoNoShowEnabled": true
} Errors this can answer
-
401Not authenticated -
403The key lacks the permission for this route, or the plan does not include integrations -
404Not found — or outside this key's business, lines or desks -
409The visit, line or desk is not in a state that allows this -
422Validation failed -
429Rate limited — wait for the Retry-After header's seconds
Every error has the same body — see Errors.
POST /lines/{lineId}/pause #
Pause a line: nobody new joins it until it is resumed.
| Name | In | Type | Notes |
|---|---|---|---|
lineIdrequired | path | string |
| Field | Type | Notes |
|---|---|---|
idrequired | string | |
namerequired | string | |
coderequired | string | |
typerequired | enum | One of "walk_in", "appointment", "scheduled_walk_in" |
pausedrequired | boolean | |
waitingrequired | integer | |
avgServiceMinutesrequired | integer | |
maxCapacityrequired | integer | |
descriptionrequired | string | null | |
locationrequired | string | null | |
callGraceMinutesrequired | integer | |
appointmentGraceBeforeMinutesrequired | integer | |
maxLateArrivalMinutesrequired | integer | |
autoNoShowEnabledrequired | boolean |
curl
curl -X POST "https://business.linemeup.in/api/v1/lines/line-0193f2a1-7c4e-7a10-9b2e-000000000001/pause" \
-H "Authorization: Bearer $LINEMEUP_API_KEY" \
-H "Content-Type: application/json" \
-d '{}' Node
const res = await fetch("https://business.linemeup.in/api/v1/lines/line-0193f2a1-7c4e-7a10-9b2e-000000000001/pause", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.LINEMEUP_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({}),
});
if (!res.ok) throw new Error(`Line Me Up answered ${res.status}`);
const answer = await res.json(); Python
import os
import requests
res = requests.post(
"https://business.linemeup.in/api/v1/lines/line-0193f2a1-7c4e-7a10-9b2e-000000000001/pause",
headers={
"Authorization": f"Bearer {os.environ['LINEMEUP_API_KEY']}",
},
json={},
timeout=10,
)
res.raise_for_status()
answer = res.json() PHP
<?php
$ch = curl_init("https://business.linemeup.in/api/v1/lines/line-0193f2a1-7c4e-7a10-9b2e-000000000001/pause");
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv("LINEMEUP_API_KEY"),
"Content-Type: application/json",
],
CURLOPT_POSTFIELDS => json_encode(new stdClass()),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 10,
]);
$answer = json_decode(curl_exec($ch), true); {
"id": "line-0193f2a1-7c4e-7a10-9b2e-000000000001",
"name": "General",
"code": "GEN",
"type": "walk_in",
"paused": true,
"waiting": 4,
"avgServiceMinutes": 10,
"maxCapacity": 60,
"description": "Walk-ins for a first visit",
"location": "Ground floor",
"callGraceMinutes": 5,
"appointmentGraceBeforeMinutes": 10,
"maxLateArrivalMinutes": 15,
"autoNoShowEnabled": true
} Errors this can answer
-
401Not authenticated -
403The key lacks the permission for this route, or the plan does not include integrations -
404Not found — or outside this key's business, lines or desks -
409The visit, line or desk is not in a state that allows this -
422Validation failed -
429Rate limited — wait for the Retry-After header's seconds
Every error has the same body — see Errors.
POST /lines/{lineId}/resume #
Resume a paused line.
| Name | In | Type | Notes |
|---|---|---|---|
lineIdrequired | path | string |
| Field | Type | Notes |
|---|---|---|
idrequired | string | |
namerequired | string | |
coderequired | string | |
typerequired | enum | One of "walk_in", "appointment", "scheduled_walk_in" |
pausedrequired | boolean | |
waitingrequired | integer | |
avgServiceMinutesrequired | integer | |
maxCapacityrequired | integer | |
descriptionrequired | string | null | |
locationrequired | string | null | |
callGraceMinutesrequired | integer | |
appointmentGraceBeforeMinutesrequired | integer | |
maxLateArrivalMinutesrequired | integer | |
autoNoShowEnabledrequired | boolean |
curl
curl -X POST "https://business.linemeup.in/api/v1/lines/line-0193f2a1-7c4e-7a10-9b2e-000000000001/resume" \
-H "Authorization: Bearer $LINEMEUP_API_KEY" \
-H "Content-Type: application/json" \
-d '{}' Node
const res = await fetch("https://business.linemeup.in/api/v1/lines/line-0193f2a1-7c4e-7a10-9b2e-000000000001/resume", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.LINEMEUP_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({}),
});
if (!res.ok) throw new Error(`Line Me Up answered ${res.status}`);
const answer = await res.json(); Python
import os
import requests
res = requests.post(
"https://business.linemeup.in/api/v1/lines/line-0193f2a1-7c4e-7a10-9b2e-000000000001/resume",
headers={
"Authorization": f"Bearer {os.environ['LINEMEUP_API_KEY']}",
},
json={},
timeout=10,
)
res.raise_for_status()
answer = res.json() PHP
<?php
$ch = curl_init("https://business.linemeup.in/api/v1/lines/line-0193f2a1-7c4e-7a10-9b2e-000000000001/resume");
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv("LINEMEUP_API_KEY"),
"Content-Type: application/json",
],
CURLOPT_POSTFIELDS => json_encode(new stdClass()),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 10,
]);
$answer = json_decode(curl_exec($ch), true); {
"id": "line-0193f2a1-7c4e-7a10-9b2e-000000000001",
"name": "General",
"code": "GEN",
"type": "walk_in",
"paused": false,
"waiting": 4,
"avgServiceMinutes": 10,
"maxCapacity": 60,
"description": "Walk-ins for a first visit",
"location": "Ground floor",
"callGraceMinutes": 5,
"appointmentGraceBeforeMinutes": 10,
"maxLateArrivalMinutes": 15,
"autoNoShowEnabled": true
} Errors this can answer
-
401Not authenticated -
403The key lacks the permission for this route, or the plan does not include integrations -
404Not found — or outside this key's business, lines or desks -
409The visit, line or desk is not in a state that allows this -
422Validation failed -
429Rate limited — wait for the Retry-After header's seconds
Every error has the same body — see Errors.
Services#
The fields and recipes are on the Services page.
GET /services #
The menu — every service on the lines this key may see.
| Field | Type | Notes |
|---|---|---|
datarequired | array of object | |
data[].idrequired | string | |
data[].namerequired | string | |
data[].parentIdrequired | string | null | |
data[].lineIdrequired | string | |
data[].selectablerequired | boolean | |
data[].activerequired | boolean | |
data[].durationMinutesrequired | integer | null | |
data[].pricePaiserequired | integer | null |
curl
curl "https://business.linemeup.in/api/v1/services" \
-H "Authorization: Bearer $LINEMEUP_API_KEY" Node
const res = await fetch("https://business.linemeup.in/api/v1/services", {
headers: {
Authorization: `Bearer ${process.env.LINEMEUP_API_KEY}`,
},
});
if (!res.ok) throw new Error(`Line Me Up answered ${res.status}`);
const answer = await res.json(); Python
import os
import requests
res = requests.get(
"https://business.linemeup.in/api/v1/services",
headers={
"Authorization": f"Bearer {os.environ['LINEMEUP_API_KEY']}",
},
timeout=10,
)
res.raise_for_status()
answer = res.json() PHP
<?php
$ch = curl_init("https://business.linemeup.in/api/v1/services");
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv("LINEMEUP_API_KEY"),
],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 10,
]);
$answer = json_decode(curl_exec($ch), true); {
"data": [
{
"id": "svc-0193f2a1-7c4e-7a10-9b2e-000000000001",
"name": "Consultations",
"parentId": null,
"lineId": "line-0193f2a1-7c4e-7a10-9b2e-000000000001",
"selectable": false,
"active": true,
"durationMinutes": null,
"pricePaise": null
},
{
"id": "svc-0193f2a1-7c4e-7a10-9b2e-000000000002",
"name": "General consultation",
"parentId": "svc-0193f2a1-7c4e-7a10-9b2e-000000000001",
"lineId": "line-0193f2a1-7c4e-7a10-9b2e-000000000001",
"selectable": true,
"active": true,
"durationMinutes": 15,
"pricePaise": 50000
},
{
"id": "svc-0193f2a1-7c4e-7a10-9b2e-000000000003",
"name": "Chest X-ray",
"parentId": null,
"lineId": "line-0193f2a1-7c4e-7a10-9b2e-000000000002",
"selectable": true,
"active": true,
"durationMinutes": 20,
"pricePaise": 120000
}
]
} Errors this can answer
-
401Not authenticated -
403The key lacks the permission for this route, or the plan does not include integrations -
404Not found — or outside this key's business, lines or desks -
409The visit, line or desk is not in a state that allows this -
422Validation failed -
429Rate limited — wait for the Retry-After header's seconds
Every error has the same body — see Errors.
Desks#
The fields and recipes are on the Desks page.
GET /desks #
Every desk this key may see, and what state each is in.
| Field | Type | Notes |
|---|---|---|
datarequired | array of object | |
data[].idrequired | string | |
data[].namerequired | string | |
data[].typerequired | enum | One of "person", "counter" |
data[].publicLabelrequired | string | null | |
data[].activerequired | boolean | |
data[].staterequired | enum | One of "offline", "available", "called", "busy", "break" |
data[].lineIdsrequired | array of string |
curl
curl "https://business.linemeup.in/api/v1/desks" \
-H "Authorization: Bearer $LINEMEUP_API_KEY" Node
const res = await fetch("https://business.linemeup.in/api/v1/desks", {
headers: {
Authorization: `Bearer ${process.env.LINEMEUP_API_KEY}`,
},
});
if (!res.ok) throw new Error(`Line Me Up answered ${res.status}`);
const answer = await res.json(); Python
import os
import requests
res = requests.get(
"https://business.linemeup.in/api/v1/desks",
headers={
"Authorization": f"Bearer {os.environ['LINEMEUP_API_KEY']}",
},
timeout=10,
)
res.raise_for_status()
answer = res.json() PHP
<?php
$ch = curl_init("https://business.linemeup.in/api/v1/desks");
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv("LINEMEUP_API_KEY"),
],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 10,
]);
$answer = json_decode(curl_exec($ch), true); {
"data": [
{
"id": "sta-0193f2a1-7c4e-7a10-9b2e-000000000001",
"name": "Dr Mehta",
"type": "person",
"publicLabel": "Room 1",
"active": true,
"state": "available",
"lineIds": [
"line-0193f2a1-7c4e-7a10-9b2e-000000000001"
]
},
{
"id": "sta-0193f2a1-7c4e-7a10-9b2e-000000000002",
"name": "X-ray counter",
"type": "counter",
"publicLabel": "Counter 2",
"active": true,
"state": "busy",
"lineIds": [
"line-0193f2a1-7c4e-7a10-9b2e-000000000002"
]
}
]
} Errors this can answer
-
401Not authenticated -
403The key lacks the permission for this route, or the plan does not include integrations -
404Not found — or outside this key's business, lines or desks -
409The visit, line or desk is not in a state that allows this -
422Validation failed -
429Rate limited — wait for the Retry-After header's seconds
Every error has the same body — see Errors.
POST /desks/{deskId}/call-next #
Call the next visit to a desk, as its own Call next would.
| Name | In | Type | Notes |
|---|---|---|---|
deskIdrequired | path | string |
| Field | Type | Notes |
|---|---|---|
visitrequired | object | null | |
visit.idrequired | string | |
visit.journeyIdrequired | string | |
visit.tokenrequired | string | |
visit.lineIdrequired | string | |
visit.statusrequired | enum | One of "booked", "queued", "called", "in_progress", "completed", "cancelled", "no_show" |
visit.bookingTyperequired | enum | One of "walk_in", "appointment", "scheduled_walk_in" |
visit.priorityrequired | boolean | |
visit.noterequired | string | null | |
visit.customerrequired | object | |
visit.customer.namerequired | string | null | |
visit.customer.phonerequired | string | null | |
visit.servicesrequired | array of object | |
visit.services[].idrequired | string | |
visit.services[].namerequired | string | |
visit.deskIdrequired | string | null | |
visit.positionrequired | integer | null | |
visit.slotAtrequired | string (date-time) | null | |
visit.createdAtrequired | string (date-time) | |
visit.calledAtrequired | string (date-time) | null | |
visit.startedAtrequired | string (date-time) | null | |
visit.endedAtrequired | string (date-time) | null | |
visit.updatedAtrequired | string (date-time) | |
waitingrequired | integer | |
heldrequired | integer |
curl
curl -X POST "https://business.linemeup.in/api/v1/desks/sta-0193f2a1-7c4e-7a10-9b2e-000000000001/call-next" \
-H "Authorization: Bearer $LINEMEUP_API_KEY" \
-H "Content-Type: application/json" \
-d '{}' Node
const res = await fetch("https://business.linemeup.in/api/v1/desks/sta-0193f2a1-7c4e-7a10-9b2e-000000000001/call-next", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.LINEMEUP_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({}),
});
if (!res.ok) throw new Error(`Line Me Up answered ${res.status}`);
const answer = await res.json(); Python
import os
import requests
res = requests.post(
"https://business.linemeup.in/api/v1/desks/sta-0193f2a1-7c4e-7a10-9b2e-000000000001/call-next",
headers={
"Authorization": f"Bearer {os.environ['LINEMEUP_API_KEY']}",
},
json={},
timeout=10,
)
res.raise_for_status()
answer = res.json() PHP
<?php
$ch = curl_init("https://business.linemeup.in/api/v1/desks/sta-0193f2a1-7c4e-7a10-9b2e-000000000001/call-next");
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv("LINEMEUP_API_KEY"),
"Content-Type: application/json",
],
CURLOPT_POSTFIELDS => json_encode(new stdClass()),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 10,
]);
$answer = json_decode(curl_exec($ch), true); {
"visit": {
"id": "job-0193f2a1-7c4e-7a10-9b2e-000000000001",
"journeyId": "jny-0193f2a1-7c4e-7a10-9b2e-000000000001",
"token": "GEN-20261030-014",
"lineId": "line-0193f2a1-7c4e-7a10-9b2e-000000000001",
"status": "called",
"bookingType": "walk_in",
"priority": false,
"note": "First visit",
"customer": {
"name": "Asha Rao",
"phone": "+919000000001"
},
"services": [
{
"id": "svc-0193f2a1-7c4e-7a10-9b2e-000000000002",
"name": "General consultation"
}
],
"deskId": "sta-0193f2a1-7c4e-7a10-9b2e-000000000001",
"position": null,
"slotAt": null,
"createdAt": "2026-10-30T04:12:00.000Z",
"calledAt": "2026-10-30T04:31:00.000Z",
"startedAt": null,
"endedAt": null,
"updatedAt": "2026-10-30T04:31:00.000Z"
},
"waiting": 3,
"held": 0
} Errors this can answer
-
401Not authenticated -
403The key lacks the permission for this route, or the plan does not include integrations -
404Not found — or outside this key's business, lines or desks -
409The visit, line or desk is not in a state that allows this -
422Validation failed -
429Rate limited — wait for the Retry-After header's seconds
Every error has the same body — see Errors.
PUT /desks/{deskId}/status #
Start a desk's shift, put it on a break, or end it.
| Name | In | Type | Notes |
|---|---|---|---|
deskIdrequired | path | string |
| Field | Type | Notes |
|---|---|---|
staterequired | enum | One of "available", "break", "offline" |
reasonoptional | enum | One of "theatre", "rounds", "emergency_call", "break", "meal", "away", "other" |
backAtoptional | string (date-time) |
| Field | Type | Notes |
|---|---|---|
idrequired | string | |
namerequired | string | |
typerequired | enum | One of "person", "counter" |
publicLabelrequired | string | null | |
activerequired | boolean | |
staterequired | enum | One of "offline", "available", "called", "busy", "break" |
lineIdsrequired | array of string |
curl
curl -X PUT "https://business.linemeup.in/api/v1/desks/sta-0193f2a1-7c4e-7a10-9b2e-000000000001/status" \
-H "Authorization: Bearer $LINEMEUP_API_KEY" \
-H "Content-Type: application/json" \
-d '{"state":"available"}' Node
const res = await fetch("https://business.linemeup.in/api/v1/desks/sta-0193f2a1-7c4e-7a10-9b2e-000000000001/status", {
method: "PUT",
headers: {
Authorization: `Bearer ${process.env.LINEMEUP_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"state": "available"
}),
});
if (!res.ok) throw new Error(`Line Me Up answered ${res.status}`);
const answer = await res.json(); Python
import os
import requests
res = requests.put(
"https://business.linemeup.in/api/v1/desks/sta-0193f2a1-7c4e-7a10-9b2e-000000000001/status",
headers={
"Authorization": f"Bearer {os.environ['LINEMEUP_API_KEY']}",
},
json={
"state": "available",
},
timeout=10,
)
res.raise_for_status()
answer = res.json() PHP
<?php
$ch = curl_init("https://business.linemeup.in/api/v1/desks/sta-0193f2a1-7c4e-7a10-9b2e-000000000001/status");
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv("LINEMEUP_API_KEY"),
"Content-Type: application/json",
],
CURLOPT_POSTFIELDS => json_encode([
"state" => 'available',
]),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 10,
]);
$answer = json_decode(curl_exec($ch), true); {
"id": "sta-0193f2a1-7c4e-7a10-9b2e-000000000001",
"name": "Dr Mehta",
"type": "person",
"publicLabel": "Room 1",
"active": true,
"state": "available",
"lineIds": [
"line-0193f2a1-7c4e-7a10-9b2e-000000000001"
]
} Errors this can answer
-
401Not authenticated -
403The key lacks the permission for this route, or the plan does not include integrations -
404Not found — or outside this key's business, lines or desks -
409The visit, line or desk is not in a state that allows this -
422Validation failed -
429Rate limited — wait for the Retry-After header's seconds
Every error has the same body — see Errors.
Visits#
The fields and recipes are on the Visits page.
GET /visits #
Visits, newest first, by cursor — filtered by status, line, day or change.
| Name | In | Type | Notes |
|---|---|---|---|
cursoroptional | query | string | |
limitoptional | query | integer | |
statusoptional | query | array of enum | |
lineIdoptional | query | array of string | |
fromoptional | query | string | |
tooptional | query | string | |
updatedSinceoptional | query | string (date-time) |
| Field | Type | Notes |
|---|---|---|
datarequired | array of object | |
data[].idrequired | string | |
data[].journeyIdrequired | string | |
data[].tokenrequired | string | |
data[].lineIdrequired | string | |
data[].statusrequired | enum | One of "booked", "queued", "called", "in_progress", "completed", "cancelled", "no_show" |
data[].bookingTyperequired | enum | One of "walk_in", "appointment", "scheduled_walk_in" |
data[].priorityrequired | boolean | |
data[].noterequired | string | null | |
data[].customerrequired | object | |
data[].customer.namerequired | string | null | |
data[].customer.phonerequired | string | null | |
data[].servicesrequired | array of object | |
data[].services[].idrequired | string | |
data[].services[].namerequired | string | |
data[].deskIdrequired | string | null | |
data[].positionrequired | integer | null | |
data[].slotAtrequired | string (date-time) | null | |
data[].createdAtrequired | string (date-time) | |
data[].calledAtrequired | string (date-time) | null | |
data[].startedAtrequired | string (date-time) | null | |
data[].endedAtrequired | string (date-time) | null | |
data[].updatedAtrequired | string (date-time) | |
nextCursorrequired | string | null |
curl
curl "https://business.linemeup.in/api/v1/visits?lineId=line-0193f2a1-7c4e-7a10-9b2e-000000000001&from=2026-10-30&to=2026-10-30&limit=2" \
-H "Authorization: Bearer $LINEMEUP_API_KEY" Node
const res = await fetch("https://business.linemeup.in/api/v1/visits?lineId=line-0193f2a1-7c4e-7a10-9b2e-000000000001&from=2026-10-30&to=2026-10-30&limit=2", {
headers: {
Authorization: `Bearer ${process.env.LINEMEUP_API_KEY}`,
},
});
if (!res.ok) throw new Error(`Line Me Up answered ${res.status}`);
const answer = await res.json(); Python
import os
import requests
res = requests.get(
"https://business.linemeup.in/api/v1/visits?lineId=line-0193f2a1-7c4e-7a10-9b2e-000000000001&from=2026-10-30&to=2026-10-30&limit=2",
headers={
"Authorization": f"Bearer {os.environ['LINEMEUP_API_KEY']}",
},
timeout=10,
)
res.raise_for_status()
answer = res.json() PHP
<?php
$ch = curl_init("https://business.linemeup.in/api/v1/visits?lineId=line-0193f2a1-7c4e-7a10-9b2e-000000000001&from=2026-10-30&to=2026-10-30&limit=2");
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv("LINEMEUP_API_KEY"),
],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 10,
]);
$answer = json_decode(curl_exec($ch), true); {
"data": [
{
"id": "job-0193f2a1-7c4e-7a10-9b2e-000000000001",
"journeyId": "jny-0193f2a1-7c4e-7a10-9b2e-000000000001",
"token": "GEN-20261030-014",
"lineId": "line-0193f2a1-7c4e-7a10-9b2e-000000000001",
"status": "queued",
"bookingType": "walk_in",
"priority": false,
"note": "First visit",
"customer": {
"name": "Asha Rao",
"phone": "+919000000001"
},
"services": [
{
"id": "svc-0193f2a1-7c4e-7a10-9b2e-000000000002",
"name": "General consultation"
}
],
"deskId": null,
"position": 3,
"slotAt": null,
"createdAt": "2026-10-30T04:12:00.000Z",
"calledAt": null,
"startedAt": null,
"endedAt": null,
"updatedAt": "2026-10-30T04:12:00.000Z"
},
{
"id": "job-0193f2a1-7c4e-7a10-9b2e-000000000004",
"journeyId": "jny-0193f2a1-7c4e-7a10-9b2e-000000000004",
"token": "GEN-20261030-009",
"lineId": "line-0193f2a1-7c4e-7a10-9b2e-000000000001",
"status": "completed",
"bookingType": "walk_in",
"priority": false,
"note": null,
"customer": {
"name": null,
"phone": null
},
"services": [
{
"id": "svc-0193f2a1-7c4e-7a10-9b2e-000000000002",
"name": "General consultation"
}
],
"deskId": "sta-0193f2a1-7c4e-7a10-9b2e-000000000001",
"position": null,
"slotAt": null,
"createdAt": "2026-10-30T03:40:00.000Z",
"calledAt": "2026-10-30T03:58:00.000Z",
"startedAt": "2026-10-30T03:59:00.000Z",
"endedAt": "2026-10-30T04:10:00.000Z",
"updatedAt": "2026-10-30T04:10:00.000Z"
}
],
"nextCursor": "MjAyNi0xMC0yNVQwNDoxMDowMC4wMDAwMDBafGpvYi0wMDA0"
} Errors this can answer
-
401Not authenticated -
403The key lacks the permission for this route, or the plan does not include integrations -
404Not found — or outside this key's business, lines or desks -
409The visit, line or desk is not in a state that allows this -
422Validation failed -
429Rate limited — wait for the Retry-After header's seconds
Every error has the same body — see Errors.
POST /visits #
Add a walk-in on a line or for services; honours Idempotency-Key.
| Name | In | Type | Notes |
|---|---|---|---|
Idempotency-Keyoptional | header | string | Any string up to 255 characters. The same key within 24 hours returns the first answer instead of adding a second visit. |
| Field | Type | Notes |
|---|---|---|
lineIdoptional | string | At least 1 characters. Up to 64 characters |
serviceIdsoptional | array of string | At least 1 items. Up to 20 items |
customeroptional | object | |
customer.nameoptional | string | null | At least 1 characters. Up to 80 characters |
customer.phoneoptional | string | null | At least 3 characters. Up to 24 characters |
noteoptional | string | null | Up to 140 characters |
priorityoptional | boolean | |
referenceoptional | string | null | At least 1 characters. Up to 40 characters |
consentoptional | boolean |
| Field | Type | Notes |
|---|---|---|
datarequired | array of object | At least 1 items |
data[].idrequired | string | |
data[].journeyIdrequired | string | |
data[].tokenrequired | string | |
data[].lineIdrequired | string | |
data[].statusrequired | enum | One of "booked", "queued", "called", "in_progress", "completed", "cancelled", "no_show" |
data[].bookingTyperequired | enum | One of "walk_in", "appointment", "scheduled_walk_in" |
data[].priorityrequired | boolean | |
data[].noterequired | string | null | |
data[].customerrequired | object | |
data[].customer.namerequired | string | null | |
data[].customer.phonerequired | string | null | |
data[].servicesrequired | array of object | |
data[].services[].idrequired | string | |
data[].services[].namerequired | string | |
data[].deskIdrequired | string | null | |
data[].positionrequired | integer | null | |
data[].slotAtrequired | string (date-time) | null | |
data[].createdAtrequired | string (date-time) | |
data[].calledAtrequired | string (date-time) | null | |
data[].startedAtrequired | string (date-time) | null | |
data[].endedAtrequired | string (date-time) | null | |
data[].updatedAtrequired | string (date-time) |
curl
curl -X POST "https://business.linemeup.in/api/v1/visits" \
-H "Authorization: Bearer $LINEMEUP_API_KEY" \
-H "Idempotency-Key: crm-visit-1042" \
-H "Content-Type: application/json" \
-d '{"lineId":"line-0193f2a1-7c4e-7a10-9b2e-000000000001","customer":{"name":"Asha Rao","phone":"+919000000001"},"note":"First visit","reference":"CRM-1042","consent":true}' Node
const res = await fetch("https://business.linemeup.in/api/v1/visits", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.LINEMEUP_API_KEY}`,
"Idempotency-Key": "crm-visit-1042",
"Content-Type": "application/json",
},
body: JSON.stringify({
"lineId": "line-0193f2a1-7c4e-7a10-9b2e-000000000001",
"customer": {
"name": "Asha Rao",
"phone": "+919000000001"
},
"note": "First visit",
"reference": "CRM-1042",
"consent": true
}),
});
if (!res.ok) throw new Error(`Line Me Up answered ${res.status}`);
const answer = await res.json(); Python
import os
import requests
res = requests.post(
"https://business.linemeup.in/api/v1/visits",
headers={
"Authorization": f"Bearer {os.environ['LINEMEUP_API_KEY']}",
"Idempotency-Key": "crm-visit-1042",
},
json={
"lineId": "line-0193f2a1-7c4e-7a10-9b2e-000000000001",
"customer": {
"name": "Asha Rao",
"phone": "+919000000001",
},
"note": "First visit",
"reference": "CRM-1042",
"consent": True,
},
timeout=10,
)
res.raise_for_status()
answer = res.json() PHP
<?php
$ch = curl_init("https://business.linemeup.in/api/v1/visits");
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv("LINEMEUP_API_KEY"),
"Idempotency-Key: crm-visit-1042",
"Content-Type: application/json",
],
CURLOPT_POSTFIELDS => json_encode([
"lineId" => 'line-0193f2a1-7c4e-7a10-9b2e-000000000001',
"customer" => [
"name" => 'Asha Rao',
"phone" => '+919000000001',
],
"note" => 'First visit',
"reference" => 'CRM-1042',
"consent" => true,
]),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 10,
]);
$answer = json_decode(curl_exec($ch), true); {
"data": [
{
"id": "job-0193f2a1-7c4e-7a10-9b2e-000000000001",
"journeyId": "jny-0193f2a1-7c4e-7a10-9b2e-000000000001",
"token": "GEN-20261030-014",
"lineId": "line-0193f2a1-7c4e-7a10-9b2e-000000000001",
"status": "queued",
"bookingType": "walk_in",
"priority": false,
"note": "First visit",
"customer": {
"name": "Asha Rao",
"phone": "+919000000001"
},
"services": [
{
"id": "svc-0193f2a1-7c4e-7a10-9b2e-000000000002",
"name": "General consultation"
}
],
"deskId": null,
"position": 3,
"slotAt": null,
"createdAt": "2026-10-30T04:12:00.000Z",
"calledAt": null,
"startedAt": null,
"endedAt": null,
"updatedAt": "2026-10-30T04:12:00.000Z"
}
]
} Errors this can answer
-
401Not authenticated -
403The key lacks the permission for this route, or the plan does not include integrations -
404Not found — or outside this key's business, lines or desks -
409The visit, line or desk is not in a state that allows this -
422Validation failed -
429Rate limited — wait for the Retry-After header's seconds
Every error has the same body — see Errors.
GET /visits/{visitId} #
One visit, with its customer, services, desk and times.
| Name | In | Type | Notes |
|---|---|---|---|
visitIdrequired | path | string |
| Field | Type | Notes |
|---|---|---|
idrequired | string | |
journeyIdrequired | string | |
tokenrequired | string | |
lineIdrequired | string | |
statusrequired | enum | One of "booked", "queued", "called", "in_progress", "completed", "cancelled", "no_show" |
bookingTyperequired | enum | One of "walk_in", "appointment", "scheduled_walk_in" |
priorityrequired | boolean | |
noterequired | string | null | |
customerrequired | object | |
customer.namerequired | string | null | |
customer.phonerequired | string | null | |
servicesrequired | array of object | |
services[].idrequired | string | |
services[].namerequired | string | |
deskIdrequired | string | null | |
positionrequired | integer | null | |
slotAtrequired | string (date-time) | null | |
createdAtrequired | string (date-time) | |
calledAtrequired | string (date-time) | null | |
startedAtrequired | string (date-time) | null | |
endedAtrequired | string (date-time) | null | |
updatedAtrequired | string (date-time) |
curl
curl "https://business.linemeup.in/api/v1/visits/job-0193f2a1-7c4e-7a10-9b2e-000000000001" \
-H "Authorization: Bearer $LINEMEUP_API_KEY" Node
const res = await fetch("https://business.linemeup.in/api/v1/visits/job-0193f2a1-7c4e-7a10-9b2e-000000000001", {
headers: {
Authorization: `Bearer ${process.env.LINEMEUP_API_KEY}`,
},
});
if (!res.ok) throw new Error(`Line Me Up answered ${res.status}`);
const answer = await res.json(); Python
import os
import requests
res = requests.get(
"https://business.linemeup.in/api/v1/visits/job-0193f2a1-7c4e-7a10-9b2e-000000000001",
headers={
"Authorization": f"Bearer {os.environ['LINEMEUP_API_KEY']}",
},
timeout=10,
)
res.raise_for_status()
answer = res.json() PHP
<?php
$ch = curl_init("https://business.linemeup.in/api/v1/visits/job-0193f2a1-7c4e-7a10-9b2e-000000000001");
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv("LINEMEUP_API_KEY"),
],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 10,
]);
$answer = json_decode(curl_exec($ch), true); {
"id": "job-0193f2a1-7c4e-7a10-9b2e-000000000001",
"journeyId": "jny-0193f2a1-7c4e-7a10-9b2e-000000000001",
"token": "GEN-20261030-014",
"lineId": "line-0193f2a1-7c4e-7a10-9b2e-000000000001",
"status": "queued",
"bookingType": "walk_in",
"priority": false,
"note": "First visit",
"customer": {
"name": "Asha Rao",
"phone": "+919000000001"
},
"services": [
{
"id": "svc-0193f2a1-7c4e-7a10-9b2e-000000000002",
"name": "General consultation"
}
],
"deskId": null,
"position": 3,
"slotAt": null,
"createdAt": "2026-10-30T04:12:00.000Z",
"calledAt": null,
"startedAt": null,
"endedAt": null,
"updatedAt": "2026-10-30T04:12:00.000Z"
} Errors this can answer
-
401Not authenticated -
403The key lacks the permission for this route, or the plan does not include integrations -
404Not found — or outside this key's business, lines or desks -
409The visit, line or desk is not in a state that allows this -
422Validation failed -
429Rate limited — wait for the Retry-After header's seconds
Every error has the same body — see Errors.
PATCH /visits/{visitId} #
Change a visit's urgency or its note.
| Name | In | Type | Notes |
|---|---|---|---|
visitIdrequired | path | string |
| Field | Type | Notes |
|---|---|---|
priorityoptional | boolean | |
noteoptional | string | null | Up to 140 characters |
| Field | Type | Notes |
|---|---|---|
idrequired | string | |
journeyIdrequired | string | |
tokenrequired | string | |
lineIdrequired | string | |
statusrequired | enum | One of "booked", "queued", "called", "in_progress", "completed", "cancelled", "no_show" |
bookingTyperequired | enum | One of "walk_in", "appointment", "scheduled_walk_in" |
priorityrequired | boolean | |
noterequired | string | null | |
customerrequired | object | |
customer.namerequired | string | null | |
customer.phonerequired | string | null | |
servicesrequired | array of object | |
services[].idrequired | string | |
services[].namerequired | string | |
deskIdrequired | string | null | |
positionrequired | integer | null | |
slotAtrequired | string (date-time) | null | |
createdAtrequired | string (date-time) | |
calledAtrequired | string (date-time) | null | |
startedAtrequired | string (date-time) | null | |
endedAtrequired | string (date-time) | null | |
updatedAtrequired | string (date-time) |
curl
curl -X PATCH "https://business.linemeup.in/api/v1/visits/job-0193f2a1-7c4e-7a10-9b2e-000000000001" \
-H "Authorization: Bearer $LINEMEUP_API_KEY" \
-H "Content-Type: application/json" \
-d '{"note":"Needs a wheelchair at the door"}' Node
const res = await fetch("https://business.linemeup.in/api/v1/visits/job-0193f2a1-7c4e-7a10-9b2e-000000000001", {
method: "PATCH",
headers: {
Authorization: `Bearer ${process.env.LINEMEUP_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"note": "Needs a wheelchair at the door"
}),
});
if (!res.ok) throw new Error(`Line Me Up answered ${res.status}`);
const answer = await res.json(); Python
import os
import requests
res = requests.patch(
"https://business.linemeup.in/api/v1/visits/job-0193f2a1-7c4e-7a10-9b2e-000000000001",
headers={
"Authorization": f"Bearer {os.environ['LINEMEUP_API_KEY']}",
},
json={
"note": "Needs a wheelchair at the door",
},
timeout=10,
)
res.raise_for_status()
answer = res.json() PHP
<?php
$ch = curl_init("https://business.linemeup.in/api/v1/visits/job-0193f2a1-7c4e-7a10-9b2e-000000000001");
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv("LINEMEUP_API_KEY"),
"Content-Type: application/json",
],
CURLOPT_POSTFIELDS => json_encode([
"note" => 'Needs a wheelchair at the door',
]),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 10,
]);
$answer = json_decode(curl_exec($ch), true); {
"id": "job-0193f2a1-7c4e-7a10-9b2e-000000000001",
"journeyId": "jny-0193f2a1-7c4e-7a10-9b2e-000000000001",
"token": "GEN-20261030-014",
"lineId": "line-0193f2a1-7c4e-7a10-9b2e-000000000001",
"status": "queued",
"bookingType": "walk_in",
"priority": false,
"note": "Needs a wheelchair at the door",
"customer": {
"name": "Asha Rao",
"phone": "+919000000001"
},
"services": [
{
"id": "svc-0193f2a1-7c4e-7a10-9b2e-000000000002",
"name": "General consultation"
}
],
"deskId": null,
"position": 3,
"slotAt": null,
"createdAt": "2026-10-30T04:12:00.000Z",
"calledAt": null,
"startedAt": null,
"endedAt": null,
"updatedAt": "2026-10-30T04:16:00.000Z"
} Errors this can answer
-
401Not authenticated -
403The key lacks the permission for this route, or the plan does not include integrations -
404Not found — or outside this key's business, lines or desks -
409The visit, line or desk is not in a state that allows this -
422Validation failed -
429Rate limited — wait for the Retry-After header's seconds
Every error has the same body — see Errors.
POST /visits/{visitId}/transitions #
Move a visit along one edge: call, serve, complete, no-show, cancel, put back.
| Name | In | Type | Notes |
|---|---|---|---|
visitIdrequired | path | string |
| Field | Type | Notes |
|---|---|---|
torequired | enum | One of "queued", "called", "in_progress", "completed", "no_show", "cancelled" |
deskIdoptional | string | At least 1 characters. Up to 64 characters |
| Field | Type | Notes |
|---|---|---|
idrequired | string | |
journeyIdrequired | string | |
tokenrequired | string | |
lineIdrequired | string | |
statusrequired | enum | One of "booked", "queued", "called", "in_progress", "completed", "cancelled", "no_show" |
bookingTyperequired | enum | One of "walk_in", "appointment", "scheduled_walk_in" |
priorityrequired | boolean | |
noterequired | string | null | |
customerrequired | object | |
customer.namerequired | string | null | |
customer.phonerequired | string | null | |
servicesrequired | array of object | |
services[].idrequired | string | |
services[].namerequired | string | |
deskIdrequired | string | null | |
positionrequired | integer | null | |
slotAtrequired | string (date-time) | null | |
createdAtrequired | string (date-time) | |
calledAtrequired | string (date-time) | null | |
startedAtrequired | string (date-time) | null | |
endedAtrequired | string (date-time) | null | |
updatedAtrequired | string (date-time) |
curl
curl -X POST "https://business.linemeup.in/api/v1/visits/job-0193f2a1-7c4e-7a10-9b2e-000000000001/transitions" \
-H "Authorization: Bearer $LINEMEUP_API_KEY" \
-H "Content-Type: application/json" \
-d '{"to":"called","deskId":"sta-0193f2a1-7c4e-7a10-9b2e-000000000001"}' Node
const res = await fetch("https://business.linemeup.in/api/v1/visits/job-0193f2a1-7c4e-7a10-9b2e-000000000001/transitions", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.LINEMEUP_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"to": "called",
"deskId": "sta-0193f2a1-7c4e-7a10-9b2e-000000000001"
}),
});
if (!res.ok) throw new Error(`Line Me Up answered ${res.status}`);
const answer = await res.json(); Python
import os
import requests
res = requests.post(
"https://business.linemeup.in/api/v1/visits/job-0193f2a1-7c4e-7a10-9b2e-000000000001/transitions",
headers={
"Authorization": f"Bearer {os.environ['LINEMEUP_API_KEY']}",
},
json={
"to": "called",
"deskId": "sta-0193f2a1-7c4e-7a10-9b2e-000000000001",
},
timeout=10,
)
res.raise_for_status()
answer = res.json() PHP
<?php
$ch = curl_init("https://business.linemeup.in/api/v1/visits/job-0193f2a1-7c4e-7a10-9b2e-000000000001/transitions");
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv("LINEMEUP_API_KEY"),
"Content-Type: application/json",
],
CURLOPT_POSTFIELDS => json_encode([
"to" => 'called',
"deskId" => 'sta-0193f2a1-7c4e-7a10-9b2e-000000000001',
]),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 10,
]);
$answer = json_decode(curl_exec($ch), true); {
"id": "job-0193f2a1-7c4e-7a10-9b2e-000000000001",
"journeyId": "jny-0193f2a1-7c4e-7a10-9b2e-000000000001",
"token": "GEN-20261030-014",
"lineId": "line-0193f2a1-7c4e-7a10-9b2e-000000000001",
"status": "called",
"bookingType": "walk_in",
"priority": false,
"note": "First visit",
"customer": {
"name": "Asha Rao",
"phone": "+919000000001"
},
"services": [
{
"id": "svc-0193f2a1-7c4e-7a10-9b2e-000000000002",
"name": "General consultation"
}
],
"deskId": "sta-0193f2a1-7c4e-7a10-9b2e-000000000001",
"position": null,
"slotAt": null,
"createdAt": "2026-10-30T04:12:00.000Z",
"calledAt": "2026-10-30T04:31:00.000Z",
"startedAt": null,
"endedAt": null,
"updatedAt": "2026-10-30T04:31:00.000Z"
} Errors this can answer
-
401Not authenticated -
403The key lacks the permission for this route, or the plan does not include integrations -
404Not found — or outside this key's business, lines or desks -
409The visit, line or desk is not in a state that allows this -
422Validation failed -
429Rate limited — wait for the Retry-After header's seconds
Every error has the same body — see Errors.
POST /visits/{visitId}/urgent #
Mark a waiting visit urgent — above everyone, and the desk alerted.
| Name | In | Type | Notes |
|---|---|---|---|
visitIdrequired | path | string |
| Field | Type | Notes |
|---|---|---|
idrequired | string | |
journeyIdrequired | string | |
tokenrequired | string | |
lineIdrequired | string | |
statusrequired | enum | One of "booked", "queued", "called", "in_progress", "completed", "cancelled", "no_show" |
bookingTyperequired | enum | One of "walk_in", "appointment", "scheduled_walk_in" |
priorityrequired | boolean | |
noterequired | string | null | |
customerrequired | object | |
customer.namerequired | string | null | |
customer.phonerequired | string | null | |
servicesrequired | array of object | |
services[].idrequired | string | |
services[].namerequired | string | |
deskIdrequired | string | null | |
positionrequired | integer | null | |
slotAtrequired | string (date-time) | null | |
createdAtrequired | string (date-time) | |
calledAtrequired | string (date-time) | null | |
startedAtrequired | string (date-time) | null | |
endedAtrequired | string (date-time) | null | |
updatedAtrequired | string (date-time) |
curl
curl -X POST "https://business.linemeup.in/api/v1/visits/job-0193f2a1-7c4e-7a10-9b2e-000000000001/urgent" \
-H "Authorization: Bearer $LINEMEUP_API_KEY" \
-H "Content-Type: application/json" \
-d '{}' Node
const res = await fetch("https://business.linemeup.in/api/v1/visits/job-0193f2a1-7c4e-7a10-9b2e-000000000001/urgent", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.LINEMEUP_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({}),
});
if (!res.ok) throw new Error(`Line Me Up answered ${res.status}`);
const answer = await res.json(); Python
import os
import requests
res = requests.post(
"https://business.linemeup.in/api/v1/visits/job-0193f2a1-7c4e-7a10-9b2e-000000000001/urgent",
headers={
"Authorization": f"Bearer {os.environ['LINEMEUP_API_KEY']}",
},
json={},
timeout=10,
)
res.raise_for_status()
answer = res.json() PHP
<?php
$ch = curl_init("https://business.linemeup.in/api/v1/visits/job-0193f2a1-7c4e-7a10-9b2e-000000000001/urgent");
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv("LINEMEUP_API_KEY"),
"Content-Type: application/json",
],
CURLOPT_POSTFIELDS => json_encode(new stdClass()),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 10,
]);
$answer = json_decode(curl_exec($ch), true); {
"id": "job-0193f2a1-7c4e-7a10-9b2e-000000000001",
"journeyId": "jny-0193f2a1-7c4e-7a10-9b2e-000000000001",
"token": "GEN-20261030-014",
"lineId": "line-0193f2a1-7c4e-7a10-9b2e-000000000001",
"status": "queued",
"bookingType": "walk_in",
"priority": true,
"note": "First visit",
"customer": {
"name": "Asha Rao",
"phone": "+919000000001"
},
"services": [
{
"id": "svc-0193f2a1-7c4e-7a10-9b2e-000000000002",
"name": "General consultation"
}
],
"deskId": null,
"position": 1,
"slotAt": null,
"createdAt": "2026-10-30T04:12:00.000Z",
"calledAt": null,
"startedAt": null,
"endedAt": null,
"updatedAt": "2026-10-30T04:15:00.000Z"
} Errors this can answer
-
401Not authenticated -
403The key lacks the permission for this route, or the plan does not include integrations -
404Not found — or outside this key's business, lines or desks -
409The visit, line or desk is not in a state that allows this -
422Validation failed -
429Rate limited — wait for the Retry-After header's seconds
Every error has the same body — see Errors.
Webhook events#
How to receive and verify them is on Webhooks.
EVENT visit.created #
| Field | Type | Notes |
|---|---|---|
idrequired | string | |
typerequired | string | Always "visit.created" |
apiVersionrequired | string | Always "v1" |
createdAtrequired | string (date-time) | |
businessIdrequired | string | |
testrequired | boolean | |
datarequired | object | |
data.visitrequired | object | |
data.visit.idrequired | string | |
data.visit.journeyIdrequired | string | |
data.visit.tokenrequired | string | |
data.visit.lineIdrequired | string | |
data.visit.statusrequired | enum | One of "booked", "queued", "called", "in_progress", "completed", "cancelled", "no_show" |
data.visit.bookingTyperequired | enum | One of "walk_in", "appointment", "scheduled_walk_in" |
data.visit.priorityrequired | boolean | |
data.visit.customerrequired | object | |
data.visit.customer.namerequired | string | null | |
data.visit.customer.phonerequired | string | null | |
data.visit.servicesrequired | array of object | |
data.visit.services[].idrequired | string | |
data.visit.services[].namerequired | string | |
data.visit.deskIdrequired | string | null | |
data.visit.positionrequired | integer | null | |
data.visit.slotAtrequired | string (date-time) | null | |
data.visit.createdAtrequired | string (date-time) | |
data.visit.calledAtrequired | string (date-time) | null | |
data.visit.startedAtrequired | string (date-time) | null | |
data.visit.endedAtrequired | string (date-time) | null | |
data.visit.updatedAtrequired | string (date-time) |
{
"id": "evt-0193f2a1-7c4e-7a10-9b2e-000000000001",
"type": "visit.created",
"apiVersion": "v1",
"createdAt": "2026-10-30T04:12:00.000Z",
"businessId": "bus-0193f2a1-7c4e-7a10-9b2e-000000000001",
"test": false,
"data": {
"visit": {
"id": "job-0193f2a1-7c4e-7a10-9b2e-000000000001",
"journeyId": "jny-0193f2a1-7c4e-7a10-9b2e-000000000001",
"token": "GEN-20261030-014",
"lineId": "line-0193f2a1-7c4e-7a10-9b2e-000000000001",
"status": "queued",
"bookingType": "walk_in",
"priority": false,
"customer": {
"name": "Asha Rao",
"phone": "+919000000001"
},
"services": [
{
"id": "svc-0193f2a1-7c4e-7a10-9b2e-000000000002",
"name": "General consultation"
}
],
"deskId": null,
"position": 3,
"slotAt": null,
"createdAt": "2026-10-30T04:12:00.000Z",
"calledAt": null,
"startedAt": null,
"endedAt": null,
"updatedAt": "2026-10-30T04:12:00.000Z"
}
}
} EVENT visit.status_changed #
| Field | Type | Notes |
|---|---|---|
idrequired | string | |
typerequired | string | Always "visit.status_changed" |
apiVersionrequired | string | Always "v1" |
createdAtrequired | string (date-time) | |
businessIdrequired | string | |
testrequired | boolean | |
datarequired | object | |
data.visitrequired | object | |
data.visit.idrequired | string | |
data.visit.journeyIdrequired | string | |
data.visit.tokenrequired | string | |
data.visit.lineIdrequired | string | |
data.visit.statusrequired | enum | One of "booked", "queued", "called", "in_progress", "completed", "cancelled", "no_show" |
data.visit.bookingTyperequired | enum | One of "walk_in", "appointment", "scheduled_walk_in" |
data.visit.priorityrequired | boolean | |
data.visit.customerrequired | object | |
data.visit.customer.namerequired | string | null | |
data.visit.customer.phonerequired | string | null | |
data.visit.servicesrequired | array of object | |
data.visit.services[].idrequired | string | |
data.visit.services[].namerequired | string | |
data.visit.deskIdrequired | string | null | |
data.visit.positionrequired | integer | null | |
data.visit.slotAtrequired | string (date-time) | null | |
data.visit.createdAtrequired | string (date-time) | |
data.visit.calledAtrequired | string (date-time) | null | |
data.visit.startedAtrequired | string (date-time) | null | |
data.visit.endedAtrequired | string (date-time) | null | |
data.visit.updatedAtrequired | string (date-time) | |
data.fromrequired | enum | One of "booked", "queued", "called", "in_progress", "completed", "cancelled", "no_show" |
data.torequired | enum | One of "booked", "queued", "called", "in_progress", "completed", "cancelled", "no_show" |
{
"id": "evt-0193f2a1-7c4e-7a10-9b2e-000000000001",
"type": "visit.status_changed",
"apiVersion": "v1",
"createdAt": "2026-10-30T04:31:00.000Z",
"businessId": "bus-0193f2a1-7c4e-7a10-9b2e-000000000001",
"test": false,
"data": {
"visit": {
"id": "job-0193f2a1-7c4e-7a10-9b2e-000000000001",
"journeyId": "jny-0193f2a1-7c4e-7a10-9b2e-000000000001",
"token": "GEN-20261030-014",
"lineId": "line-0193f2a1-7c4e-7a10-9b2e-000000000001",
"status": "called",
"bookingType": "walk_in",
"priority": false,
"customer": {
"name": "Asha Rao",
"phone": "+919000000001"
},
"services": [
{
"id": "svc-0193f2a1-7c4e-7a10-9b2e-000000000002",
"name": "General consultation"
}
],
"deskId": "sta-0193f2a1-7c4e-7a10-9b2e-000000000001",
"position": null,
"slotAt": null,
"createdAt": "2026-10-30T04:12:00.000Z",
"calledAt": "2026-10-30T04:31:00.000Z",
"startedAt": null,
"endedAt": null,
"updatedAt": "2026-10-30T04:31:00.000Z"
},
"from": "queued",
"to": "called"
}
} EVENT visit.updated #
| Field | Type | Notes |
|---|---|---|
idrequired | string | |
typerequired | string | Always "visit.updated" |
apiVersionrequired | string | Always "v1" |
createdAtrequired | string (date-time) | |
businessIdrequired | string | |
testrequired | boolean | |
datarequired | object | |
data.visitrequired | object | |
data.visit.idrequired | string | |
data.visit.journeyIdrequired | string | |
data.visit.tokenrequired | string | |
data.visit.lineIdrequired | string | |
data.visit.statusrequired | enum | One of "booked", "queued", "called", "in_progress", "completed", "cancelled", "no_show" |
data.visit.bookingTyperequired | enum | One of "walk_in", "appointment", "scheduled_walk_in" |
data.visit.priorityrequired | boolean | |
data.visit.customerrequired | object | |
data.visit.customer.namerequired | string | null | |
data.visit.customer.phonerequired | string | null | |
data.visit.servicesrequired | array of object | |
data.visit.services[].idrequired | string | |
data.visit.services[].namerequired | string | |
data.visit.deskIdrequired | string | null | |
data.visit.positionrequired | integer | null | |
data.visit.slotAtrequired | string (date-time) | null | |
data.visit.createdAtrequired | string (date-time) | |
data.visit.calledAtrequired | string (date-time) | null | |
data.visit.startedAtrequired | string (date-time) | null | |
data.visit.endedAtrequired | string (date-time) | null | |
data.visit.updatedAtrequired | string (date-time) | |
data.changedrequired | array of enum | At least 1 items |
{
"id": "evt-0193f2a1-7c4e-7a10-9b2e-000000000001",
"type": "visit.updated",
"apiVersion": "v1",
"createdAt": "2026-10-30T04:15:00.000Z",
"businessId": "bus-0193f2a1-7c4e-7a10-9b2e-000000000001",
"test": false,
"data": {
"visit": {
"id": "job-0193f2a1-7c4e-7a10-9b2e-000000000001",
"journeyId": "jny-0193f2a1-7c4e-7a10-9b2e-000000000001",
"token": "GEN-20261030-014",
"lineId": "line-0193f2a1-7c4e-7a10-9b2e-000000000001",
"status": "queued",
"bookingType": "walk_in",
"priority": true,
"customer": {
"name": "Asha Rao",
"phone": "+919000000001"
},
"services": [
{
"id": "svc-0193f2a1-7c4e-7a10-9b2e-000000000002",
"name": "General consultation"
}
],
"deskId": null,
"position": 1,
"slotAt": null,
"createdAt": "2026-10-30T04:12:00.000Z",
"calledAt": null,
"startedAt": null,
"endedAt": null,
"updatedAt": "2026-10-30T04:15:00.000Z"
},
"changed": [
"priority"
]
}
} EVENT line.paused #
| Field | Type | Notes |
|---|---|---|
idrequired | string | |
typerequired | string | Always "line.paused" |
apiVersionrequired | string | Always "v1" |
createdAtrequired | string (date-time) | |
businessIdrequired | string | |
testrequired | boolean | |
datarequired | object | |
data.linerequired | object | |
data.line.idrequired | string | |
data.line.namerequired | string | |
data.line.coderequired | string | |
data.line.typerequired | enum | One of "walk_in", "appointment", "scheduled_walk_in" |
data.line.pausedrequired | boolean | |
data.line.waitingrequired | integer | |
data.line.avgServiceMinutesrequired | integer | |
data.line.maxCapacityrequired | integer | |
data.line.descriptionrequired | string | null | |
data.line.locationrequired | string | null | |
data.line.callGraceMinutesrequired | integer | |
data.line.appointmentGraceBeforeMinutesrequired | integer | |
data.line.maxLateArrivalMinutesrequired | integer | |
data.line.autoNoShowEnabledrequired | boolean |
{
"id": "evt-0193f2a1-7c4e-7a10-9b2e-000000000001",
"type": "line.paused",
"apiVersion": "v1",
"createdAt": "2026-10-30T06:30:00.000Z",
"businessId": "bus-0193f2a1-7c4e-7a10-9b2e-000000000001",
"test": false,
"data": {
"line": {
"id": "line-0193f2a1-7c4e-7a10-9b2e-000000000001",
"name": "General",
"code": "GEN",
"type": "walk_in",
"paused": true,
"waiting": 4,
"avgServiceMinutes": 10,
"maxCapacity": 60,
"description": "Walk-ins for a first visit",
"location": "Ground floor",
"callGraceMinutes": 5,
"appointmentGraceBeforeMinutes": 10,
"maxLateArrivalMinutes": 15,
"autoNoShowEnabled": true
}
}
} EVENT line.resumed #
| Field | Type | Notes |
|---|---|---|
idrequired | string | |
typerequired | string | Always "line.resumed" |
apiVersionrequired | string | Always "v1" |
createdAtrequired | string (date-time) | |
businessIdrequired | string | |
testrequired | boolean | |
datarequired | object | |
data.linerequired | object | |
data.line.idrequired | string | |
data.line.namerequired | string | |
data.line.coderequired | string | |
data.line.typerequired | enum | One of "walk_in", "appointment", "scheduled_walk_in" |
data.line.pausedrequired | boolean | |
data.line.waitingrequired | integer | |
data.line.avgServiceMinutesrequired | integer | |
data.line.maxCapacityrequired | integer | |
data.line.descriptionrequired | string | null | |
data.line.locationrequired | string | null | |
data.line.callGraceMinutesrequired | integer | |
data.line.appointmentGraceBeforeMinutesrequired | integer | |
data.line.maxLateArrivalMinutesrequired | integer | |
data.line.autoNoShowEnabledrequired | boolean |
{
"id": "evt-0193f2a1-7c4e-7a10-9b2e-000000000001",
"type": "line.resumed",
"apiVersion": "v1",
"createdAt": "2026-10-30T07:00:00.000Z",
"businessId": "bus-0193f2a1-7c4e-7a10-9b2e-000000000001",
"test": false,
"data": {
"line": {
"id": "line-0193f2a1-7c4e-7a10-9b2e-000000000001",
"name": "General",
"code": "GEN",
"type": "walk_in",
"paused": false,
"waiting": 4,
"avgServiceMinutes": 10,
"maxCapacity": 60,
"description": "Walk-ins for a first visit",
"location": "Ground floor",
"callGraceMinutes": 5,
"appointmentGraceBeforeMinutes": 10,
"maxLateArrivalMinutes": 15,
"autoNoShowEnabled": true
}
}
} EVENT desk.status_changed #
| Field | Type | Notes |
|---|---|---|
idrequired | string | |
typerequired | string | Always "desk.status_changed" |
apiVersionrequired | string | Always "v1" |
createdAtrequired | string (date-time) | |
businessIdrequired | string | |
testrequired | boolean | |
datarequired | object | |
data.deskrequired | object | |
data.desk.idrequired | string | |
data.desk.namerequired | string | |
data.desk.typerequired | enum | One of "person", "counter" |
data.desk.publicLabelrequired | string | null | |
data.desk.activerequired | boolean | |
data.desk.staterequired | enum | One of "offline", "available", "called", "busy", "break" |
data.desk.lineIdsrequired | array of string | |
data.fromrequired | enum | One of "offline", "available", "called", "busy", "break" |
data.torequired | enum | One of "offline", "available", "called", "busy", "break" |
{
"id": "evt-0193f2a1-7c4e-7a10-9b2e-000000000001",
"type": "desk.status_changed",
"apiVersion": "v1",
"createdAt": "2026-10-30T06:30:00.000Z",
"businessId": "bus-0193f2a1-7c4e-7a10-9b2e-000000000001",
"test": false,
"data": {
"desk": {
"id": "sta-0193f2a1-7c4e-7a10-9b2e-000000000001",
"name": "Dr Mehta",
"type": "person",
"publicLabel": "Room 1",
"active": true,
"state": "break",
"lineIds": [
"line-0193f2a1-7c4e-7a10-9b2e-000000000001"
]
},
"from": "available",
"to": "break"
}
} EVENT webhook.test #
| Field | Type | Notes |
|---|---|---|
idrequired | string | |
typerequired | string | Always "webhook.test" |
apiVersionrequired | string | Always "v1" |
createdAtrequired | string (date-time) | |
businessIdrequired | string | |
testrequired | boolean | |
datarequired | object | |
data.messagerequired | string |
{
"id": "evt-0193f2a1-7c4e-7a10-9b2e-000000000001",
"type": "webhook.test",
"apiVersion": "v1",
"createdAt": "2026-10-30T05:00:00.000Z",
"businessId": "bus-0193f2a1-7c4e-7a10-9b2e-000000000001",
"test": true,
"data": {
"message": "A test event from Line Me Up. Your endpoint is receiving webhooks."
}
}