Outcomes & Scores
Track decision outcomes, measure accuracy scores, view calibration data, and manage decision chains.
Decision Intelligence is AskVerdict's system for closing the feedback loop on your AI-powered verdicts. After a verdict runs, you can record what actually happened, and the system calculates a Brier score to measure how well-calibrated your AI-assisted decisions are over time.
All endpoints in this section require authentication via Authorization: Bearer <token>.
Outcomes
Outcomes connect a completed debate back to real-world results. Every completed debate automatically gets a pending outcome record — it waits until you report what happened.
Submit Outcome
/api/debates/:id/outcomeRecord the real-world result of a debate verdict.
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Required | The debate UUID to record an outcome for. |
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
outcomeStatus | string | Required | Result of the decision. One of: 'correct', 'partially_correct', 'wrong', 'too_early'. |
outcomeNotes | string | Optional | Free-text description of what actually happened. Max 500 characters. |
satisfactionScore | integer | Optional | How satisfied you are with the outcome on a scale of 1–5. |
Outcome Status Values
| Value | Meaning |
|---|---|
correct | The verdict's recommended course of action led to the expected positive result |
partially_correct | The verdict was roughly right but missed important nuance |
wrong | The verdict's recommendation did not play out as expected |
too_early | Not enough time has passed to evaluate the outcome yet |
Example Request
curl -X POST https://api.askverdict.ai/api/debates/dbt_abc123/outcome \
-H "Authorization: Bearer vrd_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"outcomeStatus": "correct",
"outcomeNotes": "We shipped the refactor in Q1 and cut P95 latency by 40%.",
"satisfactionScore": 5
}'Response
After the response is returned, your decision score is recalculated asynchronously — the updated Brier score will be available within seconds at GET /api/scores/me.
Error Responses
| Code | Error | Description |
|---|---|---|
400 | VALIDATION_ERROR | Invalid outcomeStatus or field constraint violated |
404 | NOT_FOUND | No outcome record exists for this debate |
Skip Outcome
/api/debates/:id/outcome/skipMark a pending outcome as skipped — it will not affect your decision score.
Use this when a debate was exploratory and you do not want to record a real-world result.
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Required | The debate UUID to skip. |
Example Request
curl -X POST https://api.askverdict.ai/api/debates/dbt_abc123/outcome/skip \
-H "Authorization: Bearer vrd_your_api_key"Response
Set Outcome Reminder
/api/debates/:id/outcome/reminderSet or update the date when you want to be reminded to record an outcome.
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Required | The debate UUID. |
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
reminderAt | string (ISO 8601) | Required | The datetime to send the reminder. Must be a valid ISO 8601 datetime string. |
Example Request
curl -X PATCH https://api.askverdict.ai/api/debates/dbt_abc123/outcome/reminder \
-H "Authorization: Bearer vrd_your_api_key" \
-H "Content-Type: application/json" \
-d '{ "reminderAt": "2026-06-01T09:00:00Z" }'Response
Error Responses
| Code | Error | Description |
|---|---|---|
400 | VALIDATION_ERROR | reminderAt is not a valid ISO 8601 datetime |
404 | NOT_FOUND | No outcome record for this debate |
Get Outcome for a Debate
/api/debates/:id/outcomeFetch the outcome record for a specific debate.
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Required | The debate UUID. |
Example Request
curl https://api.askverdict.ai/api/debates/dbt_abc123/outcome \
-H "Authorization: Bearer vrd_your_api_key"Response
Error Responses
| Code | Error | Description |
|---|---|---|
404 | NOT_FOUND | No outcome record for this debate or debate does not belong to you |
List Pending Outcomes
/api/outcomes/pendingList all debates that have a pending outcome waiting to be recorded.
Returns debates where you have not yet submitted an outcome, are not skipped, and are not marked too_early. Useful for building reminder UIs or periodic review workflows.
Example Request
curl https://api.askverdict.ai/api/outcomes/pending \
-H "Authorization: Bearer vrd_your_api_key"Response
Outcome History
/api/outcomes/historyPaginated list of all resolved outcome records.
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
limit | integer | Optional | Number of records to return. Default: 20. |
offset | integer | Optional | Records to skip for pagination. Default: 0. |
domain | string | Optional | Filter by domain category. One of: 'business', 'technology', 'health', 'legal', 'personal', 'finance', 'education', 'other'. |
Example Request
curl "https://api.askverdict.ai/api/outcomes/history?limit=10&offset=0&domain=technology" \
-H "Authorization: Bearer vrd_your_api_key"Response
Decision Scores
The scoring system tracks how well-calibrated your AI-assisted decisions are over time using the Brier score — a standard probabilistic accuracy metric. Lower Brier scores indicate better calibration.
Get Your Score
/api/scores/meRetrieve your current decision score and per-domain breakdown.
Example Request
curl https://api.askverdict.ai/api/scores/me \
-H "Authorization: Bearer vrd_your_api_key"Response
Score Field Reference
| Field | Type | Description |
|---|---|---|
brierScore | number | Probabilistic accuracy: 0.0 (perfect) to 1.0 (worst). Default 0.5 until resolved outcomes exist. |
totalTracked | integer | Total number of debates with outcome records. |
totalResolved | integer | Debates with a correct, partially_correct, or wrong outcome. |
domainScores | object | Per-domain Brier scores keyed by domain category name. |
accuracyPercentage | number | Human-readable score derived from Brier score (0–100). |
streak | integer | Count of consecutive correct outcomes ending at the most recent resolved decision. |
Get Accuracy Trend
/api/scores/me/trendTime-series accuracy data for charting your decision quality over time.
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
days | integer | Optional | Number of days to look back. Default: 90. |
Example Request
curl "https://api.askverdict.ai/api/scores/me/trend?days=90" \
-H "Authorization: Bearer vrd_your_api_key"Response
An empty array is returned if no resolved outcomes exist yet. Each data point represents:
| Field | Description |
|---|---|
date | ISO timestamp of this data point |
brierScore | Brier score at this point in time |
rollingAccuracy | Accuracy percentage (0–100) |
sampleSize | Number of resolved outcomes used in this calculation |
Get Calibration Buckets
/api/scores/me/calibrationCalibration curve data comparing predicted probabilities to actual outcome rates.
Calibration data shows whether you trust the right verdicts. A well-calibrated user whose verdicts predict 80% confidence should see roughly 80% correct outcomes in that probability bucket.
Example Request
curl https://api.askverdict.ai/api/scores/me/calibration \
-H "Authorization: Bearer vrd_your_api_key"Response
Calibration Bucket Fields
| Field | Type | Description |
|---|---|---|
predictedRange | [number, number] | The probability range this bucket covers, e.g. [0.7, 0.8] means 70–80% predicted confidence |
actualRate | number | Fraction of outcomes in this bucket that were actually correct (0.0–1.0) |
count | integer | Number of resolved decisions that fell into this bucket |
An empty array is returned if there are fewer resolved outcomes than needed to form reliable buckets.
Get Domain Accuracies
/api/scores/me/domainsPer-domain Brier score breakdown showing where your decision-making is strongest and weakest.
Example Request
curl https://api.askverdict.ai/api/scores/me/domains \
-H "Authorization: Bearer vrd_your_api_key"Response
Domain Field Reference
| Field | Type | Description |
|---|---|---|
domain | string | One of: business, technology, health, legal, personal, finance, education, other |
brierScore | number | Brier score for this domain (lower = better) |
sampleSize | integer | Number of resolved decisions in this domain |
trend | string | Direction of recent change: improving, stable, or declining |
Streaks
Streaks measure how consistently you are using AskVerdict. A streak counts consecutive calendar days (UTC) on which you created at least one debate.
Get Streaks
/api/streaksRetrieve current streak, all-time longest streak, total debate count, and milestone progress.
Example Request
curl https://api.askverdict.ai/api/streaks \
-H "Authorization: Bearer vrd_your_api_key"Response
Response Fields
| Field | Type | Description |
|---|---|---|
currentStreak | integer | Consecutive days ending today (or yesterday if no debate yet today) |
longestStreak | integer | All-time longest consecutive-day run |
totalDebates | integer | Total non-deleted debates ever created |
milestones | array | Progress toward milestone thresholds: 10, 25, 50, 100, 250, 500 debates |
milestones[].count | integer | The milestone total debate count |
milestones[].reached | boolean | Whether this milestone has been reached |
milestones[].reachedAt | string? | ISO timestamp of the debate that crossed this threshold |
Error Responses
| Code | Error | Description |
|---|---|---|
500 | STREAKS_ERROR | Internal error computing streak data |
Decision Chains
Decision chains let you group related debates into a connected narrative — tracking how one decision leads to follow-up questions, reversals, or refinements over time.
Create a Chain
/api/chainsCreate a new decision chain starting from a root debate.
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
name | string | Required | Descriptive name for this chain. 1–200 characters. |
rootDebateId | string (UUID) | Required | The UUID of the first debate in the chain. |
Example Request
curl -X POST https://api.askverdict.ai/api/chains \
-H "Authorization: Bearer vrd_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"name": "Q1 Infrastructure Decisions",
"rootDebateId": "dbt_abc123"
}'Response
Error Responses
| Code | Error | Description |
|---|---|---|
400 | VALIDATION_ERROR | Invalid name or rootDebateId is not a valid UUID |
404 | NOT_FOUND | rootDebateId does not exist or does not belong to you |
List Chains
/api/chainsList all decision chains belonging to the authenticated user.
Example Request
curl https://api.askverdict.ai/api/chains \
-H "Authorization: Bearer vrd_your_api_key"Response
Get Chain Detail
/api/chains/:idFetch the full chain with all linked debate nodes.
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Required | The chain UUID. |
Example Request
curl https://api.askverdict.ai/api/chains/chn_def456 \
-H "Authorization: Bearer vrd_your_api_key"Response
Error Responses
| Code | Error | Description |
|---|---|---|
404 | NOT_FOUND | Chain does not exist or does not belong to you |
Add Debate to Chain
/api/chains/:id/debatesLink an existing debate into a chain, specifying its parent and relationship type.
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Required | The chain UUID. |
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
debateId | string (UUID) | Required | The UUID of the debate to add to the chain. |
parentDebateId | string (UUID) | Required | The UUID of the debate this one follows from. |
relationship | string | Required | How this debate relates to its parent. One of: 'follow_up', 'reversal', 'refinement'. |
Relationship Types
| Value | When to Use |
|---|---|
follow_up | This debate asks the next logical question given the parent verdict |
reversal | New information caused you to question or reverse the parent decision |
refinement | This debate narrows or sharpens the scope of the parent question |
Example Request
curl -X POST https://api.askverdict.ai/api/chains/chn_def456/debates \
-H "Authorization: Bearer vrd_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"debateId": "dbt_ghi789",
"parentDebateId": "dbt_abc123",
"relationship": "follow_up"
}'Response
Error Responses
| Code | Error | Description |
|---|---|---|
400 | VALIDATION_ERROR | Invalid UUID or relationship value |
404 | NOT_FOUND | Chain or debate does not exist, or does not belong to you |
Delete Chain
/api/chains/:idPermanently delete a decision chain. Does not delete the linked debates.
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Required | The chain UUID. |
Example Request
curl -X DELETE https://api.askverdict.ai/api/chains/chn_def456 \
-H "Authorization: Bearer vrd_your_api_key"Response
Returns 204 No Content on success.
Error Responses
| Code | Error | Description |
|---|---|---|
404 | NOT_FOUND | Chain does not exist or does not belong to you |
Get Chain Context
/api/chains/:id/contextGet a summarized context object from a chain, suitable for injecting into new debates.
When you start a new debate and want it to be aware of prior related decisions, use this endpoint to retrieve a compact summary. Pass the returned context as the context field when creating a new verdict.
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Required | The chain UUID. |
Example Request
curl https://api.askverdict.ai/api/chains/chn_def456/context \
-H "Authorization: Bearer vrd_your_api_key"Response
Error Responses
| Code | Error | Description |
|---|---|---|
404 | NOT_FOUND | Chain does not exist or does not belong to you |
Similar Debates
Find debates that are semantically similar to a query string using vector embeddings.
Find Similar Debates
/api/similarFind past debates semantically similar to a natural-language question.
This endpoint uses vector similarity search (pgvector) to surface debates from your history that are close in meaning to a new question you are considering. If no embedding key is configured, the endpoint returns an empty result set rather than an error.
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
q | string | Required | The natural-language question to search against. Cannot be empty. |
limit | integer | Optional | Maximum results to return. Clamped to 1–20. Default: 5. |
Example Request
curl "https://api.askverdict.ai/api/similar?q=Should+we+outsource+our+DevOps+team&limit=5" \
-H "Authorization: Bearer vrd_your_api_key"Response
When no embedding provider key is available, the response is { "results": [] } with status 200.
Error Responses
| Code | Error | Description |
|---|---|---|
400 | MISSING_QUERY | q parameter was omitted or empty |
500 | SIMILAR_SEARCH_FAILED | Unexpected error during similarity search |
Recommendations
/api/recommendationsGet personalized debate recommendations based on your history, or trending debates for new users.
For users with at least 3 past debates, recommendations are based on keyword matching against your recent debate topics. For new users, trending public debates from the last 30 days are returned instead.
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
limit | integer | Optional | Number of recommendations to return. Clamped to 1–20. Default: 10. |
Example Request
curl "https://api.askverdict.ai/api/recommendations?limit=5" \
-H "Authorization: Bearer vrd_your_api_key"Response
The recommendationReason field is either "Based on your interests" (personalized) or "Trending on AskVerdict" (fallback for new users).
Error Responses
| Code | Error | Description |
|---|---|---|
500 | RECOMMENDATIONS_FAILED | Internal error loading recommendations |
Was this page helpful?