Skip to main content
POST
/
v1
/
intent
/
verify
Verify Response
curl --request POST \
  --url https://api.aethercitadel.cloud/v1/intent/verify \
  --header 'Content-Type: application/json' \
  --header 'X-Citadel-Key: <x-citadel-key>' \
  --data '
{
  "original_intent_hash": "<string>",
  "response": {
    "match_id": "<string>",
    "payload": {},
    "timestamp": 123,
    "signature": "<string>"
  }
}
'
{
  "cleared": true,
  "reason": {},
  "payload": {}
}

Documentation Index

Fetch the complete documentation index at: https://docs.aethercitadel.cloud/llms.txt

Use this file to discover all available pages before exploring further.

Overview

Passes an AI response through Bharat-Shield for verification. Confirms that the response legitimately corresponds to the original intent, and hasn’t been tampered with, replayed, or generated outside the expected context. Call this after your AI service responds, before serving the output to the user.

Request

X-Citadel-Key
string
required
Your Aether Citadel API key (ack_live_...)
original_intent_hash
string
required
The intent_hash returned by /v1/intent/generate. Must be in the format sha256:<64 hex chars>.
response
object
required
The ScaleResponse object from your AI service.

Response

cleared
boolean
true if Bharat-Shield approved the response. false if blocked.
reason
string | null
If cleared is false, the block reason. See block reasons.
payload
object | null
The verified AI payload. Only present when cleared is true. Serve this to the user.

Example

curl -X POST https://api.aethercitadel.cloud/v1/intent/verify \
  -H "X-Citadel-Key: ack_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "original_intent_hash": "sha256:a3f8c2d1...",
    "response": {
      "match_id": "resp_abc123",
      "payload": { "text": "Here is your answer..." },
      "timestamp": 1718001000,
      "signature": "3a4b5c6d..."
    }
  }'
Cleared response:
{
  "cleared": true,
  "reason": null,
  "payload": { "text": "Here is your answer..." }
}
Blocked response:
{
  "cleared": false,
  "reason": "ExpiredIntent",
  "payload": null
}

Error Responses

StatusErrorMeaning
400intent hash must start with 'sha256:'Invalid hash format
400intent hash has invalid lengthHash is not 64 hex chars
401invalid or missing X-Citadel-KeyBad or missing API key