Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion development/api-development/sdks.mdx
Original file line number Diff line number Diff line change
@@ -1,27 +1,27 @@
---
title: "Comfy SDKs"

Check warning on line 2 in development/api-development/sdks.mdx

View check run for this annotation

Mintlify / Mintlify Validation (dripart) - vale-spellcheck

development/api-development/sdks.mdx#L2

Did you really mean 'SDKs'?
description: "Official Python and TypeScript SDKs for running ComfyUI workflows from your own application"

Check warning on line 3 in development/api-development/sdks.mdx

View check run for this annotation

Mintlify / Mintlify Validation (dripart) - vale-spellcheck

development/api-development/sdks.mdx#L3

Did you really mean 'SDKs'?
sidebarTitle: "SDK Overview"
icon: "code"
---

<Warning>
**Beta.** The SDKs and the Comfy API v2 they call are at `0.1.x`. The shape of the API can still change before we lock it down. Now is the cheapest time to tell us it is wrong. See [Feedback](#feedback).

Check warning on line 9 in development/api-development/sdks.mdx

View check run for this annotation

Mintlify / Mintlify Validation (dripart) - vale-spellcheck

development/api-development/sdks.mdx#L9

Did you really mean 'SDKs'?
</Warning>

The Comfy SDKs let your application run ComfyUI workflows and get the results back. You submit a workflow, ComfyUI executes it, and you download the outputs. The same code runs against Comfy Cloud or against a ComfyUI instance you host yourself. Only the base URL changes.

Check warning on line 12 in development/api-development/sdks.mdx

View check run for this annotation

Mintlify / Mintlify Validation (dripart) - vale-spellcheck

development/api-development/sdks.mdx#L12

Did you really mean 'SDKs'?

The SDKs are clients for the [Comfy API v2](/api-reference/v2/overview), a versioned HTTP API that we intend to support long term. New releases of ComfyUI will not break integrations built on it.

Check warning on line 14 in development/api-development/sdks.mdx

View check run for this annotation

Mintlify / Mintlify Validation (dripart) - vale-spellcheck

development/api-development/sdks.mdx#L14

Did you really mean 'SDKs'?

Things people build this way:

- Plugins that generate content inside another application, such as Blender or Krita

Check warning on line 18 in development/api-development/sdks.mdx

View check run for this annotation

Mintlify / Mintlify Validation (dripart) - vale-spellcheck

development/api-development/sdks.mdx#L18

Did you really mean 'Krita'?
- Consumer apps that run generation on behalf of their users
- Batch pipelines, for example running one workflow over every frame of a video
- Backend services that need many workflows in flight at once

<Note>
These SDKs drive ComfyUI **from the outside**. If you are writing custom nodes or frontend extensions that run **inside** ComfyUI, you want [Develop Custom Nodes](/custom-nodes/overview) instead. Those are a separate set of APIs.

Check warning on line 24 in development/api-development/sdks.mdx

View check run for this annotation

Mintlify / Mintlify Validation (dripart) - vale-spellcheck

development/api-development/sdks.mdx#L24

Did you really mean 'SDKs'?
</Note>

## Install
Expand All @@ -44,12 +44,12 @@

<CodeGroup>
```python Python
from comfy_sdk import Comfy

Check warning on line 47 in development/api-development/sdks.mdx

View check run for this annotation

Mintlify / Mintlify Validation (dripart) - vale-spellcheck

development/api-development/sdks.mdx#L47

Did you really mean 'comfy_sdk'?

# Comfy Cloud
client = Comfy(api_key="comfyui-...")

wf = client.workflows.from_file("workflow_api.json")

Check warning on line 52 in development/api-development/sdks.mdx

View check run for this annotation

Mintlify / Mintlify Validation (dripart) - vale-spellcheck

development/api-development/sdks.mdx#L52

Did you really mean 'wf'?

asset = client.assets.from_file("photo.png")
wf.set_input("10", "image", asset)
Expand Down Expand Up @@ -119,14 +119,14 @@
Works out of the box. Create an [API key](/development/api-development/getting-an-api-key) and pass it to the client.

<Note>
API access requires a paid Comfy Cloud subscription. The free tier does not include it. How many jobs you can run at once depends on your tier. See [Parallel Execution](/development/deploy/cloud#parallel-execution-concurrent-jobs).
API access requires a paid Comfy Cloud subscription. The free tier does not include it. How many jobs you can run at once depends on your tier. See [Concurrency Limits](/development/deploy/cloud#concurrency-limits).
</Note>

### Serverless deployment

A workflow you deployed through the [developer platform](https://platform.comfy.org) gets its own endpoint. Point `COMFY_BASE_URL` at it and use your API key, exactly as with Comfy Cloud. Everything in this guide works the same way.

Serverless deployments run one pinned workflow, so `get_workflow()` returns the executed graph (`format: "api"`).

Check warning on line 129 in development/api-development/sdks.mdx

View check run for this annotation

Mintlify / Mintlify Validation (dripart) - vale-spellcheck

development/api-development/sdks.mdx#L129

Did you really mean 'Serverless'?

### Your own ComfyUI

Expand All @@ -146,7 +146,7 @@

<CodeGroup>
```python Python
from comfy_sdk import Progress, Preview, OutputReady, StatusChange

Check warning on line 149 in development/api-development/sdks.mdx

View check run for this annotation

Mintlify / Mintlify Validation (dripart) - vale-spellcheck

development/api-development/sdks.mdx#L149

Did you really mean 'comfy_sdk'?

job = client.submit(wf)

Expand All @@ -154,7 +154,7 @@
match event:
case Progress() as p:
print(f"{p.value:.0%} {p.message}")
case Preview() as pv:

Check warning on line 157 in development/api-development/sdks.mdx

View check run for this annotation

Mintlify / Mintlify Validation (dripart) - vale-spellcheck

development/api-development/sdks.mdx#L157

Did you really mean 'pv'?
image = pv.to_pil()
case OutputReady() as o:
o.output.to_file(f"partial/{o.output.name}")
Expand Down Expand Up @@ -188,7 +188,7 @@

`result()` returns the finished job, or raises `JobFailed` with the node-level detail if execution failed. See the [SDK README](#reference) for your language for the full event catalog.

The stream is a live feed, not a replayable log. It exists so you can render progress, not so you can rely on it for results. Polling the job is what is authoritative, and `run()`, `wait()`, and `result()` fall back to polling automatically. See [Design Notes](/development/api-development/sdks-design#poll-first-stream-for-progress) for why.

Check warning on line 191 in development/api-development/sdks.mdx

View check run for this annotation

Mintlify / Mintlify Validation (dripart) - vale-spellcheck

development/api-development/sdks.mdx#L191

Did you really mean 'replayable'?

## Tracing an output back to its workflow

Expand All @@ -208,11 +208,11 @@

The same id is on an asset fetched on its own, so a file you found later still leads back to its job. It is `None` (TypeScript: `undefined`) for an asset you uploaded, which has no producing job.

From the job you can ask for the workflow behind it. This works for a job you did not submit in this process, rehydrated by id:

Check warning on line 211 in development/api-development/sdks.mdx

View check run for this annotation

Mintlify / Mintlify Validation (dripart) - vale-spellcheck

development/api-development/sdks.mdx#L211

Did you really mean 'rehydrated'?

<CodeGroup>
```python Python
wf = job.get_workflow()

Check warning on line 215 in development/api-development/sdks.mdx

View check run for this annotation

Mintlify / Mintlify Validation (dripart) - vale-spellcheck

development/api-development/sdks.mdx#L215

Did you really mean 'wf'?

if wf.format == "save":
... # the workflow as authored, canvas layout and Note nodes intact
Expand All @@ -236,11 +236,11 @@
| `format` | What you get | When |
|---|---|---|
| `save` | The authoring workflow at the version the job ran, with canvas layout and editor-only nodes such as Note | Jobs submitted from the Comfy Cloud editor, which pins a workflow version |
| `api` | The executed graph. Editor-only constructs are gone and Get/Set nodes are expanded | Everything else, including every job submitted through these SDKs today |

Check warning on line 239 in development/api-development/sdks.mdx

View check run for this annotation

Mintlify / Mintlify Validation (dripart) - vale-spellcheck

development/api-development/sdks.mdx#L239

Did you really mean 'SDKs'?

Jobs you submit through the SDK always return `api`, because v2 submission has no version-pinning fields yet. That will change; the discriminator is there so your code does not have to.

## What the SDKs cover today

Check warning on line 243 in development/api-development/sdks.mdx

View check run for this annotation

Mintlify / Mintlify Validation (dripart) - vale-spellcheck

development/api-development/sdks.mdx#L243

Did you really mean 'SDKs'?

The first version does one thing properly: run a workflow and get the results back.

Expand All @@ -259,7 +259,7 @@

## Reference

The SDK READMEs are the full reference for each language, including auth, assets, errors, and the low-level escape hatches.

Check warning on line 262 in development/api-development/sdks.mdx

View check run for this annotation

Mintlify / Mintlify Validation (dripart) - vale-spellcheck

development/api-development/sdks.mdx#L262

Did you really mean 'READMEs'?

<CardGroup cols={2}>
<Card title="Python SDK" icon="python" href="https://github.com/Comfy-Org/comfy-python-sdk">
Expand All @@ -269,7 +269,7 @@
<code>@comfyorg/sdk</code> on npm. Typed, async, with a low-level client.
</Card>
<Card title="Comfy API v2 Reference" icon="code" href="/api-reference/v2/overview">
The HTTP API underneath both SDKs. Use it directly from any language.

Check warning on line 272 in development/api-development/sdks.mdx

View check run for this annotation

Mintlify / Mintlify Validation (dripart) - vale-spellcheck

development/api-development/sdks.mdx#L272

Did you really mean 'SDKs'?
</Card>
<Card title="Design Notes" icon="compass" href="/development/api-development/sdks-design">
Why this API exists, how it relates to the existing ComfyUI APIs, and what comes next.
Expand All @@ -282,4 +282,4 @@

So tell us what is awkward, what you expected to find and did not, and what you ended up working around. The `#developer-platform` channel in [our Discord](https://discord.com/invite/comfyorg) is the place for it.

If you want a first-party SDK in another language, say so there. Both SDKs sit on the same documented HTTP contract, so any language can talk to the API today, but we would rather know where the demand is.

Check warning on line 285 in development/api-development/sdks.mdx

View check run for this annotation

Mintlify / Mintlify Validation (dripart) - vale-spellcheck

development/api-development/sdks.mdx#L285

Did you really mean 'SDKs'?
2 changes: 1 addition & 1 deletion development/cloud/api-reference.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@
### Upload Mask

<Note>
The `subfolder` parameter is accepted for API compatibility but ignored in cloud storage. All files are stored in a flat, content-addressed namespace.

Check warning on line 188 in development/cloud/api-reference.mdx

View check run for this annotation

Mintlify / Mintlify Validation (dripart) - vale-spellcheck

development/cloud/api-reference.mdx#L188

Did you really mean 'namespace'?
</Note>

<CodeGroup>
Expand Down Expand Up @@ -261,7 +261,7 @@
Submit a workflow for execution.

<Info>
**Concurrent submissions supported:** Depending on your subscription tier, you can submit multiple workflows without waiting for previous jobs to complete. Jobs run in parallel up to your tier's limit. Additional jobs queue automatically. See [Parallel Execution](/development/deploy/cloud#parallel-execution-concurrent-jobs) for details and concurrency limits.
**Concurrent submissions supported:** Depending on your subscription tier, you can submit multiple workflows without waiting for previous jobs to complete. Jobs run in parallel up to your tier's limit. Additional jobs queue automatically. See [Concurrency Limits](/development/deploy/cloud#concurrency-limits) for details.
</Info>

### Submit Workflow
Expand Down Expand Up @@ -411,8 +411,8 @@
```typescript TypeScript
function setWorkflowInput(
workflow: Record<string, any>,
nodeId: string,

Check warning on line 414 in development/cloud/api-reference.mdx

View check run for this annotation

Mintlify / Mintlify Validation (dripart) - vale-spellcheck

development/cloud/api-reference.mdx#L414

Did you really mean 'nodeId'?
inputName: string,

Check warning on line 415 in development/cloud/api-reference.mdx

View check run for this annotation

Mintlify / Mintlify Validation (dripart) - vale-spellcheck

development/cloud/api-reference.mdx#L415

Did you really mean 'inputName'?
value: any
): Record<string, any> {
if (workflow[nodeId]) {
Expand Down Expand Up @@ -513,7 +513,7 @@
| Offset | Size | Field | Description |
|--------|------|-------|-------------|
| 0 | 4 bytes | `type` | `0x00000003` |
| 4 | 4 bytes | `node_id_len` | Length of node_id string |

Check warning on line 516 in development/cloud/api-reference.mdx

View check run for this annotation

Mintlify / Mintlify Validation (dripart) - vale-spellcheck

development/cloud/api-reference.mdx#L516

Did you really mean 'node_id'?
| 8 | N bytes | `node_id` | UTF-8 encoded node ID |
| 8+N | variable | `text` | UTF-8 encoded progress text |
</Tab>
Expand Down Expand Up @@ -579,7 +579,7 @@
}

async function waitForCompletion(
promptId: string,

Check warning on line 582 in development/cloud/api-reference.mdx

View check run for this annotation

Mintlify / Mintlify Validation (dripart) - vale-spellcheck

development/cloud/api-reference.mdx#L582

Did you really mean 'promptId'?
timeout: number = 300000
): Promise<Record<string, any>> {
const wsUrl = `wss://cloud.comfy.org/ws?clientId=${crypto.randomUUID()}&token=${API_KEY}`;
Expand Down Expand Up @@ -626,10 +626,10 @@

async function downloadOutputs(
outputs: Record<string, any>,
outputDir: string

Check warning on line 629 in development/cloud/api-reference.mdx

View check run for this annotation

Mintlify / Mintlify Validation (dripart) - vale-spellcheck

development/cloud/api-reference.mdx#L629

Did you really mean 'outputDir'?
): Promise<void> {
await mkdir(outputDir, { recursive: true });
for (const nodeOutputs of Object.values(outputs)) {

Check warning on line 632 in development/cloud/api-reference.mdx

View check run for this annotation

Mintlify / Mintlify Validation (dripart) - vale-spellcheck

development/cloud/api-reference.mdx#L632

Did you really mean 'nodeOutputs'?
for (const key of ["images", "video", "audio"]) {
for (const fileInfo of (nodeOutputs as any)[key] ?? []) {
const params = new URLSearchParams({
Expand All @@ -643,9 +643,9 @@
redirect: "manual",
});
if (response.status !== 302) throw new Error(`HTTP ${response.status}`);
const signedUrl = response.headers.get("location")!;

Check warning on line 646 in development/cloud/api-reference.mdx

View check run for this annotation

Mintlify / Mintlify Validation (dripart) - vale-spellcheck

development/cloud/api-reference.mdx#L646

Did you really mean 'signedUrl'?
// Fetch from signed URL without auth headers
const fileResponse = await fetch(signedUrl);

Check warning on line 648 in development/cloud/api-reference.mdx

View check run for this annotation

Mintlify / Mintlify Validation (dripart) - vale-spellcheck

development/cloud/api-reference.mdx#L648

Did you really mean 'fileResponse'?
if (!fileResponse.ok) throw new Error(`HTTP ${fileResponse.status}`);

const path = `${outputDir}/${fileInfo.filename}`;
Expand Down
2 changes: 1 addition & 1 deletion development/comfy-router/quickstart.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ Comfy Router lets you call partner models through `https://api.comfy.org` with o

<Steps>
<Step title="Create an API key">
Create a key in [your Comfy workspace](https://platform.comfy.org/profile/api-keys). In a Bash-compatible terminal, set:
Create a key in the [Developer Platform](https://platform.comfy.org/profile/api-keys). In a Bash-compatible terminal, set:

```bash
export COMFY_API_KEY="comfyui-..."
Expand Down
10 changes: 6 additions & 4 deletions development/deploy/cloud.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
---


Comfy Cloud is a stateful, interactive, fully managed version of ComfyUI. You build and run workflows in the browser as you would on a local install, while Comfy manages the models, the GPUs, and everything in between. You can also call Comfy Cloud through the API. Comfy Cloud provides a managed endpoint, so there is no environment to build and no deployment to create.

Check warning on line 8 in development/deploy/cloud.mdx

View check run for this annotation

Mintlify / Mintlify Validation (dripart) - vale-spellcheck

development/deploy/cloud.mdx#L8

Did you really mean 'GPUs'?

Unlike a [serverless deployment](/development/serverless/overview), which serves one pinned environment that you build and release, Comfy Cloud serves a full, managed ComfyUI that is always on.

Expand All @@ -19,7 +19,7 @@

<Steps>
<Step title="Create an API key">
Log in at [platform.comfy.org](https://platform.comfy.org) and create a key. See [Getting an API Key](/development/api-development/getting-an-api-key) for step-by-step instructions.
Log in to the [Developer Platform](https://platform.comfy.org) and create a key. See [Getting an API Key](/development/api-development/getting-an-api-key) for step-by-step instructions.
</Step>
<Step title="Install the SDK">
<CodeGroup>
Expand All @@ -38,7 +38,7 @@
<Step title="Run it">
<CodeGroup>
```python Python
from comfy_sdk import Comfy

Check warning on line 41 in development/deploy/cloud.mdx

View check run for this annotation

Mintlify / Mintlify Validation (dripart) - vale-spellcheck

development/deploy/cloud.mdx#L41

Did you really mean 'comfy_sdk'?

client = Comfy(api_key="comfyui-...") # Comfy Cloud is the default target

Expand All @@ -65,22 +65,24 @@
</Step>
</Steps>

See [Running Workflows](/development/run-workflows/overview) for how the same code moves between Comfy Cloud, serverless deployments, and self-hosted deployments.

Check warning on line 68 in development/deploy/cloud.mdx

View check run for this annotation

Mintlify / Mintlify Validation (dripart) - vale-spellcheck

development/deploy/cloud.mdx#L68

Did you really mean 'serverless'?

## Credits and Usage

API requests draw from the same monthly credit allocation as the Comfy Cloud web UI. There is no separate API credit pool. Each tier's included credits, top-up options, and per-workflow runtime caps apply to API jobs in exactly the same way as UI jobs. See the [pricing page](https://www.comfy.org/cloud/pricing?utm_source=docs&utm_campaign=cloud-api) for the monthly credit amounts on each tier. If you run out of credits mid-month, top-ups can be purchased from your account dashboard.

## Parallel Execution (Concurrent Jobs)
## Concurrency Limits

API users can submit multiple workflows concurrently without waiting for previous jobs to complete. Submission returns as soon as the job is accepted, so you can keep several in flight. The dispatcher runs them in parallel up to your subscription tier's limit; check [platform.comfy.org](https://platform.comfy.org) for your current concurrency.
Running multiple jobs in parallel is only supported when you submit workflows through the API. API users can submit multiple workflows concurrently without waiting for previous jobs to complete. Submission returns as soon as the job is accepted, so you can keep several in flight. The dispatcher runs them in parallel up to your subscription tier's limit; check [platform.comfy.org](https://platform.comfy.org) for your current concurrency.

Jobs submitted beyond your concurrency limit queue normally and execute automatically as slots free up. If the queue itself is full, the SDKs retry for you within a bounded budget before raising `QueueFull`.

Check warning on line 78 in development/deploy/cloud.mdx

View check run for this annotation

Mintlify / Mintlify Validation (dripart) - vale-spellcheck

development/deploy/cloud.mdx#L78

Did you really mean 'SDKs'?

<Info>
Parallel execution is currently available via the API only. See [pricing plans](https://www.comfy.org/cloud/pricing?utm_source=docs&utm_campaign=cloud-api) for subscription details.
The Comfy Cloud UI does not support running more than one job per person. Workflows queued in the editor run one at a time, in order. Only API submissions run in parallel. See [pricing plans](https://www.comfy.org/cloud/pricing?utm_source=docs&utm_campaign=cloud-api) for subscription details.
</Info>

On Team and Enterprise plans, concurrency is per member: everyone in the workspace has their own concurrency limit, so one member's running jobs never block another's.

Check warning on line 84 in development/deploy/cloud.mdx

View check run for this annotation

Mintlify / Mintlify Validation (dripart) - vale-spellcheck

development/deploy/cloud.mdx#L84

Did you really mean 'another's'?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[P2] Keep the shared workspace cap in the concurrency explanation

Per-member limits are still subject to an aggregate workspace concurrency cap. Once other members fill that cap, another member's jobs queue even if that member has no running jobs, so "never block another's" promises isolation the product does not provide. Please describe the per-member limit as subject to the workspace's overall limit, and make the same correction in get_started/cloud.mdx.


## Existing v1 integrations

The deprecated [v1 Cloud API](/development/cloud/overview) also runs against Comfy Cloud. Use it only for existing integrations or for Cloud capabilities that [Comfy API v2](/api-reference/v2/overview) does not expose yet. Runnable examples are in the [Cloud API Reference](/development/cloud/api-reference) (deprecated).
8 changes: 8 additions & 0 deletions get_started/cloud.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: "Comfy Cloud - Official ComfyUI Cloud Platform Powered by RTX 6000 Pro"
description: "Run ComfyUI workflows online with Comfy Cloud, the official cloud platform powered by NVIDIA RTX 6000 Pro GPUs. No local installation required."

Check warning on line 3 in get_started/cloud.mdx

View check run for this annotation

Mintlify / Mintlify Validation (dripart) - vale-spellcheck

get_started/cloud.mdx#L3

Did you really mean 'GPUs'?
sidebarTitle: "Comfy Cloud"
icon: "cloud"
---
Expand All @@ -21,7 +21,7 @@
</Card>

<Card title="Powerful GPUs" icon="microchip">
Run workflows fast on our powerful server GPUs without needing your own hardware

Check warning on line 24 in get_started/cloud.mdx

View check run for this annotation

Mintlify / Mintlify Validation (dripart) - vale-spellcheck

get_started/cloud.mdx#L24

Did you really mean 'GPUs'?
</Card>

<Card title="Always up-to-date" icon="arrows-rotate">
Expand All @@ -44,7 +44,7 @@
| **GPU** | Powerful Blackwell RTX 6000 Pros | Bring your own GPU |
| **Technical Knowledge** | No technical knowledge required. | While desktop and portable give you easy ways to get started, you'll need to troubleshoot custom node installations and local installation issues. |
| **Custom Nodes** | Use pre-installed custom nodes and never worry about compatibility issues. | Install any custom node you want, but you'll need to manage it yourself. |
| **Models** | Use pre-installed models. Import LoRA models from Civitai. Import models from Hugging Face (coming soon). | Use any models you want, but you'll need to download them first. |

Check warning on line 47 in get_started/cloud.mdx

View check run for this annotation

Mintlify / Mintlify Validation (dripart) - vale-spellcheck

get_started/cloud.mdx#L47

Did you really mean 'Civitai'?
| **Notable Differences** | Easy to onboard your team | Works offline, infinitely customizable |
| **Get started** | [Run ComfyUI Cloud](https://comfy.org/cloud) | [Install ComfyUI locally](/installation/system_requirements) |

Expand All @@ -55,6 +55,14 @@
View pricing and subscription options for Comfy Cloud
</Card>

### Concurrency limits

The Comfy Cloud UI does not support running more than one workflow at a time. Each person can run one workflow at a time in the editor; additional workflows wait in the queue and run one after another.

Running multiple jobs in parallel is only supported when you submit workflows through the API, which requires a paid subscription. See [Concurrency Limits](/development/deploy/cloud#concurrency-limits) in the developer docs for details.

On Team and Enterprise plans, concurrency is per member: everyone in the workspace has their own concurrency, so one member's running workflows never block another's.

Check warning on line 64 in get_started/cloud.mdx

View check run for this annotation

Mintlify / Mintlify Validation (dripart) - vale-spellcheck

get_started/cloud.mdx#L64

Did you really mean 'another's'?


## How to use ComfyUI Cloud

Expand All @@ -78,7 +86,7 @@
</Step>

<Step title="Run your workflow">
If everything is correct, click the "Run" icon or use the shortcut "Ctrl + Enter" to run the workflow.

Check warning on line 89 in get_started/cloud.mdx

View check run for this annotation

Mintlify / Mintlify Validation (dripart) - vale-spellcheck

get_started/cloud.mdx#L89

Did you really mean 'Ctrl'?
![Run workflow](/images/cloud/workflow_run_workflow.webp)
</Step>

Expand Down
Loading