Free Admissibility & Citation Gap Briefing.Map your brand's footprint across the AI ecosystem and identify unverified Shadow Sources. Available for regulated enterprise evaluators.Secure Your Audit →

Back to agency landing

AI actions require authorization

HTTP & workflow recipes

Authorization middleware for AI workflows—one POST, then branch on verdict in n8n, Make, or your backend. HTTP only; no marketplace apps.

No marketplace download—use HTTP Request (n8n), Webhook (Make), or POST (Zapier) with the curl body below.

POST /api/v1/admissibility/verify

Protected workflow recipes

What BiDigest does in each template—clone the HTTP step into your pack. Downloadable n8n JSON / Make blueprints: [PROPOSAL] Phase 1 GTM.

WorkflowWhat BiDigest does
Refund agentREVIEW_REQUIRED above your threshold; receipt on every run
CRM writerBlocks or pauses destructive updates; human review on high impact
Invoice approvalHuman approval before payment executes
AI SDRVerifies outbound sends and CRM writes before production
Claims review agentHuman review on high-impact adjudication before bind

Canvas branch logic (copy-paste pattern)

After HTTP verify, branch on agency verdict—not admissibility_status alone.

HTTP verify (POST /api/v1/admissibility/verify)
        ↓
   Map to agency verdict
        ↓
┌──────────────────────────────────────┐
│ IF verdict == APPROVED               │ → Continue workflow
│ IF verdict == REVIEW_REQUIRED        │ → Slack/email approval + pause
│ IF verdict == REJECTED               │ → Stop + log receipt_id
└──────────────────────────────────────┘

curl (strict contract)

curl -sS -X POST "https://bidigest.com/api/v1/admissibility/verify" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "jurisdiction": { "regionCode": "us-fed", "industrySector": "financial" },
    "intent": {
      "agentId": "agency-agent:client-acme",
      "actionType": "refund_approval",
      "proposedPayload": { "action": "refund_approval", "amount": 500, "clientId": "client-acme" }
    },
    "sessionContext": {
      "sessionId": "session-acme-refund-001",
      "userId": "support_agent",
      "sessionStartTime": "2026-05-17T12:00:00.000Z"
    },
    "groundTruthBinding": {
      "domain": "agency-automation-demo.bidigest.com",
      "regulatoryId": "AGENCY_AUTOMATION_DEMO_V0"
    }
  }'

n8n — HTTP Request node

MethodPOST
URLhttps://bidigest.com/api/v1/admissibility/verify
AuthenticationHeader — Authorization: Bearer {{$env.BIDIGEST_API_KEY}}
BodyJSON — same object as curl below
// n8n Code node — after HTTP Request (map API → agency verdict)
const body = $json;
let verdict = 'REJECTED';
if (body.admissibility_status === 'DENIED') {
  verdict = 'REJECTED';
} else if (body.reason_code === '403_REBONDING_REQUIRED') {
  verdict = 'REVIEW_REQUIRED';
} else if (body.admissibility_status === 'APPROVED') {
  verdict = 'APPROVED';
}
// Optional: your policy pack may override to REVIEW_REQUIRED (amount, role, client tier)
return { verdict, receipt_id: body.decision_receipt?.receipt_id ?? null };

Make — HTTP module

  1. Module: HTTP > Make a request
  2. URL: https://bidigest.com/api/v1/admissibility/verify
  3. Method: POST
  4. Headers: Authorization: Bearer <api_key>, Content-Type: application/json
  5. Body: Raw JSON — paste curl body below
  6. Router on mapped verdict (APPROVED / REVIEW_REQUIRED / REJECTED)

Agency verdict mapping

The verify API returns admissibility_status and reason_code. Map once in your canvas to agency verdict vocabulary—branch on verdict, not on raw API strings alone.

API field (verify response)Agency verdictWorkflow action
"admissibility_status": "APPROVED"APPROVEDContinue the automation.
"admissibility_status": "DENIED"REJECTEDStop the workflow immediately.
reason_code requires human review (e.g. 403_REBONDING_REQUIRED) or uncertain action signal in responseREVIEW_REQUIREDPause workflow and notify your team.

Enterprise dashboards may label core engine states ADMITTED or FAIL_CLOSED; agency workflows should standardize on APPROVED, REJECTED, and REVIEW_REQUIRED.

[PROPOSAL] Future agency-facing response wrapper: { "verdict": "APPROVED", "receipt_id": "rcpt_…", "internal_reason_code": "200_ADMITTED" }. Today: map from admissibility_status in your HTTP node.

Raw API response (today)

{
  "admissibility_status": "APPROVED",
  "reason_code": "200_ADMITTED",
  "decision_receipt": { "receipt_id": "rcpt_84721…" }
}

Use in your workflow (after mapping)

{
  "verdict": "REVIEW_REQUIRED",
  "receipt_id": "rcpt_84721…"
}
Sovereign KB · IFQ · per-LLM — ask here