DecisioQ System Architecture Decision Concepts Decision List API Guide Client Kit Developer Center Decision Studio Quick Start Playground End-to-End Examples

DecisioQ API Reference

Authentication, public hosts, routes, request fields, response fields, errors, and executable API examples.

Recommended production pattern: Most applications call POST /api/v1/decide with only decisionId and businessData. DecisioQ automatically applies the catalog's recommended profile, weight strategy, ranking algorithm, constraints, and normalization unless explicitly overridden. Discover the decision once during integration or startup, then cache or configure its decisionId; the catalog does not need to be called before every request. New here? Start with the Quick Start.

Client integration kit

Download the versioned DecisioQ Client Kit 7.6.3 for the OpenAPI contract, Postman collection, JSON Schemas, request examples, .NET reference client, runnable sample, and production-readiness guidance.

Authentication

Protected DecisioQ routes require a bearer token issued by identity.vinquery.com. The Decision API and Decision Catalog validate incoming bearer tokens; the Decision API does not create, sign, or issue JWT tokens.

The hosted identity endpoint is https://identity.vinquery.com/connect/token.

Request a token with clientId, clientSecret, and audience. Send the returned token as Authorization: Bearer {token} when calling protected DecisioQ routes.

{
  "clientId": "{clientId}",
  "clientSecret": "{clientSecret}",
  "audience": "vinquery:api:decisioq"
}

The API Consumer must be enabled, allowed to request the DecisioQ audience, and linked to a DecisioQ account. The Decision API uses that account link for usage accounting.

Public hosts

ServiceBase URLPurpose
Identityhttps://identity.vinquery.comIssues JWT tokens for API Consumers.
Decision Cataloghttps://dks.vinquery.comReturns catalog discovery and decision metadata.
Decision APIhttps://dde.vinquery.comValidates and executes decision requests.

Request fields

This section defines the API syntax. For the business meaning, distinction, defaults, and combined behavior of these configuration choices, see Profiles and Scenarios in Decision Concepts.

FieldRequiredDescription
decisionIdYesStable catalog decision identifier, for example AUTO-AUCT-044.
profileIdNoDecision-specific profile returned by decision detail metadata. Omit to use the decision default.
scenarioIdNoDecision-specific scenario returned by decision detail metadata.
weightStrategyNoTechnical weighting mechanism. Omit it to use DecisioQ recommended priorities. Use AHP only with complete pairwise judgments. The legacy/internal value Expert is used with explicit client weights.
manualWeightsNoClient-established weights keyed by every authoritative criterionId. Unknown or missing criteria and invalid totals are rejected; accepted values are normalized.
algorithmNoAdvanced override: TOPSIS or WSM. Omit to use the resolved recommendation.
requestContextNoRequest metadata documented by the selected endpoint, such as a correlation identifier. Do not add locale, unit, currency, time-zone, or jurisdiction fields unless that endpoint's schema explicitly supports them.
optionsPrepared Criteria Mode onlyTwo or more candidate options. Each option contains optionId, optional name, and prepared criterion values.
businessDataBusiness Data Mode onlyDomain payload prepared by an Decision Preparation Model. Never combine this field with options unless a specific endpoint explicitly documents an exception.

Request context and units

Keep decision IDs, criterion IDs, option IDs, JSON properties, enum values, endpoint paths, profile IDs, and scenario IDs stable. Localize labels and formatting in the consuming application, not in the machine-readable contract.

Unless this API and the selected decision schema explicitly document unit-qualified values, convert measurements to the required canonical unit before submission. Never infer an input unit from locale. Treat the decision definition as authoritative for data type, canonical unit, accepted input units, conversion behavior, and validation.

{
  "requestContext": {
    "correlationId": "client-workflow-123"
  }
}
Current integration rule: Unless an endpoint explicitly documents units, locale, currency, time zone, jurisdiction, or presentation preferences, the API consumer is responsible for canonical input conversion and localized output presentation. Conceptual context objects and unit-bearing value objects are not valid production fields unless they appear in the endpoint schema.

