Unarchive a workflow
/v1/workflows/{id}/unarchive
Authentication
Path Parameters
id
string
required
path
Request Body
application/jsonResponses
application/jsondata
object
hasMore
boolean
items
object[]
archived
boolean
category
string
cooldownMs
integer
createdAt
string
createdBy
string
definition
object
blockExpansions
object
inputSchema
object[]
description
string
key
string
required
boolean
type
string
nodes
object
REQUIRED
sensitivePropKeys
string[]
triggerNodeIds
string[]
TriggerNodeIDs lists the node IDs that are trigger (root) nodes. Every workflow declares this — single-trigger workflows ship ["root"] (the legacy node id), multi-trigger workflows list every trigger node id. Treating single-trigger as a forest-of-1 removes the two-path branching throughout the BE + FE; older rows without the field are backfilled by migration 000282 and the field-missing path stays as a read-side safety net (see FindTriggerNodeIDs) but is no longer exercised by saves.
"root" is also a runtime alias for "the trigger that fired this run" — {{root.X}} variable references resolve to the firing trigger regardless of which trigger fired. Don't repurpose the literal "root" as a trigger id on a multi-trigger workflow.
variableDefs
object[]
default
unknown
description
string
lifetime
string
persist resetname
string
type
string
number text boolean list objectdescription
string
forkCount
integer
generatedAppId
string
generatedAppVersionId
string
id
string
isPromoted
boolean
maxRuns
integer
moderationStatus
string
pending approved rejectedname
string
organizationDescription
string
organizationId
string
organizationName
string
organizationPhoto
string
promotedAt
string
promotedBy
string
promotedOrder
integer
rejectionReason
string
reviewedAt
string
reviewedBy
string
slug
string
sourceWorkflowId
string
submittedAt
string
tableSchemas
object
tags
object[]
categories
string[]
count
integer
createdAt
string
description
string
id
string
imageUrl
string
name
string
promotedTemplateCount
integer
publicTemplateCount
integer
slug
string
updatedAt
string
weight
integer
templateProps
object[]
default
unknown
description
string
key
string
name
string
properties
object
accountType
string
allowWalletPicker
boolean
allowedChannels
string[]
autoFillFromWallet
boolean
bindsConnectorNodes
string[]
chainId
integer
chainPropKey
string
columns
object[]
dex
string
dexPropKey
string
enum
unknown[]
enumLabels
string[]
excludeNative
boolean
groupKey
string
inputType
string
maxRows
integer
maximum
number
minRows
integer
minimum
number
pattern
string
placeholder
string
showWalletBalances
boolean
sources
object[]
summary
object
tokenAddress
string
tokenAddressPropKey
string
visibleWhen
object
required
boolean
sensitive
boolean
type
string
uiMetadata
object
comments
object[]
createdAt
string
createdBy
object
id
string
nodeId
string
position
object
replies
object[]
resolved
boolean
text
string
updatedAt
string
nodePositions
object
stickyNotes
object[]
color
string
createdAt
string
createdBy
object
id
string
position
object
size
object
text
string
updatedAt
string
zIndex
integer
updatedAt
string
updatedBy
string
version
integer
visibility
string
org public org publiclimit
integer
offset
integer
curl -X POST 'https://api.example.com/v1/workflows/string/unarchive' \ -H 'Authorization: Bearer YOUR_API_TOKEN' \ -H 'Content-Type: application/json' \ -d '{}'
const response = await fetch('https://api.example.com/v1/workflows/string/unarchive', { method: 'POST', headers: { "Authorization": "Bearer YOUR_API_TOKEN", "Content-Type": "application/json" }, body: JSON.stringify({})});const data = await response.json();console.log(data);
import requestsheaders = { 'Authorization': 'Bearer YOUR_API_TOKEN'}response = requests.post('https://api.example.com/v1/workflows/string/unarchive', headers=headers, json={})print(response.json())
package mainimport ( "fmt" "io" "net/http" "strings")func main() { body := strings.NewReader(`{}`) req, _ := http.NewRequest("POST", "https://api.example.com/v1/workflows/string/unarchive", body) req.Header.Set("Authorization", "Bearer YOUR_API_TOKEN") req.Header.Set("Content-Type", "application/json") resp, _ := http.DefaultClient.Do(req) defer resp.Body.Close() result, _ := io.ReadAll(resp.Body) fmt.Println(string(result))}
{ "data": { "hasMore": true, "items": [ { "archived": true, "category": "<string>", "cooldownMs": 123, "createdAt": "<string>", "createdBy": "<string>", "definition": { "blockExpansions": "<object>", "inputSchema": [ {} ], "nodes": "<object>", "sensitivePropKeys": [ {} ], "triggerNodeIds": [ {} ], "variableDefs": [ {} ] }, "description": "<string>", "forkCount": 123, "generatedAppId": "<string>", "generatedAppVersionId": "<string>", "id": "<string>", "isPromoted": true, "maxRuns": 123, "moderationStatus": "pending", "name": "<string>", "organizationDescription": "<string>", "organizationId": "<string>", "organizationName": "<string>", "organizationPhoto": "<string>", "promotedAt": "<string>", "promotedBy": "<string>", "promotedOrder": 123, "rejectionReason": "<string>", "reviewedAt": "<string>", "reviewedBy": "<string>", "slug": "<string>", "sourceWorkflowId": "<string>", "submittedAt": "<string>", "tableSchemas": "<object>", "tags": [ { "categories": {}, "count": {}, "createdAt": {}, "description": {}, "id": {}, "imageUrl": {}, "name": {}, "promotedTemplateCount": {}, "publicTemplateCount": {}, "slug": {}, "updatedAt": {}, "weight": {} } ], "templateProps": [ { "default": {}, "description": {}, "key": {}, "name": {}, "properties": {}, "required": {}, "sensitive": {}, "type": {} } ], "uiMetadata": { "comments": [ {} ], "nodePositions": "<object>", "stickyNotes": [ {} ] }, "updatedAt": "<string>", "updatedBy": "<string>", "version": 123, "visibility": "org" } ], "limit": 123, "offset": 123 }}
Try this endpoint
/v1/workflows/{id}/unarchive
