Approve a meeting held for compliance review
curl --request POST \
--url https://api.linqalpha.com/v1/meetings/{meeting_id}/approve \
--header 'X-API-KEY: <api-key>'import requests
url = "https://api.linqalpha.com/v1/meetings/{meeting_id}/approve"
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}/approve', 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}/approve",
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}/approve"
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}/approve")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.linqalpha.com/v1/meetings/{meeting_id}/approve")
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": "<string>",
"review_status": "approved"
}
}
}{
"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>"
}Meeting Agent
Approve Meeting Agent Results
Releases the results of a meeting held for compliance review. Only a meeting whose status is success and whose review_status is pending can be approved. Once the approval is recorded, the owner can see the summary and transcript, and the result email is sent. No request body is required. The API key’s user must be a compliance viewer in the meeting owner’s organization; a viewer may approve their own meeting.
POST
/
v1
/
meetings
/
{meeting_id}
/
approve
Approve a meeting held for compliance review
curl --request POST \
--url https://api.linqalpha.com/v1/meetings/{meeting_id}/approve \
--header 'X-API-KEY: <api-key>'import requests
url = "https://api.linqalpha.com/v1/meetings/{meeting_id}/approve"
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}/approve', 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}/approve",
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}/approve"
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}/approve")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.linqalpha.com/v1/meetings/{meeting_id}/approve")
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": "<string>",
"review_status": "approved"
}
}
}{
"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>"
}Release the results of a meeting held for compliance review. When your organization
holds results for review, a meeting’s summary and transcript are produced as usual
but stay hidden from its owner, and no result email is sent, until a compliance
viewer approves it. Approving releases them: the owner can see the summary and
transcript, and the result email is sent.
Use the booking UUID returned by the Meeting Agent API, not the meeting provider’s
join ID. No request body is required for an organization API key.
The response confirms the approval was recorded. The result email is sent after the
response, so it may arrive a short time later.
A held meeting has
curl --request POST \
'https://api.linqalpha.com/v1/meetings/<meeting_id>/approve' \
--header 'x-api-key: <your-api-key>'
{
"error": null,
"payload": {
"data": {
"id": "6f1a0f6e-8e0c-4c7e-9d2b-3c9c6f5a1b2c",
"status": "success",
"review_status": "approved"
}
}
}
review_status pending from the moment its recording starts. It
can be approved once its recording has finished, that is, when its status is
success. To list the meetings waiting for a decision, filter on both:
GET /v1/meetings?status=success&review_status=pending.
The user associated with your API key must have compliance-viewer access in the
meeting owner’s organization, otherwise the request returns
403 MEETING_REVIEW_NOT_PERMITTED. A compliance viewer may approve their own
meeting. Unknown meetings and meetings outside your organization return
404 MEETING_NOT_FOUND.
A meeting that is not waiting for a decision returns 409 MEETING_NOT_REVIEWABLE:
it was rejected, its results were already released, its recording has not finished
successfully, or its content is past its retention period. Repeating an approval never
sends the result email twice.
If the response is lost, or the API returns 503 MEETING_REVIEW_UNAVAILABLE or
502 MEETING_REVIEW_FAIL, fetch the meeting using GET /v1/meetings/{meeting_id}
before retrying. If its review_status is already approved, no further request is
needed. 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?