Skip to content

Workflows

Create or replace workflow chat deployment

Create or replace a workflow's hosted chat and deploy its saved draft. Requires workspace Admin access. Omitted fields use defaults; customization exceptions are described on their fields. Password authentication requires `password`; email or SSO requires non-empty `allowedEmails`. Public authentication lets anyone with the chat URL run it. A duplicate identifier or pending deployment returns `409`. Workspace API keys return `403`; use a personal API key or scoped OAuth token. OAuth scope: `api:write`.

PUT/api/v2/workflows/{workflowId}/deployments/chat

Create or replace a workflow's hosted chat and deploy its saved draft. Requires workspace Admin access. Omitted fields use defaults; customization exceptions are described on their fields.

Password authentication requires password; email or SSO requires non-empty allowedEmails. Public authentication lets anyone with the chat URL run it. A duplicate identifier or pending deployment returns 409. Workspace API keys return 403; use a personal API key or scoped OAuth token.

OAuth scope: api:write.

Authentication

Send a personal or workspace API key in X-API-Key. See key types and access; operations that reject workspace keys say so in their description.

Send X-API-Key in the request header.

Alternatively

Send a Sim OAuth access token in Authorization: Bearer. See OAuth authentication and scopes.

Authorization: Bearer YOUR_ACCESS_TOKEN

Required scopes: api:write

OAuth flows
json
{
  "authorizationCode": {
    "authorizationUrl": "https://www.sim.ai/api/auth/oauth2/authorize",
    "tokenUrl": "https://www.sim.ai/api/auth/oauth2/token",
    "refreshUrl": "https://www.sim.ai/api/auth/oauth2/token",
    "scopes": {
      "api:read": "Read your workspaces, workflows, files, tables, and logs",
      "api:write": "Read, create, change, run, and delete resources in your workspaces",
      "offline_access": "Stay signed in without asking again"
    }
  }
}

OAuth scope: api:write.

Path parameters

workflowIdstringRequired

Unique workflow identifier.

minLength
1

Request body

Required

The complete desired state of a workflow's chat.

object

The complete desired state of a workflow's chat.

10 fields
identifierstringRequired

URL slug the deployed chat answers on. Must be free across live deployments.

minLength
1
maxLength
128
pattern
^[a-z0-9-]+$
titlestringRequired

Title shown to visitors.

minLength
1
maxLength
200
descriptionstring

Description shown to visitors. Omitted clears it.

maxLength
2000
customizationsobject

Presentation overrides. Omitted primaryColor and welcomeMessage use platform defaults; an omitted or empty imageUrl keeps the existing avatar. An empty welcomeMessage keeps the existing message.

3 fields
primaryColorstring

CSS color used for the chat accent.

minLength
1
maxLength
64
welcomeMessagestring

First message shown to a visitor. On replace, omission uses the platform default; an empty string keeps the existing message.

maxLength
2000
imageUrlstring

Avatar image shown beside assistant messages. On replace, omission or an empty string keeps the existing avatar.

maxLength
2048

Additional properties are not allowed.

authTypestring

How visitors are gated. public leaves the chat open to anyone holding the URL.

default
public
enum
["public","password","email","sso"]
passwordstring

Write-only password of 15 to 1024 characters, not only whitespace. Required whenever authType is password, and rejected otherwise. Never readable back. Taken literally, except that a request from the Sim agent resolves a whole-value {{ENV_VAR}} reference to that variable before the rules apply.

maxLength
1024
allowedEmailsarray

Email addresses or domains admitted under email and sso gating. At least one is required for those modes.

maxItems
500
Schema details
Array itemstring
minLength
1
outputConfigsarray

Block outputs to surface to visitors. Omitted surfaces none.

maxItems
100
Schema details
Array itemobject

One block output surfaced to chat visitors.

3 fields
workflowIdstring

Child workflow containing the selected block. Omit for the deployed workflow.

minLength
1
blockIdstringRequired

Block whose output the chat streams.

minLength
1
pathstringRequired

Path within that block output.

minLength
1