Currency conversion is separate from measurement conversion. An exchange rate requires a rate source, valuation date, and conversion policy; automatic currency conversion must not be assumed.

Route reference

Operation Method Route Purpose
Decision API HealthGET
https://dde.vinquery.com/health
Anonymous readiness check for the Decision API.
Preview DecisionPOST
https://dde.vinquery.com/api/v1/validate
Validate business data and selected decision input without producing a recommendation.
Execute DecisionPOST
https://dde.vinquery.com/api/v1/decide
Execute using either Business Data Mode or Prepared Criteria Mode.
Record Decision OutcomePOST
https://dde.vinquery.com/api/v1/decision-outcomes
Link an accepted, rejected, or overridden recommendation and its realized result to a successful decision requestId.
Decision Outcome SummaryGET
https://dde.vinquery.com/api/v1/decision-outcomes/summary
Return account-scoped adoption and realized-value aggregates, optionally filtered by UTC time range.
Catalog HealthGET
https://dks.vinquery.com/health
Anonymous readiness check for the Decision Catalog.
Catalog SectorsGET
https://dks.vinquery.com/decisioncatalog
Load sectors, categories, decision counts, category metadata, and overview text.
Decision DetailGET
https://dks.vinquery.com/decisioncatalog/decisions/AUTO-AUCT-006
Load decision metadata, overview, criteria, profiles, scenarios, validation rules, and constraints.
Category DecisionsGET
https://dks.vinquery.com/decisioncatalog/sectors/{sectorCode}/categories/{categoryCode}/decisions
Load decisions for one selected sector/category.

Decision Catalog

GET https://dks.vinquery.com/decisioncatalog

GET https://dks.vinquery.com/decisioncatalog/decisions/AUTO-AUCT-006

The Decision Catalog is the source of decision metadata. Except for /health, catalog routes require Authorization: Bearer {token}.

{
  "catalogId": "DKR-AUTO-RUNTIME-001",
  "industry": "Automotive",
  "sectorCount": 13,
  "decisionCount": 1051,
  "sectors": [
    {
      "sectorCode": "AUTO-AUCT",
      "sector": "Auto Auctions",
      "decisionCount": 49,
      "categories": [
        {
          "categoryCode": "AUTO-AUCT-COMPLIANCE-RISK",
          "category": "Compliance & Risk",
          "decisionCount": 4
        }
      ]
    }
  ]
}

Preview Decision Validation

POST https://dde.vinquery.com/api/v1/validate

Returns validation status without producing a recommendation. Validation uses the same catalog metadata, required fields, candidate-count rules, numeric ranges, measurement rules, and hard constraints used by execution.

{
  "decisionId": "AUTO-AUCT-044",
  "requestContext": { "correlationId": "client-workflow-123" },
  "options": [
    {
      "optionId": "lot-001",
      "values": {
        "expected_profit_margin": 5200,
        "risk_exposure": 12,
        "title_confidence": 90,
        "repair_uncertainty": 12,
        "management_priority": 90
      }
    },
    {
      "optionId": "lot-002",
      "values": {
        "expected_profit_margin": 4700,
        "risk_exposure": 22,
        "title_confidence": 82,
        "repair_uncertainty": 22,
        "management_priority": 82
      }
    }
  ]
}

Execute Decision

POST https://dde.vinquery.com/api/v1/decide

Validates input, applies catalog-defined hard constraints, scores eligible options, and returns the recommendation and ranked result. Execution is deterministic; explanatory text does not override the ranking or recommendation.

{
  "decisionId": "AUTO-AUCT-044",
  "profileId": "balanced",
  "scenarioId": "standard",
  "requestContext": { "correlationId": "client-workflow-123" },
  "options": [
    {
      "optionId": "lot-001",
      "values": {
        "expected_profit_margin": 5200,
        "risk_exposure": 12,
        "title_confidence": 90,
        "repair_uncertainty": 12,
        "management_priority": 90
      }
    },
    {
      "optionId": "lot-002",
      "values": {
        "expected_profit_margin": 4700,
        "risk_exposure": 22,
        "title_confidence": 82,
        "repair_uncertainty": 22,
        "management_priority": 82
      }
    }
  ]
}

