curl --request POST \
--url https://api.meshqu.com/v1/decisions/{id}/outcome \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'X-MeshQu-Tenant-Id: <api-key>' \
--data '
{
"status": "accepted",
"source_type": "human",
"reported_by": "<string>",
"final_action": "ALLOW",
"reported_at": "2023-11-07T05:31:56Z",
"resolution_reason": "<string>",
"notes": "<string>",
"external_reference": "<string>"
}
'import requests
url = "https://api.meshqu.com/v1/decisions/{id}/outcome"
payload = {
"status": "accepted",
"source_type": "human",
"reported_by": "<string>",
"final_action": "ALLOW",
"reported_at": "2023-11-07T05:31:56Z",
"resolution_reason": "<string>",
"notes": "<string>",
"external_reference": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"X-MeshQu-Tenant-Id": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
Authorization: 'Bearer <token>',
'X-MeshQu-Tenant-Id': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
status: 'accepted',
source_type: 'human',
reported_by: '<string>',
final_action: 'ALLOW',
reported_at: '2023-11-07T05:31:56Z',
resolution_reason: '<string>',
notes: '<string>',
external_reference: '<string>'
})
};
fetch('https://api.meshqu.com/v1/decisions/{id}/outcome', 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.meshqu.com/v1/decisions/{id}/outcome",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'status' => 'accepted',
'source_type' => 'human',
'reported_by' => '<string>',
'final_action' => 'ALLOW',
'reported_at' => '2023-11-07T05:31:56Z',
'resolution_reason' => '<string>',
'notes' => '<string>',
'external_reference' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"X-MeshQu-Tenant-Id: <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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.meshqu.com/v1/decisions/{id}/outcome"
payload := strings.NewReader("{\n \"status\": \"accepted\",\n \"source_type\": \"human\",\n \"reported_by\": \"<string>\",\n \"final_action\": \"ALLOW\",\n \"reported_at\": \"2023-11-07T05:31:56Z\",\n \"resolution_reason\": \"<string>\",\n \"notes\": \"<string>\",\n \"external_reference\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("X-MeshQu-Tenant-Id", "<api-key>")
req.Header.Add("Content-Type", "application/json")
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.meshqu.com/v1/decisions/{id}/outcome")
.header("Authorization", "Bearer <token>")
.header("X-MeshQu-Tenant-Id", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"status\": \"accepted\",\n \"source_type\": \"human\",\n \"reported_by\": \"<string>\",\n \"final_action\": \"ALLOW\",\n \"reported_at\": \"2023-11-07T05:31:56Z\",\n \"resolution_reason\": \"<string>\",\n \"notes\": \"<string>\",\n \"external_reference\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.meshqu.com/v1/decisions/{id}/outcome")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["X-MeshQu-Tenant-Id"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"status\": \"accepted\",\n \"source_type\": \"human\",\n \"reported_by\": \"<string>\",\n \"final_action\": \"ALLOW\",\n \"reported_at\": \"2023-11-07T05:31:56Z\",\n \"resolution_reason\": \"<string>\",\n \"notes\": \"<string>\",\n \"external_reference\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"decision_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"tenant_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "accepted",
"final_action": "ALLOW",
"source_type": "human",
"reported_by": "<string>",
"reported_at": "2023-11-07T05:31:56Z",
"resolution_reason": "<string>",
"notes": "<string>",
"external_reference": "<string>",
"created_at": "2023-11-07T05:31:56Z"
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
},
"correlation_id": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
},
"correlation_id": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
},
"correlation_id": "<string>"
}Record decision outcome
Records what happened after a decision verdict.
Expected for REVIEW decisions. Optional for DENY/ALERT. Rare for ALLOW. One outcome per decision — subsequent attempts return 409.
curl --request POST \
--url https://api.meshqu.com/v1/decisions/{id}/outcome \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'X-MeshQu-Tenant-Id: <api-key>' \
--data '
{
"status": "accepted",
"source_type": "human",
"reported_by": "<string>",
"final_action": "ALLOW",
"reported_at": "2023-11-07T05:31:56Z",
"resolution_reason": "<string>",
"notes": "<string>",
"external_reference": "<string>"
}
'import requests
url = "https://api.meshqu.com/v1/decisions/{id}/outcome"
payload = {
"status": "accepted",
"source_type": "human",
"reported_by": "<string>",
"final_action": "ALLOW",
"reported_at": "2023-11-07T05:31:56Z",
"resolution_reason": "<string>",
"notes": "<string>",
"external_reference": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"X-MeshQu-Tenant-Id": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
Authorization: 'Bearer <token>',
'X-MeshQu-Tenant-Id': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
status: 'accepted',
source_type: 'human',
reported_by: '<string>',
final_action: 'ALLOW',
reported_at: '2023-11-07T05:31:56Z',
resolution_reason: '<string>',
notes: '<string>',
external_reference: '<string>'
})
};
fetch('https://api.meshqu.com/v1/decisions/{id}/outcome', 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.meshqu.com/v1/decisions/{id}/outcome",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'status' => 'accepted',
'source_type' => 'human',
'reported_by' => '<string>',
'final_action' => 'ALLOW',
'reported_at' => '2023-11-07T05:31:56Z',
'resolution_reason' => '<string>',
'notes' => '<string>',
'external_reference' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"X-MeshQu-Tenant-Id: <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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.meshqu.com/v1/decisions/{id}/outcome"
payload := strings.NewReader("{\n \"status\": \"accepted\",\n \"source_type\": \"human\",\n \"reported_by\": \"<string>\",\n \"final_action\": \"ALLOW\",\n \"reported_at\": \"2023-11-07T05:31:56Z\",\n \"resolution_reason\": \"<string>\",\n \"notes\": \"<string>\",\n \"external_reference\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("X-MeshQu-Tenant-Id", "<api-key>")
req.Header.Add("Content-Type", "application/json")
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.meshqu.com/v1/decisions/{id}/outcome")
.header("Authorization", "Bearer <token>")
.header("X-MeshQu-Tenant-Id", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"status\": \"accepted\",\n \"source_type\": \"human\",\n \"reported_by\": \"<string>\",\n \"final_action\": \"ALLOW\",\n \"reported_at\": \"2023-11-07T05:31:56Z\",\n \"resolution_reason\": \"<string>\",\n \"notes\": \"<string>\",\n \"external_reference\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.meshqu.com/v1/decisions/{id}/outcome")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["X-MeshQu-Tenant-Id"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"status\": \"accepted\",\n \"source_type\": \"human\",\n \"reported_by\": \"<string>\",\n \"final_action\": \"ALLOW\",\n \"reported_at\": \"2023-11-07T05:31:56Z\",\n \"resolution_reason\": \"<string>\",\n \"notes\": \"<string>\",\n \"external_reference\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"decision_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"tenant_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "accepted",
"final_action": "ALLOW",
"source_type": "human",
"reported_by": "<string>",
"reported_at": "2023-11-07T05:31:56Z",
"resolution_reason": "<string>",
"notes": "<string>",
"external_reference": "<string>",
"created_at": "2023-11-07T05:31:56Z"
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
},
"correlation_id": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
},
"correlation_id": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
},
"correlation_id": "<string>"
}Authorizations
MeshQu API key passed as a bearer token: Authorization: Bearer mqu_…. Mint one in the console (Settings → API keys).
Tenant UUID for multi-tenant isolation. Required on authenticated routes. A missing or non-UUID value returns 400 MISSING_TENANT_ID or INVALID_TENANT_ID before API-key authentication.
Path Parameters
Decision ID
Body
Request to record a decision outcome
Request to record a decision outcome
Outcome status
accepted Source of the outcome report
human Who reported this outcome
1Final action taken (only meaningful when overridden)
ALLOW When the outcome was reported (defaults to now)
Freeform reason for the resolution (not the same as violation reason_code)
Additional notes
External system reference (e.g., ticket ID)
Response
A recorded decision outcome
A recorded decision outcome
accepted ALLOW human