> ## Documentation Index
> Fetch the complete documentation index at: https://docs.continuouslabs.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Build Simulator

> Creates a Simulator from an OpenAPI or WSDL source. The build runs asynchronously.



## OpenAPI

````yaml /openapi/simulation.yaml post /v1/simulators
openapi: 3.1.0
info:
  description: >-
    The continuous-simulation API builds reusable Simulators and runs isolated
    Simulations and Worlds. This document describes the stable v1 public
    contract.
  title: continuous-simulation API
  version: v1
servers:
  - description: Continuous production API.
    url: https://api.continuouslabs.ai
security: []
tags:
  - description: Create and control isolated runtime instances of ready Simulators.
    name: simulations
    x-group: Simulations
  - description: Build, inspect, tag, and delete reusable Simulator artifacts.
    name: simulators
    x-group: Simulators
  - description: Create and control coordinated groups of Simulations.
    name: worlds
    x-group: Worlds
paths:
  /v1/simulators:
    post:
      tags:
        - simulators
      summary: Build Simulator
      description: >-
        Creates a Simulator from an OpenAPI or WSDL source. The build runs
        asynchronously.
      operationId: build-simulator
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateSimulatorRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Simulator'
          description: OK
        '400':
          content:
            application/problem+json:
              examples:
                simulator_unknown_parent:
                  $ref: '#/components/examples/simulator_unknown_parent'
              schema:
                $ref: '#/components/schemas/Error'
          description: Bad Request
        '401':
          $ref: '#/components/responses/Unauthorized'
        '409':
          content:
            application/problem+json:
              examples:
                simulator_not_ready_base:
                  $ref: '#/components/examples/simulator_not_ready_base'
              schema:
                $ref: '#/components/schemas/Error'
          description: Conflict
        '413':
          content:
            application/problem+json:
              examples:
                payload_too_large:
                  $ref: '#/components/examples/payload_too_large'
              schema:
                $ref: '#/components/schemas/Error'
          description: Request Entity Too Large
        '422':
          content:
            application/problem+json:
              examples:
                validation:
                  $ref: '#/components/examples/validation'
              schema:
                $ref: '#/components/schemas/Error'
          description: Unprocessable Entity
        '429':
          content:
            application/problem+json:
              examples:
                build_quota_exceeded:
                  $ref: '#/components/examples/build_quota_exceeded'
                build_rate_exceeded:
                  $ref: '#/components/examples/build_rate_exceeded'
              schema:
                $ref: '#/components/schemas/Error'
          description: Too Many Requests
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
        - apiKeyAuth: []
