The active, published workflows on one network, by name. For a workflow your backend
starts, event is the name POST /events/{name} takes and inputs what it declares: each
input’s key, type and whether it is required. A workflow Citadel starts itself (on a
deposit, on a schedule) or another workflow calls has event: null and no inputs. name
is what GET /runs filters on.
An input’s type is what POST /events/{name} checks its value against: wallet one of
your active wallets on the network (reference, id or address), asset an asset credited
there (symbol or contract), address a TRON address, amount a base-unit integer,
number an integer, decimal a decimal number, booleantrue or false, string
anything.
network is required. Needs the read scope. A key limited to vaults is refused with
403 vault_limited, like the event door.
An API key minted in the console (ctd_…). Authenticates; never authorizes funds. A key
carries scopes (read, wallets.write, transactions.write, events.write,
webhooks.write, policy.write) and may be limited to vaults, to IP addresses, and in
lifetime — see Authentication.
The network the data lives on. Required — there is no default network: without it,
422 network_required. A wallet named by its id on another network: 422 network_mismatch.
The network the data lives on. Required wherever it appears in a request — there is no
default network. One your installation does not serve: 422 network_not_served.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Citadel API","colors":{"primary":"#1F5BD8","light":"#5B8BEF","dark":"#163F99"},"api":{"playground":{"display":"interactive"},"examples":{"languages":["curl","javascript","python","go"]}},"integrations":{"telemetry":{"enabled":false}},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"hasAudioNarration":false,"customDomains":[],"gitSource":{"type":"github","owner":"local","repo":"local","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":"local","isBase":true},"buildId":"local","clientVersion":"0.0.4088"},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[],"googleFontsInlined":false,"isLoggedInCli":false,"mintExport":{}},"customCss":[],"page":{"pagePath":"api-reference/workflows/list-workflows","slug":"/api-reference/workflows/list-workflows","pageMetadata":{"openapi":"/openapi.yaml get /workflows","description":"The active, published workflows on one network, by name. For a workflow your backend\nstarts, `event` is the name `POST /events/{name}` takes and `inputs` what it declares: each\ninput's key, type and whether it is required. A workflow Citadel starts itself (on a\ndeposit, on a schedule) or another workflow calls has `event: null` and no inputs. `name`\nis what `GET /runs` filters on.\n\nAn input's `type` is what `POST /events/{name}` checks its value against: `wallet` one of\nyour active wallets on the network (reference, id or address), `asset` an asset credited\nthere (symbol or contract), `address` a TRON address, `amount` a base-unit integer,\n`number` an integer, `decimal` a decimal number, `boolean` `true` or `false`, `string`\nanything.\n\n`network` is required. Needs the `read` scope. A key limited to vaults is refused with\n`403 vault_limited`, like the event door.\n","href":"/api-reference/workflows/list-workflows","title":"List workflows"},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"The active, published workflows on one network, by name. For a workflow your backend\\nstarts, \", _jsx(_components.code, {\n children: \"event\"\n }), \" is the name \", _jsx(_components.code, {\n children: \"POST /events/{name}\"\n }), \" takes and \", _jsx(_components.code, {\n children: \"inputs\"\n }), \" what it declares: each\\ninput’s key, type and whether it is required. A workflow Citadel starts itself (on a\\ndeposit, on a schedule) or another workflow calls has \", _jsx(_components.code, {\n children: \"event: null\"\n }), \" and no inputs. \", _jsx(_components.code, {\n children: \"name\"\n }), \"\\nis what \", _jsx(_components.code, {\n children: \"GET /runs\"\n }), \" filters on.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"An input’s \", _jsx(_components.code, {\n children: \"type\"\n }), \" is what \", _jsx(_components.code, {\n children: \"POST /events/{name}\"\n }), \" checks its value against: \", _jsx(_components.code, {\n children: \"wallet\"\n }), \" one of\\nyour active wallets on the network (reference, id or address), \", _jsx(_components.code, {\n children: \"asset\"\n }), \" an asset credited\\nthere (symbol or contract), \", _jsx(_components.code, {\n children: \"address\"\n }), \" a TRON address, \", _jsx(_components.code, {\n children: \"amount\"\n }), \" a base-unit integer,\\n\", _jsx(_components.code, {\n children: \"number\"\n }), \" an integer, \", _jsx(_components.code, {\n children: \"decimal\"\n }), \" a decimal number, \", _jsx(_components.code, {\n children: \"boolean\"\n }), \" \", _jsx(_components.code, {\n children: \"true\"\n }), \" or \", _jsx(_components.code, {\n children: \"false\"\n }), \", \", _jsx(_components.code, {\n children: \"string\"\n }), \"\\nanything.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.code, {\n children: \"network\"\n }), \" is required. Needs the \", _jsx(_components.code, {\n children: \"read\"\n }), \" scope. A key limited to vaults is refused with\\n\", _jsx(_components.code, {\n children: \"403 vault_limited\"\n }), \", like the event door.\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"openapi":"/openapi.yaml get /workflows","description":"The active, published workflows on one network, by name. For a workflow your backend\nstarts, `event` is the name `POST /events/{name}` takes and `inputs` what it declares: each\ninput's key, type and whether it is required. A workflow Citadel starts itself (on a\ndeposit, on a schedule) or another workflow calls has `event: null` and no inputs. `name`\nis what `GET /runs` filters on.\n\nAn input's `type` is what `POST /events/{name}` checks its value against: `wallet` one of\nyour active wallets on the network (reference, id or address), `asset` an asset credited\nthere (symbol or contract), `address` a TRON address, `amount` a base-unit integer,\n`number` an integer, `decimal` a decimal number, `boolean` `true` or `false`, `string`\nanything.\n\n`network` is required. Needs the `read` scope. A key limited to vaults is refused with\n`403 vault_limited`, like the event door.\n","href":"/api-reference/workflows/list-workflows","title":"List workflows"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Workflows"],"operationId":"listWorkflows","summary":"List workflows","description":"The active, published workflows on one network, by name. For a workflow your backend\nstarts, `event` is the name `POST /events/{name}` takes and `inputs` what it declares: each\ninput's key, type and whether it is required. A workflow Citadel starts itself (on a\ndeposit, on a schedule) or another workflow calls has `event: null` and no inputs. `name`\nis what `GET /runs` filters on.\n\nAn input's `type` is what `POST /events/{name}` checks its value against: `wallet` one of\nyour active wallets on the network (reference, id or address), `asset` an asset credited\nthere (symbol or contract), `address` a TRON address, `amount` a base-unit integer,\n`number` an integer, `decimal` a decimal number, `boolean` `true` or `false`, `string`\nanything.\n\n`network` is required. Needs the `read` scope. A key limited to vaults is refused with\n`403 vault_limited`, like the event door.\n","parameters":["590468c0-99ff-4f04-8830-8aeec541babe"],"responses":{"200":"27e67157-2f6e-46d2-8917-b88a42d70ddc","401":"5543ddaa-0a38-4f4f-9382-6401245adad4","403":"34b4c3f2-13f2-4fd7-ad31-4150ff6529f9","422":"26c05fc7-0c9d-4215-9133-01c4158b40f2"},"method":"get","type":"path","servers":["825d9789-7332-4a65-b039-b330384d4003"],"security":["24aebd70-fdbd-4dae-a4a9-d627e2d2711f"],"path":"/workflows","baseUrlOptions":["https://api.citadel.example/api/v1"],"title":"List workflows","codeSamples":[],"requestExampleLanguages":["bash","javascript","python","go"],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"590468c0-99ff-4f04-8830-8aeec541babe":{"name":"network","in":"query","required":true,"description":"The network the data lives on. Required — there is no default network: without it,\n`422 network_required`. A wallet named by its id on another network: `422 network_mismatch`.\n","schema":{"type":"string","enum":["mainnet","testnet"],"description":"The network the data lives on. Required — there is no default network: without it,\n`422 network_required`. A wallet named by its id on another network: `422 network_mismatch`.\n\nThe network the data lives on. Required wherever it appears in a request — there is no\ndefault network. One your installation does not serve: `422 network_not_served`.\n","isRequired":true,"uniqueKey":"","typeLabel":"enum\u003cstring>"}}},"responses":{"27e67157-2f6e-46d2-8917-b88a42d70ddc":{"description":"The workflows.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"type":"object","required":["id","name","event","inputs","version","published_at"],"properties":{"id":{"type":"string","format":"uuid","isRequired":true,"uniqueKey":"data.items.[INDEX].id","typeLabel":"string\u003cuuid>"},"name":{"type":"string","description":"What a run's `workflow` reads and `GET /runs` filters on.","isRequired":true,"uniqueKey":"data.items.[INDEX].name","typeLabel":"string"},"event":{"oneOf":[{"type":"string","description":"The name `POST /events/{name}` starts it by; `null` when Citadel starts it or another workflow calls it.","isRequired":true,"uniqueKey":"data.items.[INDEX].event.oneOf.0","typeLabel":"string"},{"type":"null","description":"The name `POST /events/{name}` starts it by; `null` when Citadel starts it or another workflow calls it.","isRequired":true,"uniqueKey":"data.items.[INDEX].event.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.items.[INDEX].event","typeLabel":"string | null"},"inputs":{"type":"array","description":"What `POST /events/{name}` takes in `inputs`; empty when `event` is `null`.","items":{"type":"object","required":["key","type","required"],"properties":{"key":{"type":"string","isRequired":true,"uniqueKey":"data.items.[INDEX].inputs.items.[INDEX].key","typeLabel":"string"},"type":{"type":"string","enum":["string","amount","decimal","number","boolean","wallet","asset","address"],"isRequired":true,"uniqueKey":"data.items.[INDEX].inputs.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"required":{"type":"boolean","isRequired":true,"uniqueKey":"data.items.[INDEX].inputs.items.[INDEX].required","typeLabel":"boolean"}},"uniqueKey":"data.items.[INDEX].inputs.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.items.[INDEX].inputs","typeLabel":"object[]"},"version":{"type":"integer","description":"The published version that runs.","isRequired":true,"uniqueKey":"data.items.[INDEX].version","typeLabel":"integer"},"published_at":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"data.items.[INDEX].published_at","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"data.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"example":{"data":[{"id":"0199a3e0-5c6d-7e7f-8091-a2b3c4d5e6f7","name":"Deposit sweep","event":null,"inputs":[],"version":4,"published_at":"2026-10-01T09:00:00Z"},{"id":"0199a3e0-6d7e-7f80-91a2-b3c4d5e6f708","name":"Payout","event":"payout","inputs":[{"key":"to","type":"address","required":true},{"key":"amount","type":"amount","required":true},{"key":"asset","type":"asset","required":true},{"key":"memo","type":"string","required":false}],"version":2,"published_at":"2026-10-05T14:30:00Z"}]},"examples":{"Example":{"title":"Example","value":{"data":[{"id":"0199a3e0-5c6d-7e7f-8091-a2b3c4d5e6f7","name":"Deposit sweep","event":null,"inputs":[],"version":4,"published_at":"2026-10-01T09:00:00Z"},{"id":"0199a3e0-6d7e-7f80-91a2-b3c4d5e6f708","name":"Payout","event":"payout","inputs":[{"key":"to","type":"address","required":true},{"key":"amount","type":"amount","required":true},{"key":"asset","type":"asset","required":true},{"key":"memo","type":"string","required":false}],"version":2,"published_at":"2026-10-05T14:30:00Z"}]}}},"exampleType":"examples"}},"exampleType":"examples"},"5543ddaa-0a38-4f4f-9382-6401245adad4":{"description":"Missing, unknown, revoked or expired API key.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Human-readable; not stable.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Stable machine code, where one exists.","uniqueKey":"code","typeLabel":"string"},"retryable":{"type":"boolean","uniqueKey":"retryable","typeLabel":"boolean"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":"unauthorized"},"examples":{"Example":{"title":"Example","value":{"error":"unauthorized"}}},"exampleType":"examples"}},"exampleType":"examples"},"34b4c3f2-13f2-4fd7-ad31-4150ff6529f9":{"description":"The key may not make this call. Nothing was created or reserved. `code`:\n`ip_not_allowed` — the call came from an address outside the key's IP allowlist;\n`scope_missing` — the key lacks the scope the endpoint needs;\n`vault_limited` — the key is limited to vaults and the wallet is outside them, or the\nendpoint drives or lists workflows, manages webhook endpoints, reads webhook deliveries,\nreads or changes the policy document, or asks for or reads a report.\n","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Human-readable; not stable.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Stable machine code, where one exists.","uniqueKey":"code","typeLabel":"string"},"retryable":{"type":"boolean","uniqueKey":"retryable","typeLabel":"boolean"}},"uniqueKey":"","typeLabel":"object"},"examples":{"ip_not_allowed":{"title":"ip_not_allowed","value":{"error":"request from 198.51.100.1 is not allowed for this key","code":"ip_not_allowed"}},"scope_missing":{"title":"scope_missing","value":{"error":"this key lacks the transactions.write scope","code":"scope_missing"}},"vault_limited":{"title":"vault_limited","value":{"error":"wallet is outside this key's vaults","code":"vault_limited"}}},"exampleType":"examples"}},"exampleType":"examples"},"26c05fc7-0c9d-4215-9133-01c4158b40f2":{"description":"The request was understood and refused. Nothing was created or reserved. A request\nwithout `network` is refused with `network_required`, a network your installation does\nnot serve with `network_not_served`, a wallet id from another network with\n`network_mismatch`. A list refuses a cursor it did not issue with `invalid_cursor`, and an\nunknown filter value, a filter sent as a list or an object instead of one string, or a\n`limit` out of range without a `code`; so does a webhook retry of a period without `from`.\n","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Human-readable; not stable.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Stable machine code, where one exists.","uniqueKey":"code","typeLabel":"string"},"retryable":{"type":"boolean","uniqueKey":"retryable","typeLabel":"boolean"}},"uniqueKey":"","typeLabel":"object"},"examples":{"refused":{"title":"refused","value":{"error":"wallet has no address yet"}},"network_required":{"title":"network_required","value":{"error":"network is required (mainnet, testnet)","code":"network_required"}},"network_not_served":{"title":"network_not_served","value":{"error":"network \"devnet\" is not served here (mainnet, testnet)","code":"network_not_served"}},"network_mismatch":{"title":"network_mismatch","value":{"error":"wallet 0199a3c4-7f1e-7b11-9c2e-3f4a5b6c7d8e lives on testnet, not mainnet","code":"network_mismatch"}},"invalid_cursor":{"title":"invalid_cursor","value":{"error":"cursor is not one this API issued","code":"invalid_cursor"}},"invalid_filter":{"title":"invalid_filter","value":{"error":"unknown status settled (created, aml_pending, awaiting_approval, …)"}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"24aebd70-fdbd-4dae-a4a9-d627e2d2711f":{"bearerAuth":{"type":"http","scheme":"bearer","description":"An API key minted in the console (`ctd_…`). Authenticates; never authorizes funds. A key\ncarries scopes (`read`, `wallets.write`, `transactions.write`, `events.write`,\n`webhooks.write`, `policy.write`) and may be limited to vaults, to IP addresses, and in\nlifetime — see Authentication.\n","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"825d9789-7332-4a65-b039-b330384d4003":{"url":"https://api.citadel.example/api/v1"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"An API key minted in the console (`ctd_…`). Authenticates; never authorizes funds. A key\ncarries scopes (`read`, `wallets.write`, `transactions.write`, `events.write`,\n`webhooks.write`, `policy.write`) and may be limited to vaults, to IP addresses, and in\nlifetime — see Authentication.\n","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"An API key minted in the console (`ctd_…`). Authenticates; never authorizes funds. A key\ncarries scopes (`read`, `wallets.write`, `transactions.write`, `events.write`,\n`webhooks.write`, `policy.write`) and may be limited to vaults, to IP addresses, and in\nlifetime — see Authentication.\n","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"openapi.yaml"},"subdomain":"localhost","siteName":"Citadel API","title":"List workflows - Citadel API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"originalFileLocation":"api-reference/workflows/list-workflows.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"The active, published workflows on one network, by name. For a workflow your backend starts, event is the name POST /events/{name} takes and inputs what it declares: each input\u0026#x27;s key, type and whether it is required. A workflow Citadel starts itself (on a deposit, on a schedule) or another workflow calls has event: null and no inputs. name is what GET /runs filters on. An input\u0026#x27;s type is what POST /events/{name} checks its value against: wallet one of your active wallets on the network (reference, id or address), asset an asset credited there (symbol or contract), address a TRON address, amount a base-unit integer, number an integer, decimal a decimal number, boolean true or false, string anything. network is required. Needs the read scope. A key limited to vaults is refused with 403 vault_limited, like the event door.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Citadel API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/local/_generated/favicon/apple-touch-icon.png?v=3\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/local/_generated/favicon/favicon-32x32.png?v=3\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/local/_generated/favicon/favicon-16x16.png?v=3\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/local/_generated/favicon/favicon.ico?v=3\">\u003cmeta data-mint-head property=\"og:title\" content=\"List workflows - Citadel API\">\u003cmeta data-mint-head property=\"og:description\" content=\"The active, published workflows on one network, by name. For a workflow your backend starts, event is the name POST /events/{name} takes and inputs what it declares: each input\u0026#x27;s key, type and whether it is required. A workflow Citadel starts itself (on a deposit, on a schedule) or another workflow calls has event: null and no inputs. name is what GET /runs filters on. An input\u0026#x27;s type is what POST /events/{name} checks its value against: wallet one of your active wallets on the network (reference, id or address), asset an asset credited there (symbol or contract), address a TRON address, amount a base-unit integer, number an integer, decimal a decimal number, boolean true or false, string anything. network is required. Needs the read scope. A key limited to vaults is refused with 403 vault_limited, like the event door.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Citadel API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://local./api-reference/workflows/list-workflows\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"List workflows - Citadel API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"The active, published workflows on one network, by name. For a workflow your backend starts, event is the name POST /events/{name} takes and inputs what it declares: each input\u0026#x27;s key, type and whether it is required. A workflow Citadel starts itself (on a deposit, on a schedule) or another workflow calls has event: null and no inputs. name is what GET /runs filters on. An input\u0026#x27;s type is what POST /events/{name} checks its value against: wallet one of your active wallets on the network (reference, id or address), asset an asset credited there (symbol or contract), address a TRON address, amount a base-unit integer, number an integer, decimal a decimal number, boolean true or false, string anything. network is required. Needs the read scope. A key limited to vaults is refused with 403 vault_limited, like the event door.\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"https://mintlify.s3.us-west-1.amazonaws.com/local/_generated/favicon/browserconfig.xml?v=3\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Citadel API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#1F5BD8\">\u003clink data-mint-head rel=\"canonical\" href=\"https://local./api-reference/workflows/list-workflows\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/workflows/list-workflows.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Citadel API\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Citadel API","nav":{"tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":""}]},{"tab":"API reference","groups":[{"group":"Wallets","pages":[{"title":"List wallets","openapi":"/openapi.yaml get /wallets","href":"/api-reference/wallets/list-wallets"},{"title":"Issue a deposit wallet","openapi":"/openapi.yaml post /wallets","href":"/api-reference/wallets/issue-a-deposit-wallet"},{"title":"Issue wallets in a batch","openapi":"/openapi.yaml post /wallets/batch","href":"/api-reference/wallets/issue-wallets-in-a-batch"},{"title":"Get a wallet","openapi":"/openapi.yaml get /wallets/{reference}","href":"/api-reference/wallets/get-a-wallet"},{"title":"Update a wallet","openapi":"/openapi.yaml patch /wallets/{reference}","href":"/api-reference/wallets/update-a-wallet"},{"title":"Retire a wallet","openapi":"/openapi.yaml post /wallets/{reference}/retire","href":"/api-reference/wallets/retire-a-wallet"},{"title":"Get a wallet balance","openapi":"/openapi.yaml get /wallets/{reference}/balance","href":"/api-reference/wallets/get-a-wallet-balance"},{"title":"Get a wallet's limits","openapi":"/openapi.yaml get /wallets/{reference}/limits","href":"/api-reference/wallets/get-a-wallets-limits"}]},{"group":"Transactions","pages":[{"title":"List transactions","openapi":"/openapi.yaml get /transactions","href":"/api-reference/transactions/list-transactions"},{"title":"Send a transaction","openapi":"/openapi.yaml post /transactions","href":"/api-reference/transactions/send-a-transaction"},{"title":"Estimate a transaction","openapi":"/openapi.yaml post /transactions/estimate","href":"/api-reference/transactions/estimate-a-transaction"},{"title":"Get a transaction","openapi":"/openapi.yaml get /transactions/{id}","href":"/api-reference/transactions/get-a-transaction"},{"title":"Cancel a transaction","openapi":"/openapi.yaml post /transactions/{id}/cancel","href":"/api-reference/transactions/cancel-a-transaction"},{"title":"Speed up a stuck EVM transaction","openapi":"/openapi.yaml post /transactions/{id}/speedup","href":"/api-reference/transactions/speed-up-a-stuck-evm-transaction"},{"title":"Validate an address","openapi":"/openapi.yaml get /addresses/validate","href":"/api-reference/transactions/validate-an-address"}]},{"group":"Transfers","pages":[{"title":"List transfers","openapi":"/openapi.yaml get /transfers","href":"/api-reference/transfers/list-transfers"},{"title":"Get a transfer","openapi":"/openapi.yaml get /transfers/{tx_hash}","href":"/api-reference/transfers/get-a-transfer"}]},{"group":"Reference","pages":[{"title":"List networks and chains","openapi":"/openapi.yaml get /networks","href":"/api-reference/reference/list-networks-and-chains"},{"title":"List assets","openapi":"/openapi.yaml get /assets","href":"/api-reference/reference/list-assets"},{"title":"List asset prices","openapi":"/openapi.yaml get /prices","href":"/api-reference/reference/list-asset-prices"},{"title":"Get network status","openapi":"/openapi.yaml get /status","href":"/api-reference/reference/get-network-status"}]},{"group":"Organization","pages":[{"title":"List vaults","openapi":"/openapi.yaml get /vaults","href":"/api-reference/organization/list-vaults"},{"title":"Get organization balances","openapi":"/openapi.yaml get /balances","href":"/api-reference/organization/get-organization-balances"},{"title":"Get the calling key","openapi":"/openapi.yaml get /me","href":"/api-reference/organization/get-the-calling-key"},{"title":"Get the billing balance","openapi":"/openapi.yaml get /billing/balance","href":"/api-reference/organization/get-the-billing-balance"}]},{"group":"Approvals","pages":[{"title":"List approvals","openapi":"/openapi.yaml get /approvals","href":"/api-reference/approvals/list-approvals"}]},{"group":"Policy","pages":[{"title":"Get the policy document","openapi":"/openapi.yaml get /policy","href":"/api-reference/policy/get-the-policy-document"},{"title":"Draft the policy document","openapi":"/openapi.yaml post /policy/drafts","href":"/api-reference/policy/draft-the-policy-document"},{"title":"Get a policy draft","openapi":"/openapi.yaml get /policy/drafts/{version}","href":"/api-reference/policy/get-a-policy-draft"},{"title":"Publish a signed policy draft","openapi":"/openapi.yaml post /policy/publish","href":"/api-reference/policy/publish-a-signed-policy-draft"}]},{"group":"Workflows","pages":[{"title":"Start workflows by event","openapi":"/openapi.yaml post /events/{name}","href":"/api-reference/workflows/start-workflows-by-event"},{"title":"List workflow runs","openapi":"/openapi.yaml get /runs","href":"/api-reference/workflows/list-workflow-runs"},{"title":"Get a workflow run","openapi":"/openapi.yaml get /runs/{id}","href":"/api-reference/workflows/get-a-workflow-run"},{"title":"Cancel a workflow run","description":"Stops a run you started by mistake, while nothing it asked for can be signed yet. The run\nends `cancelled`, with `failure_reason: cancelled through the API`, and is unwound the way a\nfailed run is: what its steps held goes back — a wallet it locked, a provider hold nobody\nused — and what it waits for no longer wakes it. A pending approval it asked for closes, so\nnobody can approve it any more. The loop iterations and the workflows it called stop with it.\nThe `run.cancelled` webhook follows. Cancelling it again answers the same `200`.\n\nOtherwise it is `409 not_cancellable`, and nothing changes:\n\n- a transaction the run authored has reached `authorized`: it is on its way to your signer,\n and a signature cannot be called back. Follow the run to its end instead;\n- the run has ended (`completed`, `failed`);\n- it is executing a step this moment. That lasts a moment: send the same call again;\n- it runs inside another run (a loop iteration, a workflow another one called): cancel the\n run that started it.\n\nA paid step (an energy rental, a screening) already handed to its provider is bought work:\nit is billed whether or not the run goes on.\n\nIt takes no `network`: the id is enough. Needs the `events.write` scope — the scope that\nstarts runs. A key limited to vaults is refused with `403 vault_limited`.\n","openapi":"/openapi.yaml post /runs/{id}/cancel","href":"/api-reference/workflows/cancel-a-workflow-run"},{"title":"List workflows","openapi":"/openapi.yaml get /workflows","href":"/api-reference/workflows/list-workflows"}]},{"group":"Webhook endpoints","pages":[{"title":"List webhook endpoints","description":"Your organization's webhook endpoints, oldest first, in one response. A row never carries\nthe signing secret: it is shown once, when the endpoint is added or its secret rotated.\n\nTakes no `network`: an endpoint hears every network. Needs the `read` scope. A key limited\nto vaults is refused with `403 vault_limited`: an endpoint serves every vault.\n","openapi":"/openapi.yaml get /webhook_endpoints","href":"/api-reference/webhook-endpoints/list-webhook-endpoints"},{"title":"Add a webhook endpoint","openapi":"/openapi.yaml post /webhook_endpoints","href":"/api-reference/webhook-endpoints/add-a-webhook-endpoint"},{"title":"Get a webhook endpoint","openapi":"/openapi.yaml get /webhook_endpoints/{id}","href":"/api-reference/webhook-endpoints/get-a-webhook-endpoint"},{"title":"Remove a webhook endpoint","openapi":"/openapi.yaml delete /webhook_endpoints/{id}","href":"/api-reference/webhook-endpoints/remove-a-webhook-endpoint"},{"title":"Change a webhook endpoint","openapi":"/openapi.yaml patch /webhook_endpoints/{id}","href":"/api-reference/webhook-endpoints/change-a-webhook-endpoint"},{"title":"Send a test delivery","openapi":"/openapi.yaml post /webhook_endpoints/{id}/test","href":"/api-reference/webhook-endpoints/send-a-test-delivery"},{"title":"Rotate the signing secret","openapi":"/openapi.yaml post /webhook_endpoints/{id}/rotate_secret","href":"/api-reference/webhook-endpoints/rotate-the-signing-secret"}]},{"group":"Webhook deliveries","pages":[{"title":"List webhook deliveries","openapi":"/openapi.yaml get /webhook_deliveries","href":"/api-reference/webhook-deliveries/list-webhook-deliveries"},{"title":"Retry a failed delivery","openapi":"/openapi.yaml post /webhook_deliveries/{id}/retry","href":"/api-reference/webhook-deliveries/retry-a-failed-delivery"},{"title":"Retry the failed deliveries of a period","openapi":"/openapi.yaml post /webhook_deliveries/retry","href":"/api-reference/webhook-deliveries/retry-the-failed-deliveries-of-a-period"}]},{"group":"Reports","pages":[{"title":"Ask for a report","openapi":"/openapi.yaml post /reports","href":"/api-reference/reports/ask-for-a-report"},{"title":"Get a report","openapi":"/openapi.yaml get /reports/{id}","href":"/api-reference/reports/get-a-report"},{"title":"Download a report's file","openapi":"/openapi.yaml get /reports/{id}/file","href":"/api-reference/reports/download-a-reports-file"}]},{"group":"API Reference","pages":[{"title":"Operation*","openapi":"/openapi.yaml webhook operation","href":"/api-reference/operation*"},{"title":"Blockchain event*","openapi":"/openapi.yaml webhook blockchain_event","href":"/api-reference/blockchain_event*"},{"title":"Run*","openapi":"/openapi.yaml webhook run","href":"/api-reference/run*"},{"title":"Wallet*","openapi":"/openapi.yaml webhook wallet","href":"/api-reference/wallet*"}]}]}]},"basePath":"","title":"List workflows - Citadel API","buildId":"3c5c97139bf8","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DGp7Pxzx.js","utils-8Jv-1L07.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-CLSsw4wM.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-RrVIaDh7.js","snippetPresets-DSI4wgEf.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-W2e9g_oX.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-CDpwfEDw.js","shallow-Dq5-SwG1.js","getApiPlaygroundDisplay-basMZYRO.js","CodeSnippet-CWKJfCQt.js","CodeSnippets-xDLW1FEv.js","Page-Dc5qkJG8.js","getPastedJson-DObxGgIR.js","icon-HMNWawTa.js","MethodPill-DA_6XsWN.js","DuplicateIcon-DK5o2DOi.js","createIcon-BhUMOhLi.js","DynamicMarkdown-Dokq7GGW.js","SectionHeading-DSaxk-9e.js","axios-vUo_bRtp.js","Markdown-BDO6y5hF.js","clsx-DfU2JnNK.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-BRVLaqXg.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-CxOoiG7S.js"]}