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

# Published Blueprints

> Discover and run immutable published automation revisions.

A published Blueprint is a reusable automation whose public surface contains only a display-safe definition and input contract. Integrations can discover active Blueprints and start cloud runs without access to draft authoring data.

## Discover a Blueprint

<CodeGroup>
  ```typescript TypeScript theme={null}
  const { data } = await client.blueprints.list({ limit: 25 })
  const blueprint = await client.blueprints.get(data[0].id)
  ```

  ```python Python theme={null}
  blueprints = client.blueprints.list(limit=25)["data"]
  blueprint = client.blueprints.get(blueprints[0]["id"])
  ```
</CodeGroup>

Each resource includes its ID, command, name, description, active status, input declarations, and latest published revision.

## Run an immutable revision

<CodeGroup>
  ```typescript TypeScript theme={null}
  const started = await client.blueprints.runs.create(blueprint.id, {
    inputs: { account_id: "acct_123" },
    revisionId: blueprint.latestRevision.id,
    idempotencyKey: "account-review-acct-123-v1"
  })

  const finished = await client.blueprints.runs.wait(started.id)
  console.log(finished.outputs)
  ```

  ```python Python theme={null}
  started = client.blueprints.runs.create(
      blueprint["id"],
      {"account_id": "acct_123"},
      revision_id=blueprint["latestRevision"]["id"],
      idempotency_key="account-review-acct-123-v1",
  )
  finished = client.blueprints.runs.wait(started["id"])
  print(finished["outputs"])
  ```
</CodeGroup>

Supplying `revisionId` guarantees that the run uses that immutable published revision. Omit it to atomically pin the latest published revision when the run is created. Every run response includes the chosen `revisionId`.

## Lifecycle

Blueprint runs can report:

* `queued` or `running` while work is active
* `waiting_for_approval`, `paused`, or `user_controlling` when execution is suspended
* `completed`, `failed`, `cancelled`, or `interrupted` when terminal

The SDK `wait` helpers return on `completed`, `failed`, `cancelled`, or `interrupted`.

## Safe snapshot events

`GET /v1/blueprint-runs/{run_id}/events` returns at most one display-safe `run.snapshot` after the requested cursor. It never returns internal node events, browser observations, raw tool data, credentials, or provider details.

```typescript theme={null}
let cursor = 0
const page = await client.blueprints.runs.events(started.id, { after: cursor })
cursor = page.nextCursor
```

## Public boundary

The public API does not expose draft creation, graph mutation, validation, testing, or publishing. Those remain authenticated product workflows.

<Note>
  `client.blueprints.run()` remains a compatibility alias. New integrations should use `client.blueprints.runs.create()` and the complete runs lifecycle.
</Note>


## Related topics

- [TypeScript SDK](/sdks/typescript.md)
- [Infragrid overview](/overview.md)
- [Python SDK](/sdks/python.md)
- [List Blueprints](/reference/blueprints/list.md)
- [Run a Blueprint](/reference/blueprints/run.md)