components:
  schemas:
    CreateSimulatorRequest:
      additionalProperties: false
      examples:
        - filter: []
          instructions: Return stable example data for every operation.
          name: billing-api
          spec: >-
            {"openapi":"3.1.0","info":{"title":"Billing
            API","version":"1.0.0"},"paths":{"/invoices":{"get":{"responses":{"200":{"description":"Invoice
            list."}}}}}}
          spec_kind: openapi
          tags:
            - latest
      properties:
        builder:
          description: Builder provider. Omission selects claude.
          enum:
            - openai
            - claude
          type: string
        filter:
          description: >-
            Surface selectors. At most 64 items and 1,024 characters or 4,096
            UTF-8 bytes per item.
          items:
            maxLength: 1024
            type: string
          maxItems: 64
          type: array
        instructions:
          description: >-
            Build guidance. At most 16,384 characters and 65,536 UTF-8 bytes.
            U+0000 is not permitted.
          maxLength: 16384
          type: string
        name:
          description: Simulator repository name. At most 128 ASCII bytes.
          maxLength: 128
          type: string
        parent:
          description: >-
            Parent Simulator reference. At most 272 characters and 1,088 UTF-8
            bytes.
          maxLength: 272
          type: string
        spec:
          description: >-
            OpenAPI or WSDL text. At most 67,108,864 decoded UTF-8 bytes. The
            complete encoded request must not exceed 100,663,296 bytes.
          type: string
        spec_kind:
          enum:
            - openapi
            - wsdl
          type: string
        tags:
          description: Tag components. At most 32 items and 128 ASCII bytes per item.
          items:
            maxLength: 128
            type: string
          maxItems: 32
          type: array
      required:
        - filter
        - tags
      type: object
    Simulator:
      additionalProperties: false
      examples:
        - artifact_digest: >-
            sha256:0000000000000000000000000000000000000000000000000000000000000000
          created_at: '2026-01-15T12:00:00Z'
          id: smr_01J8Z5X4K7M2N9P0Q1R2S3T4V5
          instructions: Return stable example data for every operation.
          name: billing-api
          owner: ws_01J8Z5X4K7M2N9P0Q1R2S3T4V4
          parent: ''
          status: ready
          tags:
            - latest
      properties:
        artifact_digest:
          type: string
        composition:
          $ref: '#/components/schemas/SimulatorComposition'
        created_at:
          format: date-time
          type: string
        error:
          $ref: '#/components/schemas/Error'
        id:
          type: string
        instructions:
          type: string
        name:
          type: string
        owner:
          type: string
        parent:
          type: string
        status:
          enum:
            - building
            - ready
            - failed
          type: string
        tags:
          items:
            type: string
          type: array
      required:
        - id
        - name
        - owner
        - tags
        - parent
        - status
        - artifact_digest
        - instructions
        - created_at
      type: object
    Error:
      additionalProperties: false
      properties:
        code:
          minLength: 1
          type: string
        detail:
          minLength: 1
          type: string
      required:
        - code
        - detail
      type: object
    SimulatorComposition:
      additionalProperties: false
      properties:
        custom:
          description: Inputs an interceptor serves under the custom role
          format: int64
          type: integer
        declared:
          description: Inputs the Simulator serves from a declared role
          format: int64
          type: integer
        entities:
          description: Entities the Simulator stores
          format: int64
          type: integer
        inputs:
          description: Inputs the routed operations declare
          format: int64
          type: integer
        intercepted:
          description: Inputs a custom operation leaves to its interceptor with no role
          format: int64
          type: integer
        operations:
          description: Operations the Simulator routes
          format: int64
          type: integer
        unsupported:
          description: Inputs the Simulator refuses
          format: int64
          type: integer
      required:
        - operations
        - entities
        - inputs
        - declared
        - custom
        - intercepted
        - unsupported
      type: object
  examples:
    simulator_unknown_parent:
      value:
        code: simulator_unknown
        detail: No Simulator was found with ID "smr_01J8Z5X4K7M2N9P0Q1R2S3T4V5".
    simulator_not_ready_base:
      value:
        code: simulator_not_ready
        detail: >-
          The base Simulator with ID "smr_01J8Z5X4K7M2N9P0Q1R2S3T4V5" is not
          ready. Wait for its build to finish before you retry.
    payload_too_large:
      value:
        code: payload_too_large
        detail: The API description exceeds the maximum allowed size.
    validation:
      value:
        code: validation
        detail: The request does not satisfy the API contract.
    build_quota_exceeded:
      value:
        code: build_quota_exceeded
        detail: >-
          The workspace has 2 active Simulator builds, which is its limit. Wait
          for a build to finish or ask an operator to increase the limit.
    build_rate_exceeded:
      value:
        code: build_rate_exceeded
        detail: >-
          The workspace has used its limit of 10 Simulator builds for the
          current UTC day. The limit resets at 2026-09-02T00:00:00Z.
    auth_invalid:
      value:
        code: auth_invalid
        detail: The API key is missing or invalid.
    internal:
      value:
        code: internal
        detail: The server encountered an unexpected error.
  responses:
    Unauthorized:
      content:
        application/problem+json:
          examples:
            auth_invalid:
              $ref: '#/components/examples/auth_invalid'
          schema:
            $ref: '#/components/schemas/Error'
      description: Unauthorized
    InternalServerError:
      content:
        application/problem+json:
          examples:
            internal:
              $ref: '#/components/examples/internal'
          schema:
            $ref: '#/components/schemas/Error'
      description: Internal Server Error
  securitySchemes:
    apiKeyAuth:
      bearerFormat: Continuous API key
      description: >-
        Use a Continuous API key. Send it in the Authorization header as a
        Bearer token.
      scheme: bearer
      type: http

````