Docs
Monitoring Data
Get Assistant Analysis
Retrieve one Assistant analysis with its signals.
GET
/v1/assistant/analyses/{id}
monitoring.read
Returns a single analysis cycle in full — the reasoning, every signal it reviewed with its per-signal verdict, and the recent verdict trend for context.
Authentication
This endpoint requires a valid API key sent as a Bearer token, and the key must carry the scope listed above. See Authentication and Scopes for details.
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | guid | Required | The analysis ID (from List Assistant Analyses). |
Headers
| Header | Required | Description |
|---|---|---|
| Authorization | Required | Bearer token — Bearer pk_live_... |
Request Example
curl -X GET "https://api.paqet.net/v1/assistant/analyses/{id}" \
-H "Authorization: Bearer pk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new("Bearer", "pk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
var response = await client.GetAsync("https://api.paqet.net/v1/assistant/analyses/{id}");
var json = await response.Content.ReadAsStringAsync();
Console.WriteLine(json);
const response = await fetch("https://api.paqet.net/v1/assistant/analyses/{id}", {
method: "GET",
headers: {
"Authorization": "Bearer pk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
});
const data = await response.json();
console.log(data);
interface ApiResponse<T> {
success: boolean;
data?: T;
code?: string;
message?: string;
}
const response = await fetch("https://api.paqet.net/v1/assistant/analyses/{id}", {
method: "GET",
headers: {
"Authorization": "Bearer pk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
});
const data: ApiResponse<unknown> = await response.json();
console.log(data);
import requests
headers = {"Authorization": "Bearer pk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}
response = requests.get("https://api.paqet.net/v1/assistant/analyses/{id}", headers=headers)
print(response.json())
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.paqet.net/v1/assistant/analyses/{id}", nil)
req.Header.Set("Authorization", "Bearer pk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.paqet.net/v1/assistant/analyses/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer pk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
]
]);
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Response Example
200 OK
{
"success": true,
"data": {
"id": "d4a1c9f0-6b2e-4a1d-9c3f-1e2d3c4b5a60",
"cycleDate": "2026-09-01",
"triggerType": "Scheduled",
"status": "Completed",
"failureReason": null,
"verdict": "NeedsAttention",
"confidence": "High",
"severity": "Medium",
"headline": "Unexpected certificate issuance for api.example.com",
"reasoning": "A certificate for api.example.com was issued by a CA this organization has not used before...",
"signalCount": 3,
"usedAi": true,
"durationMs": 4200,
"createdAt": "2026-09-01T02:15:00Z",
"signals": [
{
"signalType": "CertTransparencyLogEntry",
"signalId": "0b2e7d10-1a2b-3c4d-5e6f-7a8b9c0d1e2f",
"domainId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"domainHost": "api.example.com",
"summary": "New certificate issued by \"Example CA\" covering api.example.com",
"occurredAt": "2026-08-31T22:40:00Z",
"perSignalVerdict": "NeedsAttention",
"perSignalNote": "Issuer not previously seen for this domain.",
"triageSource": "Ai",
"sourceExists": true
}
],
"trend": [
{ "cycleDate": "2026-09-01", "verdict": "NeedsAttention", "severity": "Medium", "status": "Completed", "isCurrent": true }
]
}
}
Error Responses
| Status | Code | Meaning |
|---|---|---|
| 401 | API_KEY_INVALID | The API key is missing, malformed, or doesn't match any active key. |
| 401 | API_KEY_REVOKED | The API key was manually revoked and can never be reactivated. |
| 401 | API_KEY_EXPIRED | The API key's expiration date has passed. |
| 403 | PLAN_EXPIRED | Your Enterprise subscription is no longer active. |
| 403 | ENTERPRISE_REQUIRED | The Public API is only available on the Enterprise plan. |
| 403 | SCOPE_REQUIRED | The API key doesn't have the scope required for this endpoint. |
| 429 | RATE_LIMIT_EXCEEDED | The API key has exceeded its request limit for the current window. |
| 404 | RESOURCE_NOT_FOUND | The requested resource does not exist. |
| 422 | VALIDATION_ERROR | One or more request parameters failed validation. |
| 500 | INTERNAL_ERROR | An unexpected error occurred on Paqet's side. |
Rate Limits
This endpoint counts against your API key's standard request limit. See Rate Limits for current limits, response headers, and retry guidance.
Notes
- Requires the monitoring.read scope. Add it to a key from the Developer Portal (Edit Scopes).
- An analysis ID from another organization returns RESOURCE_NOT_FOUND.
- sourceExists is false once a signal's underlying record has aged out of its source table - the denormalized summary fields on the signal stay populated regardless.
Related APIs
Try this endpoint
Run it live from the Playground using your own API key.