Skip to main content

Endpoint

POST /simulate
Content-Type: application/json
Authorization: Bearer <api-key>
/simulate evaluates a policy using supplied signals and returns the decision outcome without producing an attestation. This endpoint is intended for:
  • Policy development
  • Policy testing
  • Sandbox environments
  • Rule debugging
  • What-if analysis

Why Simulation Exists

Simulation allows teams to understand policy behavior before running production evaluations.
Signals

Simulation

Decision
No attestation is issued. No execution evidence is produced. No authorization record is created.

When To Use

Use /simulate

For:
Policy Testing
Policy Development
Sandbox Evaluation
Rule Validation
What-if Analysis

Use /evaluate

For:
Production Decisions
Authorization
Attestation Generation
Override Workflows
Execution Flows

Core Difference

Simulation

Signals

Policy

Decision

Evaluation

Verified Signals

Policy

Decision

Signed Attestation

Request Body

{
  "policyId": "claims-approval",
  "policyVersion": "1.0.0",
  "signals": {
    "insurance_active": true,
    "risk_score": 10,
    "vip_customer": false,
    "claim_amount": 100
  }
}

Example Response

{
  "decision": {
    "status": "decided",
    "outcome": {
      "action": "approve",
      "requires_override": false,
      "reason": "standard_approval"
    },
    "rule_id": "standard-approval",
    "source": "rule_match"
  }
}

Response Fields

decision.status

Current decision state.
{
  "status": "decided"
}

decision.outcome.action

Policy action.
{
  "action": "approve"
}
Possible values:
approve
reject
escalate

decision.outcome.requires_override

Whether override authority is required.
{
  "requires_override": false
}

decision.outcome.reason

Reason returned by policy.
{
  "reason": "standard_approval"
}

decision.rule_id

Rule that produced the outcome.
{
  "rule_id": "standard-approval"
}

decision.ruleTrace

Optional rule evaluation trace.
{
  "ruleTrace": [
    {
      "ruleId": "standard-approval",
      "matched": true
    }
  ]
}
Useful for debugging and policy validation.

Example Scenarios

Standard Approval

Input:
{
  "insurance_active": true,
  "risk_score": 10,
  "claim_amount": 100
}
Output:
{
  "action": "approve"
}

Override Required

Input:
{
  "insurance_active": false,
  "risk_score": 75,
  "claim_amount": 100
}
Output:
{
  "action": "reject",
  "requires_override": true
}

No Attestation

Simulation does not create:
Attestation
Signature
Execution Evidence
Integrity Proof
Verification Record
If you need a signed authorization decision, use:
POST /evaluate

Error Responses

400 Bad Request

{
  "error": "Invalid request"
}

401 Unauthorized

{
  "error": "Unauthorized"
}

404 Policy Not Found

{
  "error": "Policy not found"
}

422 Validation Failed

{
  "error": "Signal validation failed"
}

500 Internal Error

{
  "error": "Simulation failed"
}

Example — curl

curl -X POST https://your-runtime/simulate \
  -H "Authorization: Bearer $PARMANA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "policyId":"claims-approval",
    "policyVersion":"1.0.0",
    "signals":{
      "insurance_active":true,
      "risk_score":10,
      "vip_customer":false,
      "claim_amount":100
    }
  }'

How Simulation Fits Into Parmana

Policy Development

Simulation

Policy Validation

Production Evaluation

Attestation
Simulation is a developer tool. Production authorization should use /evaluate.