Decision Outcome Feedback

POST https://dde.vinquery.com/api/v1/decision-outcomes

After the host workflow knows what action was taken and what happened, submit outcome feedback using the requestId returned by the original successful /api/v1/decide call. DecisioQ verifies that the original execution belongs to the authenticated account. Feedback is reporting evidence only and never changes scoring, weights, profiles, or catalog knowledge automatically.

Idempotency: One outcome is stored per original decision request and account. Repeating identical content returns 200 OK with idempotentReplay: true. Submitting different content for the same decision request returns 409 DECISION_OUTCOME_CONFLICT.
FieldRequirementMeaning
originalDecisionRequestIdRequired UUIDThe successful decision response's requestId.
dispositionRequiredAccepted, Rejected, or Overridden.
selectedOptionIdOptionalThe option ultimately selected by the host workflow.
overrideReasonRequired only for OverriddenWhy the user or downstream policy selected a different action.
realizedOutcomeRequiredA concise realized status or result, not a prediction.
realizedValueOptionalAmount plus metric and optional unit or three-letter ISO currency. Keep each metric semantically consistent.
outcomeTimestampUtcRequiredWhen the outcome became known; cannot be more than five minutes in the future.
attributesOptional, maximum 25Non-sensitive customer-defined dimensions used for later analysis.
{
  "originalDecisionRequestId": "8ee2694f-2a93-42e6-9e37-626a3f83b02b",
  "disposition": "Overridden",
  "selectedOptionId": "lot-002",
  "overrideReason": "Post-decision inspection uncovered frame damage on lot-001.",
  "realizedOutcome": "Alternative vehicle sold within 21 days.",
  "realizedValue": {
    "amount": 2450.00,
    "metric": "grossProfit",
    "currency": "CAD"
  },
  "outcomeTimestampUtc": "2026-08-12T15:30:00Z",
  "attributes": { "inventoryChannel": "retail" }
}

Coding examples

const result = await fetch(`${decisionApi}/api/v1/decision-outcomes`, {
  method: "POST",
  headers: { Authorization: `Bearer ${token}`, "Content-Type": "application/json" },
  body: JSON.stringify({ ...outcome, originalDecisionRequestId: decision.requestId })
});
if (!result.ok) throw new Error(`Outcome ${result.status}: ${await result.text()}`);
using var response = await httpClient.PostAsJsonAsync("api/v1/decision-outcomes", new {
    originalDecisionRequestId = decision.RequestId,
    disposition = "Accepted",
    selectedOptionId = decision.DecisionResult.Winner,
    realizedOutcome = "Vehicle sold within target window.",
    outcomeTimestampUtc = DateTimeOffset.UtcNow
});
response.EnsureSuccessStatusCode();
status, body = send(
    api + "/api/v1/decision-outcomes",
    {**outcome, "originalDecisionRequestId": decision["requestId"]},
    {"Authorization": "Bearer " + token, "Content-Type": "application/json"})
if status >= 400:
    raise RuntimeError(f"Outcome {status}: {body}")

Outcome reporting

GET https://dde.vinquery.com/api/v1/decision-outcomes/summary?fromUtc=2026-08-01T00:00:00Z&toUtc=2026-09-01T00:00:00Z

The optional range is half-open: fromUtc is inclusive and toUtc is exclusive. The response contains totals, acceptance and override rates as decimal fractions, and realized-value groups separated by metric, unit, and currency. Stability remains decision-execution evidence from sensitivity analysis; correlate it with outcome summaries in the customer's analytics layer.

Responses

This page documents response contracts and endpoint-specific errors. For platform-wide status semantics, retry decisions, diagnostics, and operational handling, see HTTP Status Codes and Error Handling.

