---
title: "Fetch multi-cloud exploration results"
method: GET
path: "/multi-cloud/jobs/{jobId}/results"
tags: ["Multi-Cloud Strategy"]
---

# Fetch multi-cloud exploration results

`GET /multi-cloud/jobs/{jobId}/results`

## Request

- Base URL: `https://www.cloudworldmodel.ai/api`
- URL: `https://www.cloudworldmodel.ai/api/multi-cloud/jobs/{jobId}/results`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-PAYMENT`
  - API key in header `PAYMENT-SIGNATURE`

Retrieve the **final** results from a multi-cloud exploration job.

**Only returns data once the job has finished.** This endpoint returns
results exclusively when the job `status` is `completed`. While the job
is still `pending` or `running` it returns `400 INVALID_REQUEST`; a
`failed` job returns `500`.

**Polling pattern:**
- Poll `GET /multi-cloud/jobs/{jobId}` (or subscribe to `/stream`) until `status` is `completed`, then call this endpoint once for the final ranked strategies and comparison report.
- To read strategies as they accumulate while the job is still running, use `GET /multi-cloud/jobs/{jobId}/partial-results` instead — that endpoint returns `isComplete: false` until the job reaches a terminal state.
- For real-time streaming of progress, use the `/stream` endpoint.

**Response field names:**
The successful `200` response contains `topStrategies` (the highest-scoring strategies,
sorted by `metrics.compositeScore` descending) and `allStrategies` (every strategy
evaluated, also sorted). Do **not** use the field names `variants`, `strategies`, or
`ranked` — those do not exist in the response.

## Path parameters

- `jobId` string, uuid, required

## Query parameters

- `providers` string

## Response `200`

Job results (partial or complete based on job status)

- object
  - `jobId` string
  - `status` 'pending' | 'running' | 'completed' | 'failed' | 'cancelled'
  - `progress` number: Job progress percentage (0-100)
  - `isComplete` boolean: True if job is finished, false if still running or pending
  - `strategiesGenerated` number: Number of strategies generated so far
  - `allStrategies` Strategy[]: All raw strategies generated so far (available during and after generation)
    - `id` string, required: Unique strategy identifier
    - `name` string, required: Strategy name
    - `description` string, required: Strategy description
    - `allocations` ProviderAllocation[], required: Provider allocations in this strategy
      - `provider` 'aws' | 'gcp' | 'azure' | 'oci' | 'digitalocean': Cloud provider name
      - `computeInstances` integer: Number of compute instances on this provider
      - `databaseInstances` integer: Number of database instances on this provider
      - `storageGB` integer: Storage allocated to this provider (GB)
      - `trafficPercentage` number: Percentage of traffic routed to this provider
      - `regions` string[]: Regions used on this provider
      - `skuClass` string, required: Primary product-class label for this allocation. Derived from the two per-dimension fields below (`computeSkuClass`, `databaseSkuClass`) using the following precedence: if `computeSkuClass` is non-default (i.e. `do-droplet`, `bare-metal-compute`, or `free-tier-compute`), that compute class is used even when a `databaseSkuClass` is also present. Otherwise the `databaseSkuClass` is used when present; the final fallback is `general-compute`. Allocations that share the same `skuClass` are cost-comparable at the class level; allocations with different values are not directly comparable — see the parent Strategy's `crossClassNote` when present.
      - `computeSkuClass` string: Compute-dimension SKU class for this allocation. `general-compute` — standard dedicated-vCPU VMs (EC2, Compute Engine, Azure VMs, OCI VM.Standard/Flex; the default when no specific compute family is set), `do-droplet` — DigitalOcean Droplets (shared-vCPU cloud VMs; different resource model and performance guarantees from dedicated-vCPU instances), `free-tier-compute` — always-free / zero-cost compute (OCI Always Free AMD micro VMs; costs excluded from estimate totals), `bare-metal-compute` — dedicated bare-metal servers (OCI BM.Standard3.64, BM.Optimized3.36; no hypervisor overhead, full core isolation). Always present after annotation; defaults to `general-compute`.
      - `databaseSkuClass` string: Database-dimension SKU class for this allocation. Absent when no database service family is set (allocation carries no bespoke database tier). `managed-rdbms` — provisioned relational databases (RDS, Cloud SQL, Azure SQL, …), `oci-heatwave` — OCI MySQL HeatWave DB System and HeatWave Analytics Cluster (in-memory analytics accelerator; distinct billing model and capability profile from standard managed-rdbms — not directly cost-comparable), `serverless-db` — pay-per-use / auto-scaling databases (Aurora Serverless, Cloud Spanner, Autonomous DB, …), `managed-nosql` — wide-column or key-value NoSQL (Bigtable SSD/HDD, …).
    - `metrics` StrategyMetrics, required
      - `totalCostPerHour` number: Total hourly cost across all providers
      - `avgLatencyMs` number: Average latency (P50 estimate) in milliseconds
      - `p95LatencyMs` number: Estimated P95 latency in milliseconds (avgLatencyMs × 1.5)
      - `vendorLockInScore` number: Vendor lock-in score (0-100, higher = more locked in / harder to migrate away). Single-provider strategies score 55-84 depending on service proprietary-ness (Aurora Serverless scores higher than standard RDS); multi-provider strategies score 20-50 depending on traffic distribution and provider count.
      - `dataPortabilityScore` number: Data portability score (0-100, higher = more portable)
      - `geographicCoverage` number: Geographic coverage score (0-100)
      - `compositeScore` number: Overall weighted composite score (0-10)
      - `migrationEgressCost` number: One-time data-migration egress cost estimate (USD) — the cost of moving the workload's stored data out of the source provider. Computed as `EGRESS_PER_GB_RATES[sourceProvider] × storageGB`. Always present; zero-valued strategies have zero storage in the workload profile.
      - `egressCostPerHour` number: Estimated ongoing internet egress cost per hour (USD) — the recurring cost of serving outbound responses to external users. Derived from `trafficRPS` using a 2 KB average response payload (RPS × 3600 s/hr × 0.000002 GB/request) and each provider's `INTERNET_EGRESS_RATES` overage rate (USD/GB), after deducting each provider's free monthly egress allowance (converted to an hourly GB budget): OCI 10,000 GB/month (Always Free, flat), DigitalOcean 1,000 GB/instance/month (scales with computeInstances), AWS 100 GB/month, GCP 200 GB/month (Americas), Azure 5 GB/month. For multi-provider strategies the cost is traffic-share-weighted across all allocations. This estimate is added into `totalCostPerHour` so rankings reflect the full ongoing cost including egress. Absent only on strategies with zero traffic. Volume within a provider's free tier produces `egressCostPerHour: 0`.
      - `latencyHeadroomPct` number: How far below the user's latency SLO this strategy sits, expressed as a percentage of the SLO limit. Computed as max(0, (SLO − p95LatencyMs) / SLO × 100). A value of 13.75 means p95 latency is 13.75% below the SLO limit — the strategy has that much buffer before it would breach the target. 0 means the strategy is at or above the SLO limit. Absent for strategies that exceed the SLO.
    - `tradeoffs` string[], required: Key tradeoffs of this strategy
    - `recommendations` string[], required: Recommendations for this strategy
    - `suggestedResources` object[]: Materializable SKU objects for each resource type in this strategy. Each entry identifies the canonical instance size, unit count, and per-unit hourly rate so consumers can pre-populate infrastructure manifests or compare costs directly.
      - `provider` 'aws' | 'gcp' | 'azure' | 'oci' | 'digitalocean', required
      - `resourceType` 'compute' | 'database' | 'storage', required
      - `size` string, required: Canonical instance/SKU identifier (e.g. "t3.medium", "db.t3.medium", "s3-standard")
      - `count` number, required: Number of instances (or GB for storage)
      - `hourlyRate` number, required: Per-unit hourly cost in USD
    - `securityRecommendations` string[]: Security product identifiers recommended for this strategy (e.g. `aws-waf`, `gcp-cloud-armor`, `azure-waf`, `oci-waf`). These are WAF/firewall palette IDs that operators can add to protect each provider footprint.
    - `crossClassNote` string: Present only when this strategy's allocations span more than one class in either the compute dimension (comparing `computeSkuClass` values) or the database dimension (comparing `databaseSkuClass` values). Each dimension is evaluated independently so a compute-tier mismatch is never masked by a shared database tier, and vice-versa. The note names the mismatched dimension(s) and warns that cost and latency figures across those allocations may not be directly comparable because they model different product tiers. Absent when all allocations share the same class in both dimensions.
    - `costBreakdown` ProviderCostBreakdown[], required: Per-provider cost breakdown for this strategy. One entry per provider allocation, each showing compute, database, storage, and egress costs attributed to that provider's slice of the workload. `egressCostPerHour` in each entry reflects the overage cost after deducting the provider's free monthly egress allowance (see `ProviderCostBreakdown`). `totalCostPerHour` in each entry is the sum of all four line items for that slice.
      - `provider` 'aws' | 'gcp' | 'azure' | 'oci' | 'digitalocean', required: Cloud provider for this allocation slice
      - `computeCostPerHour` number, required: Hourly compute cost for this provider slice (USD)
      - `databaseCostPerHour` number, required: Hourly database cost for this provider slice (USD)
      - `storageCostPerHour` number, required: Hourly storage cost for this provider slice (USD)
      - `egressCostPerHour` number, required: Hourly internet egress cost attributed to this provider slice (USD), after deducting the provider's free monthly egress allowance (converted to an hourly GB budget — ÷ 730). Free allowances: OCI 10,000 GB/month (Always Free, flat), DigitalOcean 1,000 GB/instance/month (scales with computeInstances), AWS 100 GB/month, GCP 200 GB/month (Americas), Azure 5 GB/month. Volume within the free tier produces zero. Zero also when trafficRPS is 0.
      - `totalCostPerHour` number, required: Sum of compute + database + storage + egress costs for this slice (USD)
      - `computeInstances` number, required: Number of compute instances in this provider slice
      - `databaseInstances` number, required: Number of database instances in this provider slice
      - `storageGB` number, required: Total storage provisioned in this provider slice (GB)
      - `computeUnitRate` number: Per-instance hourly compute rate used for this slice (USD/hr)
      - `databaseUnitRate` number: Per-instance hourly database rate used for this slice (USD/hr)
      - `storageUnitRate` number: Per-GB storage rate used (USD/GB/hr, on a per-1000-GB basis)
      - `egressFreeTierExhaustedAtRPS` number: The requests-per-second (RPS) threshold at which this provider's hourly egress free-tier allowance is fully consumed, given the current traffic share and instance count. Below this value egressCostPerHour is $0; above it the overage rate applies. Computed as Math.round(freeHourlyGB / (RPS_TO_GB_PER_HOUR × share)), where RPS_TO_GB_PER_HOUR = 0.0072 and freeHourlyGB = monthlyFreeGB / 730 (DigitalOcean scales by computeInstances). Omitted when trafficPercentage is 0 or when the provider has no free egress allowance.
      - `databaseServiceFamily` string: Database product sub-family override applied to this slice (e.g. "cloud-sql", "aurora-serverless", "autonomous-db"). Absent when the provider's default managed database rate is used.
  - `topStrategies` Strategy[]: Top 10 optimized strategies (only available when status is completed)
    - `id` string, required: Unique strategy identifier
    - `name` string, required: Strategy name
    - `description` string, required: Strategy description
    - `allocations` ProviderAllocation[], required: Provider allocations in this strategy
      - `provider` 'aws' | 'gcp' | 'azure' | 'oci' | 'digitalocean': Cloud provider name
      - `computeInstances` integer: Number of compute instances on this provider
      - `databaseInstances` integer: Number of database instances on this provider
      - `storageGB` integer: Storage allocated to this provider (GB)
      - `trafficPercentage` number: Percentage of traffic routed to this provider
      - `regions` string[]: Regions used on this provider
      - `skuClass` string, required: Primary product-class label for this allocation. Derived from the two per-dimension fields below (`computeSkuClass`, `databaseSkuClass`) using the following precedence: if `computeSkuClass` is non-default (i.e. `do-droplet`, `bare-metal-compute`, or `free-tier-compute`), that compute class is used even when a `databaseSkuClass` is also present. Otherwise the `databaseSkuClass` is used when present; the final fallback is `general-compute`. Allocations that share the same `skuClass` are cost-comparable at the class level; allocations with different values are not directly comparable — see the parent Strategy's `crossClassNote` when present.
      - `computeSkuClass` string: Compute-dimension SKU class for this allocation. `general-compute` — standard dedicated-vCPU VMs (EC2, Compute Engine, Azure VMs, OCI VM.Standard/Flex; the default when no specific compute family is set), `do-droplet` — DigitalOcean Droplets (shared-vCPU cloud VMs; different resource model and performance guarantees from dedicated-vCPU instances), `free-tier-compute` — always-free / zero-cost compute (OCI Always Free AMD micro VMs; costs excluded from estimate totals), `bare-metal-compute` — dedicated bare-metal servers (OCI BM.Standard3.64, BM.Optimized3.36; no hypervisor overhead, full core isolation). Always present after annotation; defaults to `general-compute`.
      - `databaseSkuClass` string: Database-dimension SKU class for this allocation. Absent when no database service family is set (allocation carries no bespoke database tier). `managed-rdbms` — provisioned relational databases (RDS, Cloud SQL, Azure SQL, …), `oci-heatwave` — OCI MySQL HeatWave DB System and HeatWave Analytics Cluster (in-memory analytics accelerator; distinct billing model and capability profile from standard managed-rdbms — not directly cost-comparable), `serverless-db` — pay-per-use / auto-scaling databases (Aurora Serverless, Cloud Spanner, Autonomous DB, …), `managed-nosql` — wide-column or key-value NoSQL (Bigtable SSD/HDD, …).
    - `metrics` StrategyMetrics, required
      - `totalCostPerHour` number: Total hourly cost across all providers
      - `avgLatencyMs` number: Average latency (P50 estimate) in milliseconds
      - `p95LatencyMs` number: Estimated P95 latency in milliseconds (avgLatencyMs × 1.5)
      - `vendorLockInScore` number: Vendor lock-in score (0-100, higher = more locked in / harder to migrate away). Single-provider strategies score 55-84 depending on service proprietary-ness (Aurora Serverless scores higher than standard RDS); multi-provider strategies score 20-50 depending on traffic distribution and provider count.
      - `dataPortabilityScore` number: Data portability score (0-100, higher = more portable)
      - `geographicCoverage` number: Geographic coverage score (0-100)
      - `compositeScore` number: Overall weighted composite score (0-10)
      - `migrationEgressCost` number: One-time data-migration egress cost estimate (USD) — the cost of moving the workload's stored data out of the source provider. Computed as `EGRESS_PER_GB_RATES[sourceProvider] × storageGB`. Always present; zero-valued strategies have zero storage in the workload profile.
      - `egressCostPerHour` number: Estimated ongoing internet egress cost per hour (USD) — the recurring cost of serving outbound responses to external users. Derived from `trafficRPS` using a 2 KB average response payload (RPS × 3600 s/hr × 0.000002 GB/request) and each provider's `INTERNET_EGRESS_RATES` overage rate (USD/GB), after deducting each provider's free monthly egress allowance (converted to an hourly GB budget): OCI 10,000 GB/month (Always Free, flat), DigitalOcean 1,000 GB/instance/month (scales with computeInstances), AWS 100 GB/month, GCP 200 GB/month (Americas), Azure 5 GB/month. For multi-provider strategies the cost is traffic-share-weighted across all allocations. This estimate is added into `totalCostPerHour` so rankings reflect the full ongoing cost including egress. Absent only on strategies with zero traffic. Volume within a provider's free tier produces `egressCostPerHour: 0`.
      - `latencyHeadroomPct` number: How far below the user's latency SLO this strategy sits, expressed as a percentage of the SLO limit. Computed as max(0, (SLO − p95LatencyMs) / SLO × 100). A value of 13.75 means p95 latency is 13.75% below the SLO limit — the strategy has that much buffer before it would breach the target. 0 means the strategy is at or above the SLO limit. Absent for strategies that exceed the SLO.
    - `tradeoffs` string[], required: Key tradeoffs of this strategy
    - `recommendations` string[], required: Recommendations for this strategy
    - `suggestedResources` object[]: Materializable SKU objects for each resource type in this strategy. Each entry identifies the canonical instance size, unit count, and per-unit hourly rate so consumers can pre-populate infrastructure manifests or compare costs directly.
      - `provider` 'aws' | 'gcp' | 'azure' | 'oci' | 'digitalocean', required
      - `resourceType` 'compute' | 'database' | 'storage', required
      - `size` string, required: Canonical instance/SKU identifier (e.g. "t3.medium", "db.t3.medium", "s3-standard")
      - `count` number, required: Number of instances (or GB for storage)
      - `hourlyRate` number, required: Per-unit hourly cost in USD
    - `securityRecommendations` string[]: Security product identifiers recommended for this strategy (e.g. `aws-waf`, `gcp-cloud-armor`, `azure-waf`, `oci-waf`). These are WAF/firewall palette IDs that operators can add to protect each provider footprint.
    - `crossClassNote` string: Present only when this strategy's allocations span more than one class in either the compute dimension (comparing `computeSkuClass` values) or the database dimension (comparing `databaseSkuClass` values). Each dimension is evaluated independently so a compute-tier mismatch is never masked by a shared database tier, and vice-versa. The note names the mismatched dimension(s) and warns that cost and latency figures across those allocations may not be directly comparable because they model different product tiers. Absent when all allocations share the same class in both dimensions.
    - `costBreakdown` ProviderCostBreakdown[], required: Per-provider cost breakdown for this strategy. One entry per provider allocation, each showing compute, database, storage, and egress costs attributed to that provider's slice of the workload. `egressCostPerHour` in each entry reflects the overage cost after deducting the provider's free monthly egress allowance (see `ProviderCostBreakdown`). `totalCostPerHour` in each entry is the sum of all four line items for that slice.
      - `provider` 'aws' | 'gcp' | 'azure' | 'oci' | 'digitalocean', required: Cloud provider for this allocation slice
      - `computeCostPerHour` number, required: Hourly compute cost for this provider slice (USD)
      - `databaseCostPerHour` number, required: Hourly database cost for this provider slice (USD)
      - `storageCostPerHour` number, required: Hourly storage cost for this provider slice (USD)
      - `egressCostPerHour` number, required: Hourly internet egress cost attributed to this provider slice (USD), after deducting the provider's free monthly egress allowance (converted to an hourly GB budget — ÷ 730). Free allowances: OCI 10,000 GB/month (Always Free, flat), DigitalOcean 1,000 GB/instance/month (scales with computeInstances), AWS 100 GB/month, GCP 200 GB/month (Americas), Azure 5 GB/month. Volume within the free tier produces zero. Zero also when trafficRPS is 0.
      - `totalCostPerHour` number, required: Sum of compute + database + storage + egress costs for this slice (USD)
      - `computeInstances` number, required: Number of compute instances in this provider slice
      - `databaseInstances` number, required: Number of database instances in this provider slice
      - `storageGB` number, required: Total storage provisioned in this provider slice (GB)
      - `computeUnitRate` number: Per-instance hourly compute rate used for this slice (USD/hr)
      - `databaseUnitRate` number: Per-instance hourly database rate used for this slice (USD/hr)
      - `storageUnitRate` number: Per-GB storage rate used (USD/GB/hr, on a per-1000-GB basis)
      - `egressFreeTierExhaustedAtRPS` number: The requests-per-second (RPS) threshold at which this provider's hourly egress free-tier allowance is fully consumed, given the current traffic share and instance count. Below this value egressCostPerHour is $0; above it the overage rate applies. Computed as Math.round(freeHourlyGB / (RPS_TO_GB_PER_HOUR × share)), where RPS_TO_GB_PER_HOUR = 0.0072 and freeHourlyGB = monthlyFreeGB / 730 (DigitalOcean scales by computeInstances). Omitted when trafficPercentage is 0 or when the provider has no free egress allowance.
      - `databaseServiceFamily` string: Database product sub-family override applied to this slice (e.g. "cloud-sql", "aurora-serverless", "autonomous-db"). Absent when the provider's default managed database rate is used.
  - `comparisonReport` string: Markdown comparison report (only available when complete)
  - `providerTrustLevels` object: Per-provider rate trust level — the worst rateProvenance.basis across the pricing constants behind that provider's cost figures. "on-demand" means every contributing rate is a verified published list price; "estimated" means at least one contributing rate is a flat estimate, so treat that provider's ranking as approximate.
  - `preProvisionVerdict` PreProvisionVerdict: Conservative machine-readable verdict for the highest-ranked returned strategy. Exploration alone cannot return ship. The verdict endpoint can return ship when cost, latency, error-budget and recorded caller-attested resilience checks all pass. This is a planning decision, not independent verification or a production guarantee.
    - `decision` 'ship' | 'hold' | 'ship_with_changes', required: hold means a known supplied budget or latency requirement failed, or no candidate is available. ship_with_changes means the visible checks have no known failure but evidence or explicit budgets are missing. ship requires every required check to pass.
    - `candidateFingerprint` string, nullable, required: SHA-256 identity of the candidate ID, allocations, suggested resources and workload. Retain with test inputs; null when no candidate exists.
    - `strategy` PreProvisionVerdictStrategy, required
      - `id` string, required
      - `name` string, required
    - `reasons` object[], required
      - `code` 'no_candidate_strategy' | 'cost_budget_exceeded' | 'latency_slo_missed' | 'error_budget_exceeded' | 'resilience_validation_required' | 'resilience_check_failed' | 'resilience_evidence_insufficient' | 'required_checks_incomplete' | 'required_checks_passed', required
      - `message` string, required
    - `evidence` object, required
      - `cost` object, required
        - `estimatedPerHour` number, nullable, required: Modeled total cost per hour, including modeled egress.
        - `budgetCheck` 'pass' | 'fail' | 'not_provided', required
      - `latency` object, required
        - `estimatedP95Ms` number, nullable, required
        - `requirementMs` number, required
        - `sloCheck` 'pass' | 'fail' | 'not_evaluated', required
        - `headroomPct` number, nullable, required
      - `errorRate` object, required
        - `modeledFraction` number, nullable, required: Allocation-count-based modeled proxy, not an observed failure rate.
        - `budgetCheck` 'pass' | 'fail' | 'not_provided', required
      - `resilience` object, required
        - `status` 'not_evaluated' | 'pass' | 'fail', required
        - `reason` string, required
        - `provenance` 'recorded' | 'estimated'
        - `verification` 'caller_attested'
        - `report` CompletedResilienceEvidence: Caller-attested completed test report for the exact candidateFingerprint. Keep the fingerprint with the actual test inputs; never relabel a report from another architecture or workload. Recorded means observations recorded during the test, not externally verified production evidence. Estimated reports remain unevaluated for deployment gating.
          - `candidateFingerprint` string, required
          - `reportRef` string, required
          - `status` 'completed', required
          - `completedAt` string, date-time, required: Actual completion timestamp, not in the future.
          - `provenance` 'recorded' | 'estimated', required
          - `failureInjected` boolean, required
          - `recoveryObserved` boolean, required
          - `finalHealthy` boolean, required
          - `resilienceCheck` 'pass' | 'fail' | 'not_evaluated', required
          - `scope` string, required: Tested failures, test coverage, and pass criteria.
    - `uncertainty` object, required
      - `dataSource` 'simulation-model', required
      - `externallyValidated` false, required
      - `providerRateTrust` object, required
      - `limitations` string[], required
  - `completedAt` string, date-time
  - `estimateDisclaimer` string: Reminder that cost and latency figures are baseline planning estimates; validate with materialize + step under production load.
  - `methodology` object: Describes the data origin and validation basis for these results. Agents should read this object before interpreting cross-provider rankings or citing consistency across multiple independent runs as external evidence.
    - `dataSource` 'simulation-model': Origin of the result data. simulation-model means results come from the Cloud World Model deterministic simulation engine, not from live cloud APIs or external benchmark tooling.
    - `validationBasis` 'simulation_only' | 'calibrated_public_data' | 'provider_benchmark' | 'customer_observed' | 'mixed': Characterises how the underlying data has been validated externally. Currently only simulation_only is emitted. Future values (calibrated_public_data, provider_benchmark) can be added without removing or retyping this field.
    - `externallyValidated` boolean: Convenience boolean for agents that need a simple truth test without pattern-matching validationBasis strings. false whenever validationBasis is simulation_only.
    - `seedCount` integer: The number of random seeds used in this job own simulation. Always 1 per job. Running multiple independent jobs and observing consistent rankings reflects model stability, not external performance validation.
    - `note` string: Authoritative plain-English statement suitable for direct use by agents calibrating recommendation language. Static across all runs.
  - `interpretationScope` object: Machine-readable interpretation constraints attached alongside methodology. Agents must consult this object before forming any conclusion about provider performance.
    - `providerPerformanceScope` 'simulation-only': Scope of any provider-performance statement derivable from these results. Currently only simulation-only is emitted; future values (calibrated, empirically-validated) may be added without breaking change.
    - `externalValidation` boolean: Mirrors methodology.externallyValidated so agents that reach interpretationScope first get an unambiguous false without cross-referencing.
    - `crossSeedConsistencyMeans` 'simulation-model-consistency': Agreement across seeds proves the model is deterministic, not that cloud providers behave that way.
    - `untestedLoadExtrapolationAllowed` boolean: When false, any load level outside testedLoadLevels must be presented as a hypothesis requiring a new simulation, not a derived conclusion.
    - `prohibitedClaimCategories` string[]: Machine-readable constraint list; agents must check planned conclusions against each entry. Category labels are hyphenated enum tokens, not prose.
    - `permittedUses` string[]: What these results may legitimately be used for.
    - `testedLoadLevels` string[]: Derived from job config; only these levels are validated by this simulation run.
    - `untestedScenariosNote` string: Authoritative sentence defining how untested scenarios must be labelled.

## Other responses

- `400`: Job not completed yet
- `401`: No credentials provided to an API-key-protected endpoint. The response body includes a machine-readable `apiKeyAuth` block pointing to the key creation endpoint so agents can self-serve an API key without consulting the spec.
- `404`: Resource not found

---

[API](https://skmtc.dev/cloudworldmodel/apis/cloud-world-model-agent-api.md) · [All operations](https://skmtc.dev/cloudworldmodel/apis/cloud-world-model-agent-api/llms.txt) · [OpenAPI document](https://skmtc.dev/cloudworldmodel/apis/cloud-world-model-agent-api/revisions/ecc3ad1ff07f?raw)
