Cloud World Model Multi Cloud API

The Multi-Cloud API from Cloud World Model — 1 operation(s) for multi-cloud.

GitHub OpenAPI

Operations 1

POST /multi-cloud/jobs/{jobId}/verdict Evaluate a candidate with completed resilience evidence #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/cloudworldmodel-ai:cloudworldmodel-ai-multi-cloud-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

cloudworldmodel-ai-multi-cloud-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Cloudworldmodel Ai Multi Cloud API
  version: 1.0.0
  contact:
    name: Cloud World Model API Support
    url: https://www.cloudworldmodel.ai
    email: api@cloudworldmodel.ai
  license:
    name: MIT
    url: https://opensource.org/licenses/MIT
  description: 'Operations tagged Multi-Cloud across 2 of this provider''s published API definitions: cloudworldmodel-ai-openapi.json, cloudworldmodel-ai-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://www.cloudworldmodel.ai/api
  description: Production
- url: http://localhost:5000/api
  description: Local development
security: []
tags:
- name: Multi-Cloud
paths:
  /multi-cloud/jobs/{jobId}/verdict:
    post:
      operationId: finalizeMultiCloudVerdict
      summary: Evaluate a candidate with completed resilience evidence
      description: 'Requires an owned completed exploration job. First send strategyId without resilienceEvidence to obtain the candidateFingerprint. Retain it with the actual tested architecture and workload, then submit a completed caller-attested report bound to that fingerprint. This endpoint does not independently verify reports or authenticate them as CWM chaos jobs. Estimated evidence cannot authorize ship. All cost, latency, error-budget and recorded resilience checks must pass. Optional budgets apply only to this evaluation. Read-only, non-persisted computation: subsequent results reads remain unchanged. Supports API keys and wallet-session bearer tokens.'
      tags:
      - Multi-Cloud
      security:
      - BearerAuth: []
      parameters:
      - name: jobId
        in: path
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PreProvisionFinalizeRequest'
      responses:
        '200':
          description: Candidate verdict with provenance and explicit reasons.
          content:
            application/json:
              schema:
                type: object
                required:
                - preProvisionVerdict
                properties:
                  preProvisionVerdict:
                    $ref: '#/components/schemas/PreProvisionVerdict'
        '400':
          description: Invalid evidence, fields, or future completion timestamp.
        '401':
          description: Authentication required.
        '403':
          description: Read scope required.
        '404':
          description: Job or candidate not found, or job is not owned by the caller.
        '409':
          description: Job is incomplete or report fingerprint does not match.
        '429':
          description: Rate limit exceeded.
    servers:
    - url: https://www.cloudworldmodel.ai/api
      description: Production
    - url: http://localhost:5000/api
      description: Local development