FieldDescription
requestIdServer-generated request identifier. Persist this value when the host application may later submit decision outcome feedback.
decisionResultThe deterministic winner, ranking, scores, and eligible/excluded outcomes.
explanationProvider-neutral explanation containing the summary, recommendation rationale, drivers, trade-offs, competitors, sensitivity and scenario summaries, risks, next steps, and assumptions. The value is null when no explanation is produced.
warningsNon-fatal validation or execution warnings.
requestContextThe effective correlation ID and compact decision reference.
configurationUsedThe authoritative weighting mechanism, independent ranking algorithm, profile, scenario, sensitivity settings, and normalized effectiveWeights with source (DecisionRecommended, SelectedProfile, AhpDerived, or ClientProvided).
decisionReceiptAlways-present durable evidence containing execution/correlation IDs, decision/catalog/profile/engine versions, normalized inputs, applied criteria and rules, exclusions, ranking contributions, findings, duration, and a SHA-256 integrity hash. Persist it with the business transaction for audit and replay.
decisionMetadataNormalized catalog metadata returned only when responseOptions.includeDecisionMetadata is true.
diagnosticsSafe execution counts returned only when responseOptions.includeDiagnostics is true.
{
  "service": "decisioq",
  "version": "7.6.3",
  "requestId": "8ee2694f-2a93-42e6-9e37-626a3f83b02b",
  "operation": "Decide",
  "success": true,
  "timestampUtc": "2026-08-02T12:00:00Z",
  "requestContext": {
    "correlationId": "client-workflow-123",
    "decision": {
      "id": "AUTO-AUCT-044",
      "name": "Approve High-Risk Purchase",
      "catalogVersion": "13.9.3"
    }
  },
  "configurationUsed": {
    "weightStrategy": { "value": "Expert", "source": "ExplicitRequest" },
    "rankingAlgorithm": { "value": "TOPSIS", "source": "ExplicitRequest" },
    "profile": { "value": "balanced", "source": "ExplicitRequest" },
    "sensitivity": { "value": false, "source": "PlatformDefault" }
  },
  "decisionReceipt": {
    "schemaVersion": "1.0",
    "executionId": "89df1c15a1b948e8a6e684b367f25610",
    "correlationId": "client-workflow-123",
    "versions": { "decisionId": "AUTO-AUCT-044", "catalogVersion": "13.9.3", "profileId": "balanced", "profileVersion": "2.1.0", "engineVersion": "7.6.3" },
    "normalizedInputs": [], "appliedCriteria": [], "appliedRules": [],
    "excludedCandidates": [], "rankingExplanation": [], "warnings": [],
    "validationFindings": ["Request validation passed.", "Constraint evaluation completed.", "Ranking completed."],
    "executionDurationMs": 4,
    "integrityAlgorithm": "SHA-256",
    "integrityHash": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
  },
  "decisionResult": {
    "winner": "lot-001",
    "ranking": [
      { "rank": 1, "optionId": "lot-001", "score": 0.812 },
      { "rank": 2, "optionId": "lot-002", "score": 0.644 }
    ]
  },
  "explanation": {
    "summary": "Controlled High-Margin Purchase provides the strongest overall fit.",
    "whyRecommended": "It offers the best balance across the configured criteria.",
    "keyDrivers": [],
    "tradeoffs": [],
    "competitors": [],
    "sensitivitySummary": "Sensitivity analysis was not included in this response.",
    "scenarioSummary": "The selected scenario was included in the decision context.",
    "risks": [],
    "nextSteps": [],
    "assumptions": []
  }
}

The standard response omits catalog narrative and diagnostics, but always includes decisionReceipt. Receipt arrays in this shortened example are populated in production responses. Store the complete receipt unchanged; changing any receipt evidence changes its SHA-256 hash. To request safe expansions, add "responseOptions": { "includeDecisionMetadata": true, "includeDiagnostics": true } to either supported request shape. AI prompt metadata is never returned.

Data Preparation Guide metadata

GET /api/decisioq/data-preparation-metadata returns the centralized Integration Platform preparation rules used by the documentation renderer. The renderer combines those rules with the selected decision detail from Decision Catalog; it does not modify decision knowledge or execute transformations.

Each generated criterion guide includes Decision Catalog business meaning, unit, and direction together with typical source fields, illustrative data preparation, validation guidance, assumptions, example raw business data, and an example prepared criteria mode.