Bentley Systems · Arazzo Workflow

Bentley Provision an iModel Inside a New iTwin

Version 1.0.0

Create an iTwin project container, provision an iModel inside it, and wait for initialization.

1 workflow 2 source APIs 1 provider
View Spec View on GitHub Infrastructure EngineeringDigital TwinBIMCADReality CaptureConstructionAsset ManagementGeospatialiTwiniModelArazzoWorkflows

Provider

bentley-systems

Workflows

provision-imodel
Create an iTwin, create an iModel inside it, and poll until initialized.
Provisions a fresh iTwin project container, creates an iModel within that iTwin, and then polls the iModel until it reports an initialized state.
3 steps inputs: iModelDescription, iModelName, itwin outputs: iModelId, iModelState, iTwinId
1
createItwin
Create the top-level iTwin project container that will own the iModel and its reality data.
2
createImodel
Create an iModel inside the newly created iTwin. The iTwinId links the iModel to its owning project container.
3
pollInitialized
Poll the iModel until its state reports initialized. The iModels API provisions storage asynchronously, so the resource may start as notInitialized immediately after creation.

Source API Descriptions

Arazzo Workflow Specification

Raw ↑
arazzo: 1.0.1
info:
  title: Bentley Provision an iModel Inside a New iTwin
  summary: Create an iTwin project container, provision an iModel inside it, and wait for initialization.
  description: >-
    The canonical bootstrap flow for the iTwin Platform. It first creates an
    iTwin — the top-level project container — then creates an iModel inside it,
    and finally polls the iModel until its state reports initialized so that
    downstream changeset and named-version operations can safely begin. Each
    step spells out its request inline so the flow can be read and executed
    without opening the underlying OpenAPI descriptions.
  version: 1.0.0
  x-realizes-capability-ids:
  - BC-5060
  x-capability-derivation:
    method: 'deterministic join: sourceDescriptions -> per-tag OpenAPI -> tag/capability edge. No classification at this step.'
    min_confidence: 0.7
    sources:
    - capability_id: BC-5060
      capability_name: Digital Engineering & Asset Information Management
      spec: bentley-systems-imodels-api-openapi.yml
      confidence: 0.75
    model: Turbo EA Capabilities by Vincent Verdet — Turbo EA, https://github.com/vincentmakes/turbo-ea-capabilities, CC BY 4.0
sourceDescriptions:
- name: imodelsApi
  url: ../openapi/bentley-systems-imodels-api-openapi.yml
  type: openapi
- name: itwinsApi
  url: ../openapi/bentley-systems-itwins-api-openapi.yml
  type: openapi
workflows:
- workflowId: provision-imodel
  summary: Create an iTwin, create an iModel inside it, and poll until initialized.
  description: >-
    Provisions a fresh iTwin project container, creates an iModel within that
    iTwin, and then polls the iModel until it reports an initialized state.
  inputs:
    type: object
    required:
    - itwin
    - iModelName
    properties:
      itwin:
        type: object
        description: The iTwin creation payload (e.g. displayName, class, subClass).
      iModelName:
        type: string
        description: The human-readable name for the new iModel.
      iModelDescription:
        type: string
        description: An optional description for the new iModel.
  steps:
  - stepId: createItwin
    description: >-
      Create the top-level iTwin project container that will own the iModel and
      its reality data.
    operationId: CreateiTwin
    requestBody:
      contentType: application/json
      payload: $inputs.itwin
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      iTwinId: $response.body#/iTwin/id
  - stepId: createImodel
    description: >-
      Create an iModel inside the newly created iTwin. The iTwinId links the
      iModel to its owning project container.
    operationId: CreateIModel
    requestBody:
      contentType: application/json
      payload:
        iTwinId: $steps.createItwin.outputs.iTwinId
        name: $inputs.iModelName
        description: $inputs.iModelDescription
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      iModelId: $response.body#/id
      state: $response.body#/state
  - stepId: pollInitialized
    description: >-
      Poll the iModel until its state reports initialized. The iModels API
      provisions storage asynchronously, so the resource may start as
      notInitialized immediately after creation.
    operationId: GetIModel
    parameters:
    - name: iModelId
      in: path
      value: $steps.createImodel.outputs.iModelId
    successCriteria:
    - condition: $statusCode == 200
    - context: $response.body
      condition: $.state == "initialized"
      type: jsonpath
    retryAfter: 5
    retryLimit: 30
    outputs:
      iModelState: $response.body#/state
  outputs:
    iTwinId: $steps.createItwin.outputs.iTwinId
    iModelId: $steps.createImodel.outputs.iModelId
    iModelState: $steps.pollInitialized.outputs.iModelState

Work with this as data

Every workflow 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 arazzo workflows

4 MCP tools reach this
  • find_arazzoBrowse and filter every workflow in the catalog.
  • 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 workflow
curl "https://apis.io/api/v1/arazzo/bentley-systems-provision-imodel-workflow"
All arazzo workflows
curl "https://apis.io/api/v1/arazzo?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

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.