Coordination API
A multi-perspective decision engine. You supply the context and the stakeholders — the API reasons from each position, maps genuine tensions between them, and returns a structured decision with explicit tradeoffs, dissent, and confidence.
Designed to layer into existing tools. No UI required. The response is structured JSON your application can consume directly.
API Keys
All requests to /api/coordinate require a bearer token in the Authorization header.
Authorization: Bearer sk-stagecraft-your-key-here
Keys are issued per client. To request access, contact dean@stagecraft-ai.com.
POST /api/coordinate
Submit a problem with stakeholder perspectives. The API reasons from each position, identifies structural tensions, and synthesizes a decision or recommendation.
Request fields
| Field | Type | Required | Description |
|---|---|---|---|
| context | string | required | The problem, decision, or situation to reason about. Max 8,000 characters. |
| perspectives | array | required | The stakeholders you define. Each has a role (string) and mandate (string). Max 10 perspectives. |
| decision_required | boolean | optional | Default false. If true, the API commits to a specific call — no conditionals. If false, returns a recommendation that may name conditions. |
Example request
{
"context": "An insurance company receives a prior authorization request for non-emergency surgery. Clinical records are partially incomplete. The broker is pressuring for same-day binding.",
"perspectives": [
{ "role": "patient", "mandate": "Receive necessary care without financial ruin" },
{ "role": "adjuster", "mandate": "Evaluate claim validity and manage exposure" },
{ "role": "provider", "mandate": "Deliver appropriate care and receive timely reimbursement" },
{ "role": "shareholder", "mandate": "Protect profitability and reserve ratios" }
],
"decision_required": true
}
Response schema
| Field | Type | Description |
|---|---|---|
| decision | string | null | A committed call with no conditionals. Present when decision_required: true. |
| recommendation | string | null | A conditional recommendation naming what would change it. Present when decision_required: false. |
| rationale | string | Why this outcome over the alternatives, grounded in the specific tensions. |
| perspectives | object | Keyed by role. Each entry contains position, reasoning, non_negotiables, and acceptable_tradeoffs. |
| tensions | array | Structural conflicts between perspectives — where satisfying one mandate prevents satisfying another. |
| tradeoffs | array | What the decision sacrifices and for what. Names both sides specifically. |
| dissent | array | Every perspective that was overridden, with their position and why they lost. Not collapsed — each dissenter is named separately. |
| confidence | object | level (low/medium/high) plus factors: each missing fact paired with what the decision would change to if that fact were known. |
Interactive demo
Run a live call against the API. Load an example or build your own. Rate limited to 5 requests per hour.
GET /health
Returns server status. No authentication required. Use for uptime monitoring.
{ "status": "healthy" }