components:
  schemas:
    PreProvisionVerdict:
      type: object
      description: 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.
      required:
      - decision
      - strategy
      - candidateFingerprint
      - reasons
      - evidence
      - uncertainty
      properties:
        decision:
          type: string
          enum:
          - ship
          - hold
          - ship_with_changes
          description: 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:
          type: string
          nullable: true
          description: SHA-256 identity of the candidate ID, allocations, suggested resources and workload. Retain with test inputs; null when no candidate exists.
        strategy:
          oneOf:
          - $ref: '#/components/schemas/PreProvisionVerdictStrategy'
          - type: 'null'
          description: Strategy evaluated by this verdict; null when no candidate is available.
        reasons:
          type: array
          items:
            type: object
            required:
            - code
            - message
            properties:
              code:
                type: string
                enum:
                - 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
              message:
                type: string
        evidence:
          type: object
          required:
          - cost
          - latency
          - errorRate
          - resilience
          properties:
            cost:
              type: object
              required:
              - estimatedPerHour
              - budgetCheck
              properties:
                estimatedPerHour:
                  type: number
                  nullable: true
                  description: Modeled total cost per hour, including modeled egress.
                budgetCheck:
                  type: string
                  enum:
                  - pass
                  - fail
                  - not_provided
            latency:
              type: object
              required:
              - estimatedP95Ms
              - requirementMs
              - sloCheck
              - headroomPct
              properties:
                estimatedP95Ms:
                  type: number
                  nullable: true
                requirementMs:
                  type: number
                sloCheck:
                  type: string
                  enum:
                  - pass
                  - fail
                  - not_evaluated
                headroomPct:
                  type: number
                  nullable: true
            errorRate:
              type: object
              required:
              - modeledFraction
              - budgetCheck
              properties:
                modeledFraction:
                  type: number
                  nullable: true
                  description: Allocation-count-based modeled proxy, not an observed failure rate.
                budgetCheck:
                  type: string
                  enum:
                  - pass
                  - fail
                  - not_provided
            resilience:
              type: object
              required:
              - status
              - reason
              properties:
                status:
                  type: string
                  enum:
                  - not_evaluated
                  - pass
                  - fail
                reason:
                  type: string
                provenance:
                  type: string
                  enum:
                  - recorded
                  - estimated
                verification:
                  type: string
                  enum:
                  - caller_attested
                report:
                  $ref: '#/components/schemas/CompletedResilienceEvidence'
        uncertainty:
          type: object
          required:
          - dataSource
          - externallyValidated
          - providerRateTrust
          - limitations
          properties:
            dataSource:
              type: string
              enum:
              - simulation-model
            externallyValidated:
              type: boolean
              enum:
              - false
            providerRateTrust:
              type: object
              additionalProperties:
                type: string
                enum:
                - on-demand
                - spot
                - estimated
            limitations:
              type: array
              items:
                type: string
    CompletedResilienceEvidence:
      type: object
      additionalProperties: false
      description: 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.
      required:
      - candidateFingerprint
      - reportRef
      - status
      - completedAt
      - provenance
      - failureInjected
      - recoveryObserved
      - finalHealthy
      - resilienceCheck
      - scope
      properties:
        candidateFingerprint:
          type: string
          pattern: ^[a-f0-9]{64}$
        reportRef:
          type: string
          minLength: 1
          maxLength: 500
        status:
          type: string
          enum:
          - completed
        completedAt:
          type: string
          format: date-time
          description: Actual completion timestamp, not in the future.
        provenance:
          type: string
          enum:
          - recorded
          - estimated
        failureInjected:
          type: boolean
        recoveryObserved:
          type: boolean
        finalHealthy:
          type: boolean
        resilienceCheck:
          type: string
          enum:
          - pass
          - fail
          - not_evaluated
        scope:
          type: string
          minLength: 1
          maxLength: 2000
          description: Tested failures, test coverage, and pass criteria.
    PreProvisionFinalizeRequest:
      type: object
      additionalProperties: false
      required:
      - strategyId
      properties:
        strategyId:
          type: string
          minLength: 1
          maxLength: 200
        maxCostPerHour:
          type: number
          exclusiveMinimum: 0
          description: Optional explicit hourly cost budget, replacing the exploration budget check for this evaluation only.
        errorBudgetPct:
          type: number
          minimum: 0
          maximum: 100
          description: Optional explicit error budget percentage, replacing the exploration error-budget check for this evaluation only.
        resilienceEvidence:
          $ref: '#/components/schemas/CompletedResilienceEvidence'
    PreProvisionVerdictStrategy:
      type: object
      required:
      - id
      - name
      properties:
        id:
          type: string
        name:
          type: string
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API Key or Wallet Session JWT
      description: 'API key or wallet-session JWT authentication using Bearer tokens in the Authorization header.


        **How to authenticate:**

        1. Create an API key using POST /api/keys

        2. Include the key in the Authorization header: `Bearer cwm_live_<your_key>`

        3. All RL environment endpoints require authentication


        **Rate Limits:**

        - Default: 1000 requests/hour per key

        - Configurable per key

        - Returns 429 when exceeded

        '
    UiSessionCookie:
      type: apiKey
      in: cookie
      name: cwm_ui_session
      description: 'HttpOnly browser-workspace session cookie issued by

        `POST /api/ui/simulations`. It authorizes UI mutations for simulations

        owned by that browser workspace.

        '
    x402:
      type: apiKey
      in: header
      name: X-PAYMENT
      description: "x402 v2 Base micropayment option. Select the Base entry from\n`GET /api/billing/x402/config` `paymentOptions`, then send its signed USDC\nmicro-payment in the `X-PAYMENT` header to get full access to the metered\nendpoint in a single round-trip — no account, no API key, no sign-up required.\n\n**402 → pay → retry loop:**\n1. Call the endpoint without an `X-PAYMENT` header.\n2. Receive a `402 Payment Required` response. The body is a\n   standard JSON `PaymentRequired` object. The same payload is also\n   echoed as a base64-encoded string in the `PAYMENT-REQUIRED`\n   response header for clients that cannot access the body.\n3. Decode the `PaymentRequired` body (or the `PAYMENT-REQUIRED`\n   header) to read the exact `payTo` wallet,\n   USDC amount, network, and facilitator URL.\n4. Construct and sign the payment with your x402 client library.\n5. Retry the Base request with the `X-PAYMENT` header — the server\n   verifies via `https://facilitator.payai.network` and responds `200`.\n\n**Optional Solana:** When `paymentOptions` advertises a Solana entry, callers\nmay instead select it and use `PAYMENT-SIGNATURE`. Solana is an additional\noption; use `X-PAYMENT` for the Base option shown by this security scheme.\n\n**Discovery:** `GET /api/billing/x402/config` returns the live `payTo`\naddress, canonical `paymentOptions`, per-call-type USDC amounts, facilitator\nURL, and the credits-per-USDC conversion rate. Always fetch this before\nhardcoding any amounts or a payment header.\n\n**Price range:** $0.0030 per 3-credit call — $0.0050 per 5-credit\ncall (see `x-x402-price-usdc` on each\noperation for the exact amount).\n\n**Facilitator:** `https://facilitator.payai.network` (PayAI-operated,\nverifies the advertised Base and optional Solana options).\n"
    x402Solana:
      type: apiKey
      in: header
      name: PAYMENT-SIGNATURE
      description: 'Optional x402 v2 Solana payment alternative. Use this security option only

        when `GET /api/billing/x402/config` `paymentOptions` advertises a Solana

        network, then send its signed Solana USDC payment payload in the

        `PAYMENT-SIGNATURE` header. Include the option''s `feePayer` detail when

        constructing the transaction.


        For the primary Base payment option, select the `x402` security option

        instead and send its signed payment payload in the `X-PAYMENT` header.

        '
x-refined-from:
- cloudworldmodel-ai-openapi.json
- cloudworldmodel-ai-openapi.yml