Additional properties are not allowed.

includeThinkingboolean

Allow visitors to receive provider thinking events.

default
false
includeToolCallsboolean

Allow visitors to receive tool lifecycle events.

default
false

Additional properties are not allowed.

Request example 1

json
{
  "identifier": "support",
  "title": "Support chat"
}

Responses

200

The saved chat deployment.

object

The chat deployment as stored after the replace.

1 field
dataobjectRequired

Response data.

17 fields
idstringRequired

Unique chat deployment identifier.

workflowIdstringRequired

Workflow this deployment publishes.

workspaceIdstringRequired

Workspace the deployment belongs to, derived from its workflow.

identifierstringRequired

URL slug the deployed chat answers on. Unique across live deployments.

urlstringRequired

Public URL of the deployed chat. There is no chat subdomain — the identifier is a path segment.

titlestringRequired

Title shown to visitors.

descriptionstringRequired

Description shown to visitors. Empty when unset.

isActivebooleanRequired

Whether the deployment answers requests.

authTypestringRequired

How visitors are gated: public (no gate), password, email, or sso.

enum
["public","password","email","sso"]
hasPasswordbooleanRequired

Whether a password is stored. The password itself is never readable.

allowedEmailsarrayRequired

Email addresses or domains admitted under email and sso gating. Empty otherwise.

Schema details
Array itemstring
customizationsobjectRequired

Presentation overrides. Unset fields fall back to platform defaults.

3 fields
primaryColorstring

CSS color used for the chat accent.

welcomeMessagestring

First message shown to a visitor.

imageUrlstring

Avatar image shown beside assistant messages.

Additional properties are not allowed.

outputConfigsarrayRequired

Block outputs surfaced to visitors.

Schema details
Array itemobject

One block output currently surfaced to chat visitors.

3 fields
workflowIdstring

Child workflow containing the selected block. Omitted for the deployed workflow.

blockIdstringRequired

Block whose output the chat streams.

pathstringRequired

Path within that block output. Empty means the whole output.

Additional properties are not allowed.

includeThinkingbooleanRequired

Whether visitors may receive provider thinking events. They must also opt into the streaming protocol.

includeToolCallsbooleanRequired

Whether visitors may receive tool lifecycle events. They must also opt into the streaming protocol.

createdAtstringRequired

ISO 8601 timestamp when the deployment was created.

format
date-time
updatedAtstringRequired

ISO 8601 timestamp when the deployment was last modified.

format
date-time

Additional properties are not allowed.

Additional properties are not allowed.

Response example 1

json
{
  "data": {
    "id": "chat_01J8ZK3QW4M6X2R9T7B5C0V2",
    "workflowId": "3b1f7c92-8d4e-4a6b-9c0d-5e2f8a714b36",
    "workspaceId": "9f4c2a10-3b7e-4d58-8f6a-2c1d0e5b7a94",
    "identifier": "support",
    "url": "https://sim.ai/chat/support",
    "title": "Support chat",
    "description": "Ask about billing, onboarding, or outages.",
    "isActive": true,
    "authType": "public",
    "hasPassword": false,
    "allowedEmails": [],
    "customizations": {
      "primaryColor": "#6F3DFA",
      "welcomeMessage": "Hi there! How can I help?"
    },
    "outputConfigs": [
      {
        "blockId": "block_01J8ZK3QW4M6X2R9T7B5C0V4",
        "path": "content"
      }
    ],
    "includeThinking": false,
    "includeToolCalls": false,
    "createdAt": "2026-06-12T10:30:00.000Z",
    "updatedAt": "2026-06-12T10:30:00.000Z"
  }
}

Response headers

X-RateLimit-Limitinteger

Maximum requests allowed in the current window.

minimum
0
maximum
9007199254740991
X-RateLimit-Remaininginteger

Requests remaining in the current window.

minimum
0
maximum
9007199254740991
X-RateLimit-Resetstring

ISO 8601 timestamp when the current rate-limit window resets.

format
date-time
pattern
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
Was this helpful?
Suggest an edit