Get public organization metadata
Retrieve public metadata for an organization (no authentication required) This endpoint is used for organization detail pages
GET
/v1/organizations/{orgId}/public
Retrieve public metadata for an organization (no authentication required)
This endpoint is used for organization detail pages
Path Parameters
orgId
string
required
path
Organization ID
Responses
200
Organization public metadata
application/jsondata
object
hasMore
boolean
items
object[]
Array of:
archived
boolean
category
string
Deprecated: Use Tags instead
cooldownMs
integer
createdAt
string
createdBy
string
definition
object
Definition is the inline workflow graph to analyze. Same shape as a
saved workflow's definition. Unlike the ephemeral-run endpoint there
is no trigger restriction — analysis is read-only and method-agnostic.
blockExpansions
object
Set on run snapshots only (not workflow DB)
inputSchema
object[]
Array of:
description
string
key
string
required
boolean
type
string
"string", "number", "boolean", "object", "array"
nodes
object
REQUIRED
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.
Array of:
variableDefs
object[]
VariableDefs is a snapshot of the workflow's declared variables at run
creation time. The canonical source lives on the workflows row
(Workflow.VariableDefs column). Snapshotted into the run definition
so the worker can resolve {{$vars.x}} lookups and route variable-action
writes to the right scope without an extra DB round trip.
Array of:
default
unknown
description
string
lifetime
string
Enum:
persist, resetname
string
type
string
Enum:
number, text, boolean, list, objectdescription
string
forkCount
integer
generatedAppId
string
Generated-app attachment (nil when the template ships no app). On
adoption the referenced app is CLONED into the adopting org's new
workflow. GeneratedAppVersionID optionally pins a specific version
whose manifest is used as the clone source.
generatedAppVersionId
string
id
string
isPromoted
boolean
maxRuns
integer
moderationStatus
string
Moderation fields (B3-4168). Only meaningful for public templates;
org templates are always approved.
Enum:
pending, approved, rejectedname
string
organizationDescription
string
organizationId
string
Fields for user-generated templates (nil for built-in templates)
organizationName
string
organizationPhoto
string
promotedAt
string
promotedBy
string
promotedOrder
integer
rejectionReason
string
reviewedAt
string
reviewedBy
string
slug
string
sourceWorkflowId
string
Source workflow link (nil for built-in or legacy templates)
submittedAt
string
tableSchemas
object
tags
object[]
Array of:
categories
string[]
e.g., ["blockchain", "finance"]
Array of:
...
count
integer
Scope-dependent: template, action, trigger, or connector count
createdAt
string
description
string
id
string
imageUrl
string
name
string
promotedTemplateCount
integer
publicTemplateCount
integer
slug
string
updatedAt
string
weight
integer
Higher weight = more prominent
templateProps
object[]
Array of:
default
unknown
description
string
key
string
name
string
properties
object
accountType
string
AccountType filters the wallet picker by account type on
inputType="walletConnector" fields (e.g. "polymarket_deposit_wallet").
allowWalletPicker
boolean
allowedChannels
string[]
...
autoFillFromWallet
boolean
AutoFillFromWallet, when true, auto-fills this prop with the selected
workflow wallet address and hides it from the form. Pointer so an
explicit false survives the JSON round-trip (same rationale as
AllowWalletPicker).
bindsConnectorNodes
string[]
BindsConnectorNodes lists workflow node IDs whose wallet-type connector
should be prefilled from this prop's picked wallet (inputType:
"walletConnector"). The connector stays a plain, editable connector —
this is a prefill, not a permanent bind.
...
chainId
integer
For tokenAmount: hardcoded chain ID
chainPropKey
string
For tokenSelector/tokenAmount: prop key providing chainId
columns
object[]
Columns describes a csvTable prop (inputType: "csvTable"). The stored
value is an object-of-columnar-arrays: {colKey: []value}. Payload
templates reference each column via {{$props.<propKey>.<colKey>}}.
...
dex
string
For hyperliquidAsset: hardcoded DEX name (fallback when no dexPropKey)
dexPropKey
string
For hyperliquidAsset: prop key providing HIP-3 DEX name
enum
unknown[]
...
enumLabels
string[]
...
excludeNative
boolean
For tokenSelector/multiTokenSelector: hide native tokens (field only accepts ERC-20 contract addresses)
groupKey
string
Groups related props for unified UI rendering
inputType
string
maxRows
integer
csvTable: maximum allowed rows (0 = no cap)
maximum
number
minRows
integer
csvTable: minimum required rows (0 = default 1)
minimum
number
pattern
string
placeholder
string
showWalletBalances
boolean
For tokenSelector: show wallet balances (useful for "sell" tokens)
sources
object[]
...
summary
object
Summary drives the csvTable footer summary. Nil means no summary is
rendered. See PropSchemaSummary for details.
...
tokenAddress
string
For tokenAmount: hardcoded token address
tokenAddressPropKey
string
For tokenAmount: prop key providing tokenAddress
visibleWhen
object
VisibleWhen controls conditional visibility: show this prop only when
the referenced prop has the specified value.
...
required
boolean
sensitive
boolean
type
string
"string", "number", "integer", "boolean", "object" (for csvTable)
uiMetadata
object
comments
object[]
Array of:
createdAt
string
createdBy
object
...
id
string
nodeId
string
position
object
...
replies
object[]
...
resolved
boolean
text
string
updatedAt
string
nodePositions
object
stickyNotes
object[]
Array of:
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
Enum:
org, public, org, publiclimit
integer
offset
integer
404
Organization not found
500
Internal server error
curl -X GET 'https://api.example.com/v1/organizations/string/public' \ -H 'Authorization: Bearer YOUR_API_TOKEN'
const response = await fetch('https://api.example.com/v1/organizations/string/public', { method: 'GET', headers: { "Authorization": "Bearer YOUR_API_TOKEN" }});const data = await response.json();console.log(data);
import requestsheaders = { 'Authorization': 'Bearer YOUR_API_TOKEN'}response = requests.get('https://api.example.com/v1/organizations/string/public', headers=headers)print(response.json())
package mainimport ( "fmt" "io" "net/http")func main() { req, _ := http.NewRequest("GET", "https://api.example.com/v1/organizations/string/public", nil) req.Header.Set("Authorization", "Bearer YOUR_API_TOKEN") resp, _ := http.DefaultClient.Do(req) defer resp.Body.Close() result, _ := io.ReadAll(resp.Body) fmt.Println(string(result))}
200
Response
{ "data": { "hasMore": true, "items": [ { "archived": true, "category": "<string>", "cooldownMs": 123, "createdAt": "<string>", "createdBy": "<string>", "definition": { "blockExpansions": "<object>", "inputSchema": [ {} ], "nodes": "<object>", "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 }}
API Playground
Try this endpoint
GET
/v1/organizations/{orgId}/public
