List decisions
curl --request GET \
--url https://api.meshqu.com/v1/decisions \
--header 'Authorization: Bearer <token>' \
--header 'X-MeshQu-Tenant-Id: <api-key>'import requests
url = "https://api.meshqu.com/v1/decisions"
headers = {
"Authorization": "Bearer <token>",
"X-MeshQu-Tenant-Id": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {Authorization: 'Bearer <token>', 'X-MeshQu-Tenant-Id': '<api-key>'}
};
fetch('https://api.meshqu.com/v1/decisions', 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",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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"
"net/http"
"io"
)
func main() {
url := "https://api.meshqu.com/v1/decisions"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("X-MeshQu-Tenant-Id", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.meshqu.com/v1/decisions")
.header("Authorization", "Bearer <token>")
.header("X-MeshQu-Tenant-Id", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.meshqu.com/v1/decisions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
request["X-MeshQu-Tenant-Id"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"items": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"tenant_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"idempotency_key": "<string>",
"decision_type": "<string>",
"decision": "ALLOW",
"context": {
"decision_type": "<string>",
"fields": {},
"evidence": [
{
"kind": "<string>",
"ref": "<string>",
"hash": "<string>",
"data": {}
}
],
"metadata": {
"actor_id": "<string>",
"correlation_id": "<string>",
"ip_address": "<string>",
"user_agent": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
},
"source_artifact": {
"type": "PDF",
"hash": "<string>",
"hash_algorithm": "SHA-256",
"reference_id": "<string>",
"filename": "<string>",
"byte_size": 1
}
},
"result": {
"decision": "ALLOW",
"violations": [
{
"rule_code": "<string>",
"severity": "low",
"reason": "<string>",
"reason_code": "FIELD_MISSING",
"field": "<string>",
"actual_value": "<unknown>",
"expected_value": "<unknown>",
"details": {},
"policy_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"is_shadow": true
}
],
"rules_evaluated": 123,
"evaluation_time_ms": 123,
"timestamp": "2023-11-07T05:31:56Z",
"policy_snapshot_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"evaluated_rules_hash": "<string>",
"integrity_hash": "<string>",
"transparency_anchor": {
"provider": "<string>",
"entry_uuid": "<string>",
"log_index": 123,
"inclusion_proof": {
"hashes": [
"<string>"
],
"log_index": 123,
"root_hash": "<string>",
"tree_size": 123
},
"anchored_at": "2023-11-07T05:31:56Z",
"rekor_public_url": "<string>"
},
"action": {
"type": "<string>",
"reference_id": "<string>",
"metadata": {}
},
"rules_na": 123,
"na_rules": [
{
"rule_code": "<string>",
"reason": "<string>",
"when": "<unknown>"
}
],
"signature": "<string>",
"signature_kid": "<string>",
"signature_algorithm": "<string>",
"receipt_schema_version": 1,
"policy_snapshot_digest": "<string>",
"evidence_manifest_digest": "<string>",
"shadow_converted": true,
"original_decision": "ALLOW",
"is_shadow": true
},
"policy_snapshot_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"correlation_id": "<string>",
"chain_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"chain_step": 123,
"parent_decision_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"chain_integrity_hash": "<string>",
"chain_signature": "<string>",
"chain_signature_kid": "<string>",
"chain_signature_algorithm": "<string>",
"recorded_at": "2023-11-07T05:31:56Z",
"created_at": "2023-11-07T05:31:56Z",
"governance_source": {
"tenant_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"tenant_name": "<string>",
"level": 1
},
"policy_group_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"policy_group_code": "<string>",
"policy": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"code": "<string>",
"name": "<string>",
"version": 123
},
"evaluated_policies": [
{
"policy_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"policy_code": "<string>",
"policy_name": "<string>",
"version": 123,
"shadow_mode": true,
"policy_group_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"policy_group_code": "<string>",
"rules": [
{
"code": "<string>",
"name": "<string>",
"when": "<unknown>"
}
],
"regulatory_refs": [
"<string>"
]
}
],
"actor": {
"id": "<string>",
"type": "human",
"role": "<string>",
"authority": "<string>",
"display_name": "<string>"
}
}
],
"total": 123,
"limit": 123,
"offset": 123
}Decisions
List decisions
Returns paginated list of recorded decisions with optional filters.
GET
/
v1
/
decisions
List decisions
curl --request GET \
--url https://api.meshqu.com/v1/decisions \
--header 'Authorization: Bearer <token>' \
--header 'X-MeshQu-Tenant-Id: <api-key>'import requests
url = "https://api.meshqu.com/v1/decisions"
headers = {
"Authorization": "Bearer <token>",
"X-MeshQu-Tenant-Id": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {Authorization: 'Bearer <token>', 'X-MeshQu-Tenant-Id': '<api-key>'}
};
fetch('https://api.meshqu.com/v1/decisions', 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",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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"
"net/http"
"io"
)
func main() {
url := "https://api.meshqu.com/v1/decisions"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("X-MeshQu-Tenant-Id", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.meshqu.com/v1/decisions")
.header("Authorization", "Bearer <token>")
.header("X-MeshQu-Tenant-Id", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.meshqu.com/v1/decisions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
request["X-MeshQu-Tenant-Id"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"items": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"tenant_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"idempotency_key": "<string>",
"decision_type": "<string>",
"decision": "ALLOW",
"context": {
"decision_type": "<string>",
"fields": {},
"evidence": [
{
"kind": "<string>",
"ref": "<string>",
"hash": "<string>",
"data": {}
}
],
"metadata": {
"actor_id": "<string>",
"correlation_id": "<string>",
"ip_address": "<string>",
"user_agent": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
},
"source_artifact": {
"type": "PDF",
"hash": "<string>",
"hash_algorithm": "SHA-256",
"reference_id": "<string>",
"filename": "<string>",
"byte_size": 1
}
},
"result": {
"decision": "ALLOW",
"violations": [
{
"rule_code": "<string>",
"severity": "low",
"reason": "<string>",
"reason_code": "FIELD_MISSING",
"field": "<string>",
"actual_value": "<unknown>",
"expected_value": "<unknown>",
"details": {},
"policy_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"is_shadow": true
}
],
"rules_evaluated": 123,
"evaluation_time_ms": 123,
"timestamp": "2023-11-07T05:31:56Z",
"policy_snapshot_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"evaluated_rules_hash": "<string>",
"integrity_hash": "<string>",
"transparency_anchor": {
"provider": "<string>",
"entry_uuid": "<string>",
"log_index": 123,
"inclusion_proof": {
"hashes": [
"<string>"
],
"log_index": 123,
"root_hash": "<string>",
"tree_size": 123
},
"anchored_at": "2023-11-07T05:31:56Z",
"rekor_public_url": "<string>"
},
"action": {
"type": "<string>",
"reference_id": "<string>",
"metadata": {}
},
"rules_na": 123,
"na_rules": [
{
"rule_code": "<string>",
"reason": "<string>",
"when": "<unknown>"
}
],
"signature": "<string>",
"signature_kid": "<string>",
"signature_algorithm": "<string>",
"receipt_schema_version": 1,
"policy_snapshot_digest": "<string>",
"evidence_manifest_digest": "<string>",
"shadow_converted": true,
"original_decision": "ALLOW",
"is_shadow": true
},
"policy_snapshot_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"correlation_id": "<string>",
"chain_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"chain_step": 123,
"parent_decision_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"chain_integrity_hash": "<string>",
"chain_signature": "<string>",
"chain_signature_kid": "<string>",
"chain_signature_algorithm": "<string>",
"recorded_at": "2023-11-07T05:31:56Z",
"created_at": "2023-11-07T05:31:56Z",
"governance_source": {
"tenant_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"tenant_name": "<string>",
"level": 1
},
"policy_group_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"policy_group_code": "<string>",
"policy": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"code": "<string>",
"name": "<string>",
"version": 123
},
"evaluated_policies": [
{
"policy_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"policy_code": "<string>",
"policy_name": "<string>",
"version": 123,
"shadow_mode": true,
"policy_group_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"policy_group_code": "<string>",
"rules": [
{
"code": "<string>",
"name": "<string>",
"when": "<unknown>"
}
],
"regulatory_refs": [
"<string>"
]
}
],
"actor": {
"id": "<string>",
"type": "human",
"role": "<string>",
"authority": "<string>",
"display_name": "<string>"
}
}
],
"total": 123,
"limit": 123,
"offset": 123
}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.
Query Parameters
Max items per page
Required range:
1 <= x <= 100Items to skip
Required range:
x >= 0Filter by decision type
decision
Option 1 · enum<string>Option 2 · enum<string>Option 3 · enum<string>Option 4 · enum<string>
Decision outcome
Available options:
ALLOW Filter decisions from this date
Filter decisions up to this date
Filter by policy ID
Filter by policy code
Filter by policy group ID
Filter by policy group code
Filter by source artifact SHA-256 hash
Pattern:
^[a-f0-9]{64}$Reference code (XXXX-XXXX) to search by decision UUID prefix
Pattern:
^[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}$Filter by correlation ID
Filter by decision chain ID
⌘I