curl --request POST \
--url https://api.linqalpha.com/v1/meetings/{meeting_id}/cancel \
--header 'X-API-KEY: <api-key>'import requests
url = "https://api.linqalpha.com/v1/meetings/{meeting_id}/cancel"
headers = {"X-API-KEY": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://api.linqalpha.com/v1/meetings/{meeting_id}/cancel', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.linqalpha.com/v1/meetings/{meeting_id}/cancel",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.linqalpha.com/v1/meetings/{meeting_id}/cancel"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("X-API-KEY", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.linqalpha.com/v1/meetings/{meeting_id}/cancel")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.linqalpha.com/v1/meetings/{meeting_id}/cancel")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"error": "<unknown>",
"payload": {
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "cancelled"
}
}
}{
"error": {
"code": "INVALID_REQUEST_BODY",
"msg": "query is required and must be a string",
"message": "query is required and must be a string"
},
"payload": "<unknown>"
}{
"error": {
"code": "INVALID_REQUEST_BODY",
"msg": "query is required and must be a string",
"message": "query is required and must be a string"
},
"payload": "<unknown>"
}{
"error": {
"code": "INVALID_REQUEST_BODY",
"msg": "query is required and must be a string",
"message": "query is required and must be a string"
},
"payload": "<unknown>"
}{
"error": {
"code": "INVALID_REQUEST_BODY",
"msg": "query is required and must be a string",
"message": "query is required and must be a string"
},
"payload": "<unknown>"
}{
"error": {
"code": "INVALID_REQUEST_BODY",
"msg": "query is required and must be a string",
"message": "query is required and must be a string"
},
"payload": "<unknown>"
}{
"error": {
"code": "INVALID_REQUEST_BODY",
"msg": "query is required and must be a string",
"message": "query is required and must be a string"
},
"payload": "<unknown>"
}{
"error": {
"code": "INVALID_REQUEST_BODY",
"msg": "query is required and must be a string",
"message": "query is required and must be a string"
},
"payload": "<unknown>"
}{
"error": {
"code": "INVALID_REQUEST_BODY",
"msg": "query is required and must be a string",
"message": "query is required and must be a string"
},
"payload": "<unknown>"
}Cancel Meeting Agent
Cancels a booking owned by the API key user and requests that active bot workflows stop. Does not cancel the provider meeting for other participants. A successful response confirms cancellation and acceptance of applicable stop requests, not that the bot has already disconnected. No request body is required. Terminal bookings (cancelled, success, failed, expired) return 409. After a timeout or 5xx, fetch the booking status before retrying. Repeated cancellation cannot issue another refund.
curl --request POST \
--url https://api.linqalpha.com/v1/meetings/{meeting_id}/cancel \
--header 'X-API-KEY: <api-key>'import requests
url = "https://api.linqalpha.com/v1/meetings/{meeting_id}/cancel"
headers = {"X-API-KEY": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://api.linqalpha.com/v1/meetings/{meeting_id}/cancel', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.linqalpha.com/v1/meetings/{meeting_id}/cancel",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.linqalpha.com/v1/meetings/{meeting_id}/cancel"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("X-API-KEY", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.linqalpha.com/v1/meetings/{meeting_id}/cancel")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.linqalpha.com/v1/meetings/{meeting_id}/cancel")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"error": "<unknown>",
"payload": {
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "cancelled"
}
}
}{
"error": {
"code": "INVALID_REQUEST_BODY",
"msg": "query is required and must be a string",
"message": "query is required and must be a string"
},
"payload": "<unknown>"
}{
"error": {
"code": "INVALID_REQUEST_BODY",
"msg": "query is required and must be a string",
"message": "query is required and must be a string"
},
"payload": "<unknown>"
}{
"error": {
"code": "INVALID_REQUEST_BODY",
"msg": "query is required and must be a string",
"message": "query is required and must be a string"
},
"payload": "<unknown>"
}{
"error": {
"code": "INVALID_REQUEST_BODY",
"msg": "query is required and must be a string",
"message": "query is required and must be a string"
},
"payload": "<unknown>"
}{
"error": {
"code": "INVALID_REQUEST_BODY",
"msg": "query is required and must be a string",
"message": "query is required and must be a string"
},
"payload": "<unknown>"
}{
"error": {
"code": "INVALID_REQUEST_BODY",
"msg": "query is required and must be a string",
"message": "query is required and must be a string"
},
"payload": "<unknown>"
}{
"error": {
"code": "INVALID_REQUEST_BODY",
"msg": "query is required and must be a string",
"message": "query is required and must be a string"
},
"payload": "<unknown>"
}{
"error": {
"code": "INVALID_REQUEST_BODY",
"msg": "query is required and must be a string",
"message": "query is required and must be a string"
},
"payload": "<unknown>"
}curl --request POST \
'https://api.linqalpha.com/v1/meetings/<meeting_id>/cancel' \
--header 'x-api-key: <your-api-key>'
{
"error": null,
"payload": {
"data": {
"id": "6f1a0f6e-8e0c-4c7e-9d2b-3c9c6f5a1b2c",
"status": "cancelled"
}
}
}
404 MEETING_NOT_FOUND.
Bookings in cancelled, success, failed, or expired status return
409 MEETING_NOT_CANCELABLE. Repeating a successful cancellation does not issue
another refund. Existing booking rules restore usage before recording; cancellation
after the booking enters recording does not restore usage.
If the response is lost, or the API returns 503 MEETING_CANCEL_UNAVAILABLE or
502 MEETING_CANCEL_FAIL, fetch the booking using GET /v1/meetings/{meeting_id}
before retrying. If it is already cancelled, no further request is needed. If it is
still cancellable, retry with backoff. Stop failures do not report a successful
cancellation. Organization rate limits also apply (429).
For platform API keys, supply the same organization_id, user_id, and user_email
identity selectors used when booking, as query parameters. user_id is your external
customer user identifier, not LinqAlpha’s internal user UUID.Authorizations
Path Parameters
Booking UUID returned by the Meeting Agent API, not the provider join ID.
Query Parameters
Platform keys: organization selected when booking.
Platform keys: external customer user identifier selected when booking (not an internal UUID).
Platform keys: email for the selected customer user.
Was this page helpful?