What done looks like. Markdown. Links the agent’s tools as [[tool:<id or name>]] and its other procedures as [[procedure:<id or title>]] (kept by id, so renaming either keeps the link; a tool a procedure links is unlocked with it), and uses an input as {name}.
Background, policy, definitions and notes the steps rely on that aren’t steps themselves; the model reads it before the steps. Markdown. Links the agent’s tools as [[tool:<id or name>]] and its other procedures as [[procedure:<id or title>]] (kept by id, so renaming either keeps the link; a tool a procedure links is unlocked with it), and uses an input as {name}.
The steps as one numbered Markdown list (steps is the same as a list). Sent instead of steps, it’s read into steps: one per item, sub-points under their step; prose before step 1 or after the last one joins context. Markdown. Links the agent’s tools as [[tool:<id or name>]] and its other procedures as [[procedure:<id or title>]] (kept by id, so renaming either keeps the link; a tool a procedure links is unlocked with it), and uses an input as {name}.
The steps, in order: each its text, or { id, text } to keep a step’s id (as the procedure gives them back). A step sent as text keeps the id of a step it had with the same text, or of the step it replaces. Not with instructions or body. A step that links another procedure ([[procedure:<id or title>]]) calls it as a subprocedure.
What to confirm before answering, as a list. Markdown. Links the agent’s tools as [[tool:<id or name>]] and its other procedures as [[procedure:<id or title>]] (kept by id, so renaming either keeps the link; a tool a procedure links is unlocked with it), and uses an input as {name}.
The whole text instead of its parts (not with them): split into them by its ## Inputs, ## Goal, ## Context, ## Instructions and ## Checks headings (or its trailing “Check:” lines), with tool names and quoted procedure titles linked. The parts together are up to 20,000 characters.
Up to 10 of the agent’s HTTP tools, by name (of its published version). Each stays locked in a task until the agent reads this procedure. The whole list: [] detaches them all.
Ask a person in the conversation before a task follows this procedure. null or { "required": false } turns it off. The whole setting: fields left out take their defaults.
The model this procedure runs on instead of the agent's (one of the agent model values), or null for the agent's own. Once a chat reads the procedure, the rest of the conversation runs on this model; a browser or computer task that follows it does too. An eval run that tries the agent on models it picked keeps those. Changing it makes a new revision.
Whether Eager runs this procedure without the agent's model: off (the model follows it), test (only in evals and test chats) or live (every conversation). A chat procedure is compiled into steps in the background when it's turned on or a new revision is saved; a browser procedure is recorded from the next run of it that works (its pages, clicks and typing, the procedure's inputs as blanks) and replayed after that, a small model reading the answer off the last screen. A step that needs judgement, or that can't be done for sure, hands the conversation (or the task) to the model from where it got to. Changing it doesn't make a new revision.
The kind of request it's for, from the same set as the test cases' category (the eval charts group pass rates by it), or null for none. Spelled as a test case or procedure in the org already has it, whatever its capitals. Its test cases are always in it (a category sent for one is ignored), and move with it when it changes. Changing only the category makes no new revision. Up to 100 characters.
Whether the agent may create, change and delete its own files (write_file, edit_file, delete_file, and with Run code save_sandbox_file, which keeps a file its code made) while a conversation follows this procedure: the one it last read, found or ran on its steps, or a schedule's. read_only (the default) keeps them read-only, as everywhere else. Checked on every change, so turning it off holds at once. A test chat's or an eval's changes go to that conversation's own copy, never the real files. Every change keeps the version it replaced (GET /v1/agents/{agent_id}/file_revisions). Changing it doesn't make a new revision.
What done looks like. Markdown. Links the agent’s tools as [[tool:<id or name>]] and its other procedures as [[procedure:<id or title>]] (kept by id, so renaming either keeps the link; a tool a procedure links is unlocked with it), and uses an input as {name}. Left out of lists.
Background, policy, definitions and notes the steps rely on that aren’t steps themselves; the model reads it before the steps. Markdown. Links the agent’s tools as [[tool:<id or name>]] and its other procedures as [[procedure:<id or title>]] (kept by id, so renaming either keeps the link; a tool a procedure links is unlocked with it), and uses an input as {name}. Left out of lists.
The steps as one numbered Markdown list (steps is the same as a list). Sent instead of steps, it’s read into steps: one per item, sub-points under their step; prose before step 1 or after the last one joins context. Markdown. Links the agent’s tools as [[tool:<id or name>]] and its other procedures as [[procedure:<id or title>]] (kept by id, so renaming either keeps the link; a tool a procedure links is unlocked with it), and uses an input as {name}. Left out of lists.
The steps, in order, each with an id that stays with it when steps are added, moved or edited. A step that links another procedure calls it: a subprocedure, which runs as it’s set up (its own steps, model and Steps without AI) before the next step. Left out of lists.
What to confirm before answering, as a list. Markdown. Links the agent’s tools as [[tool:<id or name>]] and its other procedures as [[procedure:<id or title>]] (kept by id, so renaming either keeps the link; a tool a procedure links is unlocked with it), and uses an input as {name}. Left out of lists.
The model this procedure runs on instead of the agent's (one of the agent model values), or null for the agent's own. Once a chat reads the procedure, the rest of the conversation runs on this model; a browser or computer task that follows it does too. An eval run that tries the agent on models it picked keeps those. Changing it makes a new revision.
Whether Eager runs this procedure without the agent's model: off (the model follows it), test (only in evals and test chats) or live (every conversation). A chat procedure is compiled into steps in the background when it's turned on or a new revision is saved; a browser procedure is recorded from the next run of it that works (its pages, clicks and typing, the procedure's inputs as blanks) and replayed after that, a small model reading the answer off the last screen. A step that needs judgement, or that can't be done for sure, hands the conversation (or the task) to the model from where it got to. Changing it doesn't make a new revision.
The procedure's steps without AI (see plan_mode). The list of procedures gives steps_count; one procedure gives its steps (and a chat procedure's vars). A browser procedure's steps are recorded actions: type (open, click, double_click, type, keypress, scroll, drag, wait), with url, text (the inputs as {name} blanks), keys, page (the host and path it ran on), and target or focus (the control's role and label).
What a run that used it cost on average in the last 30 days, in cents at list price (to a tenth of a cent): a conversation, or a task on its own, priced by its tasks and chat replies that got it. Finished runs only; null when there are none.
Whether the agent may create, change and delete its own files (write_file, edit_file, delete_file, and with Run code save_sandbox_file, which keeps a file its code made) while a conversation follows this procedure: the one it last read, found or ran on its steps, or a schedule's. read_only (the default) keeps them read-only, as everywhere else. Checked on every change, so turning it off holds at once. A test chat's or an eval's changes go to that conversation's own copy, never the real files. Every change keeps the version it replaced (GET /v1/agents/{agent_id}/file_revisions). Changing it doesn't make a new revision.
Available options:
read_only,
read_write
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Eager","description":"Train AI agents like new hires: hand an agent your files and coach it, and it writes its own procedures and works in any software, even without an API.","colors":{"primary":"#183B2B","light":"#C9EE6A","dark":"#183B2B"},"logo":{"light":"https://mintcdn.com/guiding-hand/lgKNkM-YLkSemq1m/logo/light.svg?fit=max\u0026auto=format\u0026n=lgKNkM-YLkSemq1m\u0026q=85\u0026s=e586dcc65be9b0c262b28f3c88841ebd","dark":"https://mintcdn.com/guiding-hand/lgKNkM-YLkSemq1m/logo/dark.svg?fit=max\u0026auto=format\u0026n=lgKNkM-YLkSemq1m\u0026q=85\u0026s=47ef805b722f3fb6888488a040c99a9b","href":"https://guidinghand.ai"},"favicon":"https://mintcdn.com/guiding-hand/lgKNkM-YLkSemq1m/logo/favicon.svg?fit=max\u0026auto=format\u0026n=lgKNkM-YLkSemq1m\u0026q=85\u0026s=825f6431fe8735610a0d5b4d82b094ef","api":{"playground":{"display":"interactive"},"examples":{"languages":["curl","javascript","python"]}},"navbar":{"links":[{"href":"https://guidinghand.ai/console","label":"Console"}],"primary":{"type":"button","label":"Get an API key","href":"https://guidinghand.ai/console"}},"footer":{"socials":{"website":"https://guidinghand.ai"}},"fonts":{"heading":{"family":"Instrument Serif","weight":400},"body":{"family":"Geist"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"guiding-hand","hasAudioNarration":false,"actualSubdomain":"guiding-hand","customDomains":["docs.guidinghand.ai"],"gitSource":{"type":"github","owner":"chaowss","repo":"guidinghand","deployBranch":"main","contentDirectory":"docs-site","isPrivate":true,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6add309dc712644f43433dab","collectionId":"4389e879-6cd8-4a16-a557-fa3f3063eaee","liveDeploymentHistoryId":"6add309dc712644f43433dab","schemaVersion":"v3"},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"WEB_MCP":{"status":"DISABLED"},"NARRATION":{"status":"DISABLED"}},"buildId":"6add309dc712644f43433dab","clientVersion":"0.0.3966","searchFilterCounts":[{"language":"default","tag":"API reference","count":326},{"language":"default","tag":"Documentation","count":26},{"language":"default","tag":"Agent tools","count":16},{"language":"default","tag":"Agents","count":15},{"language":"default","tag":"Phone numbers","count":12},{"language":"default","tag":"Test runs","count":11},{"language":"default","tag":"Computers","count":10},{"language":"default","tag":"Procedures","count":10},{"language":"default","tag":"Schedules","count":10},{"language":"default","tag":"Start states","count":10}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":true},"customCss":[],"page":{"pagePath":"api-reference/procedures/add-a-procedure","slug":"/api-reference/procedures/add-a-procedure","pageMetadata":{"title":"Add a procedure","description":null,"deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/agents/{agent_id}/procedures","href":"/api-reference/procedures/add-a-procedure","autogeneratedByOpenApi":true},"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":{"title":"Add a procedure","description":null,"deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/agents/{agent_id}/procedures","href":"/api-reference/procedures/add-a-procedure","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Procedures"],"summary":"Add a procedure","operationId":"createProcedure","requestBody":"f83ced76-58ed-4dc6-bce3-46e96358e1dc","responses":{"200":"1b891ccf-8110-4d2f-b704-b15fad7f26ab","400":"8fc2a885-dda5-4c40-9572-f950cc9bffe6","404":"09ef8637-f758-4b0c-88ca-6dcb467ad1ac"},"method":"post","type":"path","servers":["85e29cb7-6717-4fc8-a547-7f631658d89f","9a2e9bd4-a985-4b06-b2e6-6058cff49185"],"security":["19caf6ec-6aee-430b-b1b4-3f12500d5525"],"path":"/v1/agents/{agent_id}/procedures","baseUrlOptions":["https://guidinghand.ai","https://dev.guidinghand.ai"],"title":"Add a procedure","description":"","codeSamples":[],"requestExampleLanguages":["bash","javascript","python"],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"3a702498-e464-493d-b11d-24e9b1225fa3":{"name":"agent_id","in":"path","required":true,"description":"The agent’s id.","schema":{"type":"string","isRequired":true,"description":"The agent’s id.","uniqueKey":"","typeLabel":"string"}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"use_when":{"type":"string","isRequired":true,"uniqueKey":"use_when","typeLabel":"string"},"inputs":{"type":"array","items":{"type":"object","description":"Something the procedure needs before it starts. Its text uses it as `{name}`; one it uses that isn’t listed is added as required text.","required":["name"],"properties":{"name":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,39}$","isRequired":true,"uniqueKey":"inputs.items.[INDEX].name","typeLabel":"string"},"type":{"type":"string","enum":["text","number","date","email","phone","url","country","choice","yes_no"],"default":"text","uniqueKey":"inputs.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":300,"uniqueKey":"inputs.items.[INDEX].description","typeLabel":"string"},"required":{"type":"boolean","default":true,"uniqueKey":"inputs.items.[INDEX].required","typeLabel":"boolean"},"options":{"type":"array","items":{"type":"string","uniqueKey":"inputs.items.[INDEX].options.items.[INDEX]","typeLabel":"string"},"description":"A `choice`’s choices.","uniqueKey":"inputs.items.[INDEX].options","typeLabel":"string[]"},"example":{"type":"string","uniqueKey":"inputs.items.[INDEX].example","typeLabel":"string"}},"uniqueKey":"inputs.items.[INDEX]","typeLabel":"object"},"maxItems":20,"uniqueKey":"inputs","typeLabel":"object[]"},"goal":{"type":"string","description":"What done looks like. Markdown. Links the agent’s tools as `[[tool:\u003cid or name>]]` and its other procedures as `[[procedure:\u003cid or title>]]` (kept by id, so renaming either keeps the link; a tool a procedure links is unlocked with it), and uses an input as `{name}`.","uniqueKey":"goal","typeLabel":"string"},"context":{"type":"string","maxLength":10000,"description":"Background, policy, definitions and notes the steps rely on that aren’t steps themselves; the model reads it before the steps. Markdown. Links the agent’s tools as `[[tool:\u003cid or name>]]` and its other procedures as `[[procedure:\u003cid or title>]]` (kept by id, so renaming either keeps the link; a tool a procedure links is unlocked with it), and uses an input as `{name}`.","uniqueKey":"context","typeLabel":"string"},"instructions":{"type":"string","description":"The steps as one numbered Markdown list (`steps` is the same as a list). Sent instead of `steps`, it’s read into steps: one per item, sub-points under their step; prose before step 1 or after the last one joins `context`. Markdown. Links the agent’s tools as `[[tool:\u003cid or name>]]` and its other procedures as `[[procedure:\u003cid or title>]]` (kept by id, so renaming either keeps the link; a tool a procedure links is unlocked with it), and uses an input as `{name}`.","uniqueKey":"instructions","typeLabel":"string"},"steps":{"type":"array","maxItems":100,"items":{"oneOf":[{"type":"string","description":"The step’s text (Markdown).","uniqueKey":"steps.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"object","required":["text"],"properties":{"text":{"type":"string","maxLength":4000,"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.1.text","typeLabel":"string"},"id":{"type":"string","description":"The id of a step it had, to keep it; left out for a new step.","uniqueKey":"steps.items.[INDEX].oneOf.1.id","typeLabel":"string"}},"uniqueKey":"steps.items.[INDEX].oneOf.1","typeLabel":"object"}],"uniqueKey":"steps.items.[INDEX]","typeLabel":"string | object"},"description":"The steps, in order: each its text, or `{ id, text }` to keep a step’s id (as the procedure gives them back). A step sent as text keeps the id of a step it had with the same text, or of the step it replaces. Not with `instructions` or `body`. A step that links another procedure (`[[procedure:\u003cid or title>]]`) calls it as a subprocedure.","uniqueKey":"steps","typeLabel":"(string | object)[]"},"checks":{"type":"string","description":"What to confirm before answering, as a list. Markdown. Links the agent’s tools as `[[tool:\u003cid or name>]]` and its other procedures as `[[procedure:\u003cid or title>]]` (kept by id, so renaming either keeps the link; a tool a procedure links is unlocked with it), and uses an input as `{name}`.","uniqueKey":"checks","typeLabel":"string"},"body":{"type":"string","description":"The whole text instead of its parts (not with them): split into them by its `## Inputs`, `## Goal`, `## Context`, `## Instructions` and `## Checks` headings (or its trailing “Check:” lines), with tool names and quoted procedure titles linked. The parts together are up to 20,000 characters.","uniqueKey":"body","typeLabel":"string"},"status":{"type":"string","enum":["active","draft"],"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"kind":{"type":"string","enum":["browser","desktop","chat"],"uniqueKey":"kind","typeLabel":"enum\u003cstring>"},"tools":{"type":"array","items":{"type":"string","uniqueKey":"tools.items.[INDEX]","typeLabel":"string"},"description":"Up to 10 of the agent’s HTTP tools, by name (of its published version). Each stays locked in a task until the agent reads this procedure. The whole list: [] detaches them all.","maxItems":10,"uniqueKey":"tools","typeLabel":"string[]"},"approval":{"oneOf":[{"type":"object","description":"Ask a person in the conversation before a task follows this procedure. `null` or `{ \"required\": false }` turns it off. The whole setting: fields left out take their defaults.","required":["required"],"properties":{"required":{"type":"boolean","description":"Always `true` in what the API returns; send `false` to turn the approval off.","isRequired":true,"uniqueKey":"approval.oneOf.0.required","typeLabel":"boolean"},"by":{"type":"string","enum":["anyone","team"],"default":"anyone","description":"`anyone`: the person in the chat (when the agent lets them approve) or the team. `team`: only the team.","uniqueKey":"approval.oneOf.0.by","typeLabel":"enum\u003cstring>"},"who":{"type":"string","maxLength":60,"default":"","description":"Who signs off, shown on the request, like \"services specialist\". A label, not a permission.","uniqueKey":"approval.oneOf.0.who","typeLabel":"string"},"covers":{"type":"array","items":{"type":"string","enum":["purchase","send","delete","install","security","terms"],"uniqueKey":"approval.oneOf.0.covers.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":[],"description":"Which of the agent’s \"Ask first\" categories the approval covers: once it is given, the task’s steps in those categories go ahead without asking again.","uniqueKey":"approval.oneOf.0.covers","typeLabel":"enum\u003cstring>[]"},"note":{"type":"string","maxLength":500,"default":"","description":"What to check or bring, shown on the request.","uniqueKey":"approval.oneOf.0.note","typeLabel":"string"}},"uniqueKey":"approval.oneOf.0","typeLabel":"object"},{"type":"null","description":"Ask a person in the conversation before a task follows this procedure. `null` or `{ \"required\": false }` turns it off. The whole setting: fields left out take their defaults.","uniqueKey":"approval.oneOf.1","typeLabel":"null"}],"uniqueKey":"approval","typeLabel":"object | null"},"model":{"oneOf":[{"type":"string","enum":["claude-haiku-5-5","claude-sonnet-5-5","claude-opus-5-5","claude-fable-5-1","gpt-6-luna","gpt-6.1-sol","gpt-6-astra","gemini-3.8-flash","gemini-4-argon",null],"description":"The model this procedure runs on instead of the agent's (one of the agent `model` values), or `null` for the agent's own. Once a chat reads the procedure, the rest of the conversation runs on this model; a browser or computer task that follows it does too. An eval run that tries the agent on models it picked keeps those. Changing it makes a new revision.","uniqueKey":"model.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["claude-haiku-5-5","claude-sonnet-5-5","claude-opus-5-5","claude-fable-5-1","gpt-6-luna","gpt-6.1-sol","gpt-6-astra","gemini-3.8-flash","gemini-4-argon",null],"description":"The model this procedure runs on instead of the agent's (one of the agent `model` values), or `null` for the agent's own. Once a chat reads the procedure, the rest of the conversation runs on this model; a browser or computer task that follows it does too. An eval run that tries the agent on models it picked keeps those. Changing it makes a new revision.","uniqueKey":"model.oneOf.1","typeLabel":"null"}],"uniqueKey":"model","typeLabel":"enum\u003cstring> | null"},"plan_mode":{"type":"string","enum":["off","test","live"],"description":"Whether Eager runs this procedure without the agent's model: `off` (the model follows it), `test` (only in evals and test chats) or `live` (every conversation). A chat procedure is compiled into steps in the background when it's turned on or a new revision is saved; a browser procedure is recorded from the next run of it that works (its pages, clicks and typing, the procedure's inputs as blanks) and replayed after that, a small model reading the answer off the last screen. A step that needs judgement, or that can't be done for sure, hands the conversation (or the task) to the model from where it got to. Changing it doesn't make a new revision.","uniqueKey":"plan_mode","typeLabel":"enum\u003cstring>"},"category":{"oneOf":[{"type":"string","maxLength":100,"description":"The kind of request it's for, from the same set as the test cases' `category` (the eval charts group pass rates by it), or `null` for none. Spelled as a test case or procedure in the org already has it, whatever its capitals. Its test cases are always in it (a `category` sent for one is ignored), and move with it when it changes. Changing only the category makes no new revision. Up to 100 characters.","uniqueKey":"category.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":100,"description":"The kind of request it's for, from the same set as the test cases' `category` (the eval charts group pass rates by it), or `null` for none. Spelled as a test case or procedure in the org already has it, whatever its capitals. Its test cases are always in it (a `category` sent for one is ignored), and move with it when it changes. Changing only the category makes no new revision. Up to 100 characters.","uniqueKey":"category.oneOf.1","typeLabel":"null"}],"uniqueKey":"category","typeLabel":"string | null"},"file_access":{"type":"string","enum":["read_only","read_write"],"description":"Whether the agent may create, change and delete its own files (write_file, edit_file, delete_file, and with Run code save_sandbox_file, which keeps a file its code made) while a conversation follows this procedure: the one it last read, found or ran on its steps, or a schedule's. `read_only` (the default) keeps them read-only, as everywhere else. Checked on every change, so turning it off holds at once. A test chat's or an eval's changes go to that conversation's own copy, never the real files. Every change keeps the version it replaced (`GET /v1/agents/{agent_id}/file_revisions`). Changing it doesn't make a new revision.","uniqueKey":"file_access","typeLabel":"enum\u003cstring>"}},"required":["title","use_when"],"description":"A new procedure needs `instructions` (or `body`).","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"title":"\u003cstring>","use_when":"\u003cstring>","inputs":[{"name":"\u003cstring>","type":"text","description":"\u003cstring>","required":true,"options":["\u003cstring>"],"example":"\u003cstring>"}],"goal":"\u003cstring>","context":"\u003cstring>","instructions":"\u003cstring>","steps":["\u003cstring>"],"checks":"\u003cstring>","body":"\u003cstring>","tools":["\u003cstring>"],"approval":{"required":true,"by":"anyone","who":"","covers":[],"note":""},"category":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"1b891ccf-8110-4d2f-b704-b15fad7f26ab":{"description":"The procedure.","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"const":"procedure","uniqueKey":"object","typeLabel":"any"},"id":{"type":"string","example":"prc_…","uniqueKey":"id","typeLabel":"string"},"agent_id":{"type":"string","uniqueKey":"agent_id","typeLabel":"string"},"title":{"type":"string","maxLength":120,"uniqueKey":"title","typeLabel":"string"},"use_when":{"type":"string","maxLength":500,"uniqueKey":"use_when","typeLabel":"string"},"inputs":{"type":"array","items":{"type":"object","description":"Something the procedure needs before it starts. Its text uses it as `{name}`; one it uses that isn’t listed is added as required text.","required":["name"],"properties":{"name":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,39}$","isRequired":true,"uniqueKey":"inputs.items.[INDEX].name","typeLabel":"string"},"type":{"type":"string","enum":["text","number","date","email","phone","url","country","choice","yes_no"],"default":"text","uniqueKey":"inputs.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":300,"uniqueKey":"inputs.items.[INDEX].description","typeLabel":"string"},"required":{"type":"boolean","default":true,"uniqueKey":"inputs.items.[INDEX].required","typeLabel":"boolean"},"options":{"type":"array","items":{"type":"string","uniqueKey":"inputs.items.[INDEX].options.items.[INDEX]","typeLabel":"string"},"description":"A `choice`’s choices.","uniqueKey":"inputs.items.[INDEX].options","typeLabel":"string[]"},"example":{"type":"string","uniqueKey":"inputs.items.[INDEX].example","typeLabel":"string"}},"uniqueKey":"inputs.items.[INDEX]","typeLabel":"object"},"maxItems":20,"description":"Left out of lists.","uniqueKey":"inputs","typeLabel":"object[]"},"goal":{"type":"string","description":"What done looks like. Markdown. Links the agent’s tools as `[[tool:\u003cid or name>]]` and its other procedures as `[[procedure:\u003cid or title>]]` (kept by id, so renaming either keeps the link; a tool a procedure links is unlocked with it), and uses an input as `{name}`. Left out of lists.","uniqueKey":"goal","typeLabel":"string"},"context":{"type":"string","maxLength":10000,"description":"Background, policy, definitions and notes the steps rely on that aren’t steps themselves; the model reads it before the steps. Markdown. Links the agent’s tools as `[[tool:\u003cid or name>]]` and its other procedures as `[[procedure:\u003cid or title>]]` (kept by id, so renaming either keeps the link; a tool a procedure links is unlocked with it), and uses an input as `{name}`. Left out of lists.","uniqueKey":"context","typeLabel":"string"},"instructions":{"type":"string","description":"The steps as one numbered Markdown list (`steps` is the same as a list). Sent instead of `steps`, it’s read into steps: one per item, sub-points under their step; prose before step 1 or after the last one joins `context`. Markdown. Links the agent’s tools as `[[tool:\u003cid or name>]]` and its other procedures as `[[procedure:\u003cid or title>]]` (kept by id, so renaming either keeps the link; a tool a procedure links is unlocked with it), and uses an input as `{name}`. Left out of lists.","uniqueKey":"instructions","typeLabel":"string"},"steps":{"type":"array","items":{"type":"object","required":["id","text","subprocedure"],"properties":{"id":{"type":"string","description":"The step’s id (st_…), the same for as long as the step is kept.","isRequired":true,"uniqueKey":"steps.items.[INDEX].id","typeLabel":"string"},"text":{"type":"string","maxLength":4000,"description":"What to do, Markdown (sub-points under it are part of it).","isRequired":true,"uniqueKey":"steps.items.[INDEX].text","typeLabel":"string"},"subprocedure":{"oneOf":[{"type":"null","description":"The procedure this step calls (the first it links), or null.","isRequired":true,"uniqueKey":"steps.items.[INDEX].subprocedure.oneOf.0","typeLabel":"null"},{"type":"object","description":"The procedure this step calls (the first it links), or null.","required":["id","title","missing"],"properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"steps.items.[INDEX].subprocedure.oneOf.1.id","typeLabel":"string"},"title":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"steps.items.[INDEX].subprocedure.oneOf.1.title.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"steps.items.[INDEX].subprocedure.oneOf.1.title.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"steps.items.[INDEX].subprocedure.oneOf.1.title","typeLabel":"string | null"},"missing":{"type":"boolean","description":"It was deleted.","isRequired":true,"uniqueKey":"steps.items.[INDEX].subprocedure.oneOf.1.missing","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"steps.items.[INDEX].subprocedure.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"steps.items.[INDEX].subprocedure","typeLabel":"null | object"}},"uniqueKey":"steps.items.[INDEX]","typeLabel":"object"},"description":"The steps, in order, each with an id that stays with it when steps are added, moved or edited. A step that links another procedure calls it: a subprocedure, which runs as it’s set up (its own steps, model and Steps without AI) before the next step. Left out of lists.","uniqueKey":"steps","typeLabel":"object[]"},"checks":{"type":"string","description":"What to confirm before answering, as a list. Markdown. Links the agent’s tools as `[[tool:\u003cid or name>]]` and its other procedures as `[[procedure:\u003cid or title>]]` (kept by id, so renaming either keeps the link; a tool a procedure links is unlocked with it), and uses an input as `{name}`. Left out of lists.","uniqueKey":"checks","typeLabel":"string"},"body":{"type":"string","maxLength":20000,"description":"The whole text as the agent reads it: its parts under ## headings, links as the tool’s name and the procedure’s title. Left out of lists.","uniqueKey":"body","typeLabel":"string"},"status":{"type":"string","enum":["active","draft","archived"],"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"kind":{"type":"string","enum":["browser","desktop","chat"],"description":"What it needs to run: a browser, a computer, or nothing beyond the chat.","uniqueKey":"kind","typeLabel":"enum\u003cstring>"},"tools":{"type":"array","items":{"type":"string","uniqueKey":"tools.items.[INDEX]","typeLabel":"string"},"description":"The agent’s HTTP tools it unlocks, by name: each stays locked in a task until the agent reads this procedure. Kept when the agent no longer has one.","uniqueKey":"tools","typeLabel":"string[]"},"approval":{"oneOf":[{"type":"object","description":"Whether a person must approve in the conversation before a task follows this procedure; `null` when not. Changing it makes a new revision.","required":["required"],"properties":{"required":{"type":"boolean","description":"Always `true` in what the API returns; send `false` to turn the approval off.","isRequired":true,"uniqueKey":"approval.oneOf.0.required","typeLabel":"boolean"},"by":{"type":"string","enum":["anyone","team"],"default":"anyone","description":"`anyone`: the person in the chat (when the agent lets them approve) or the team. `team`: only the team.","uniqueKey":"approval.oneOf.0.by","typeLabel":"enum\u003cstring>"},"who":{"type":"string","maxLength":60,"default":"","description":"Who signs off, shown on the request, like \"services specialist\". A label, not a permission.","uniqueKey":"approval.oneOf.0.who","typeLabel":"string"},"covers":{"type":"array","items":{"type":"string","enum":["purchase","send","delete","install","security","terms"],"uniqueKey":"approval.oneOf.0.covers.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":[],"description":"Which of the agent’s \"Ask first\" categories the approval covers: once it is given, the task’s steps in those categories go ahead without asking again.","uniqueKey":"approval.oneOf.0.covers","typeLabel":"enum\u003cstring>[]"},"note":{"type":"string","maxLength":500,"default":"","description":"What to check or bring, shown on the request.","uniqueKey":"approval.oneOf.0.note","typeLabel":"string"}},"uniqueKey":"approval.oneOf.0","typeLabel":"object"},{"type":"null","description":"Whether a person must approve in the conversation before a task follows this procedure; `null` when not. Changing it makes a new revision.","uniqueKey":"approval.oneOf.1","typeLabel":"null"}],"uniqueKey":"approval","typeLabel":"object | null"},"model":{"oneOf":[{"type":"string","enum":["claude-haiku-5-5","claude-sonnet-5-5","claude-opus-5-5","claude-fable-5-1","gpt-6-luna","gpt-6.1-sol","gpt-6-astra","gemini-3.8-flash","gemini-4-argon",null],"description":"The model this procedure runs on instead of the agent's (one of the agent `model` values), or `null` for the agent's own. Once a chat reads the procedure, the rest of the conversation runs on this model; a browser or computer task that follows it does too. An eval run that tries the agent on models it picked keeps those. Changing it makes a new revision.","uniqueKey":"model.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["claude-haiku-5-5","claude-sonnet-5-5","claude-opus-5-5","claude-fable-5-1","gpt-6-luna","gpt-6.1-sol","gpt-6-astra","gemini-3.8-flash","gemini-4-argon",null],"description":"The model this procedure runs on instead of the agent's (one of the agent `model` values), or `null` for the agent's own. Once a chat reads the procedure, the rest of the conversation runs on this model; a browser or computer task that follows it does too. An eval run that tries the agent on models it picked keeps those. Changing it makes a new revision.","uniqueKey":"model.oneOf.1","typeLabel":"null"}],"uniqueKey":"model","typeLabel":"enum\u003cstring> | null"},"plan_mode":{"type":"string","enum":["off","test","live"],"description":"Whether Eager runs this procedure without the agent's model: `off` (the model follows it), `test` (only in evals and test chats) or `live` (every conversation). A chat procedure is compiled into steps in the background when it's turned on or a new revision is saved; a browser procedure is recorded from the next run of it that works (its pages, clicks and typing, the procedure's inputs as blanks) and replayed after that, a small model reading the answer off the last screen. A step that needs judgement, or that can't be done for sure, hands the conversation (or the task) to the model from where it got to. Changing it doesn't make a new revision.","uniqueKey":"plan_mode","typeLabel":"enum\u003cstring>"},"plan":{"type":"object","description":"The procedure's steps without AI (see `plan_mode`). The list of procedures gives `steps_count`; one procedure gives its `steps` (and a chat procedure's `vars`). A browser procedure's steps are recorded actions: `type` (open, click, double_click, type, keypress, scroll, drag, wait), with `url`, `text` (the inputs as `{name}` blanks), `keys`, `page` (the host and path it ran on), and `target` or `focus` (the control's role and label).","properties":{"mode":{"type":"string","enum":["off","test","live"],"uniqueKey":"plan.mode","typeLabel":"enum\u003cstring>"},"status":{"type":"string","enum":["off","compiling","recording","ready","failed"],"description":"`ready` when its steps are there for the current revision; `recording`: a browser procedure waiting for a run to record.","uniqueKey":"plan.status","typeLabel":"enum\u003cstring>"},"revision":{"oneOf":[{"type":"integer","description":"The revision the steps were compiled from.","uniqueKey":"plan.revision.oneOf.0","typeLabel":"integer"},{"type":"null","description":"The revision the steps were compiled from.","uniqueKey":"plan.revision.oneOf.1","typeLabel":"null"}],"uniqueKey":"plan.revision","typeLabel":"integer | null"},"compiled_at":{"oneOf":[{"type":"string","format":"date-time","uniqueKey":"plan.compiled_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","uniqueKey":"plan.compiled_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"plan.compiled_at","typeLabel":"string\u003cdate-time> | null"},"error":{"oneOf":[{"type":"string","description":"Why it couldn't be compiled (`failed`); the model follows the procedure meanwhile.","uniqueKey":"plan.error.oneOf.0","typeLabel":"string"},{"type":"null","description":"Why it couldn't be compiled (`failed`); the model follows the procedure meanwhile.","uniqueKey":"plan.error.oneOf.1","typeLabel":"null"}],"uniqueKey":"plan.error","typeLabel":"string | null"},"steps_count":{"type":"integer","uniqueKey":"plan.steps_count","typeLabel":"integer"},"vars":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","uniqueKey":"plan.vars.items.[INDEX].name","typeLabel":"string"},"description":{"type":"string","uniqueKey":"plan.vars.items.[INDEX].description","typeLabel":"string"},"list":{"type":"boolean","uniqueKey":"plan.vars.items.[INDEX].list","typeLabel":"boolean"}},"uniqueKey":"plan.vars.items.[INDEX]","typeLabel":"object"},"description":"Values read from tool results.","uniqueKey":"plan.vars","typeLabel":"object[]"},"steps":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","uniqueKey":"plan.steps.items.[INDEX].id","typeLabel":"string"},"kind":{"type":"string","enum":["ask","call","branch","say","go","ai","end"],"description":"Ask for inputs, call a tool, decide between options, say a reply, go to another procedure, hand to the model, or end.","uniqueKey":"plan.steps.items.[INDEX].kind","typeLabel":"enum\u003cstring>"},"text":{"type":"string","uniqueKey":"plan.steps.items.[INDEX].text","typeLabel":"string"},"inputs":{"type":"array","items":{"type":"string","uniqueKey":"plan.steps.items.[INDEX].inputs.items.[INDEX]","typeLabel":"string"},"uniqueKey":"plan.steps.items.[INDEX].inputs","typeLabel":"string[]"},"tool":{"type":"string","uniqueKey":"plan.steps.items.[INDEX].tool","typeLabel":"string"},"args":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","uniqueKey":"plan.steps.items.[INDEX].args.items.[INDEX].name","typeLabel":"string"},"value":{"type":"string","uniqueKey":"plan.steps.items.[INDEX].args.items.[INDEX].value","typeLabel":"string"}},"uniqueKey":"plan.steps.items.[INDEX].args.items.[INDEX]","typeLabel":"object"},"uniqueKey":"plan.steps.items.[INDEX].args","typeLabel":"object[]"},"options":{"type":"array","items":{"type":"object","properties":{"when":{"type":"string","uniqueKey":"plan.steps.items.[INDEX].options.items.[INDEX].when","typeLabel":"string"},"next":{"type":"string","uniqueKey":"plan.steps.items.[INDEX].options.items.[INDEX].next","typeLabel":"string"}},"uniqueKey":"plan.steps.items.[INDEX].options.items.[INDEX]","typeLabel":"object"},"uniqueKey":"plan.steps.items.[INDEX].options","typeLabel":"object[]"},"procedure":{"type":"string","uniqueKey":"plan.steps.items.[INDEX].procedure","typeLabel":"string"},"next":{"type":"string","uniqueKey":"plan.steps.items.[INDEX].next","typeLabel":"string"},"type":{"type":"string","enum":["open","click","double_click","type","keypress","scroll","drag","wait"],"uniqueKey":"plan.steps.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"url":{"type":"string","uniqueKey":"plan.steps.items.[INDEX].url","typeLabel":"string"},"page":{"type":"string","uniqueKey":"plan.steps.items.[INDEX].page","typeLabel":"string"},"keys":{"type":"array","items":{"type":"string","uniqueKey":"plan.steps.items.[INDEX].keys.items.[INDEX]","typeLabel":"string"},"uniqueKey":"plan.steps.items.[INDEX].keys","typeLabel":"string[]"},"target":{"type":"object","properties":{"role":{"type":"string","uniqueKey":"plan.steps.items.[INDEX].target.role","typeLabel":"string"},"label":{"type":"string","uniqueKey":"plan.steps.items.[INDEX].target.label","typeLabel":"string"}},"uniqueKey":"plan.steps.items.[INDEX].target","typeLabel":"object"},"focus":{"type":"object","properties":{"role":{"type":"string","uniqueKey":"plan.steps.items.[INDEX].focus.role","typeLabel":"string"},"label":{"type":"string","uniqueKey":"plan.steps.items.[INDEX].focus.label","typeLabel":"string"}},"uniqueKey":"plan.steps.items.[INDEX].focus","typeLabel":"object"}},"uniqueKey":"plan.steps.items.[INDEX]","typeLabel":"object"},"uniqueKey":"plan.steps","typeLabel":"object[]"},"recorded_from":{"type":"string","description":"A browser procedure's: the task its steps were recorded from.","uniqueKey":"plan.recorded_from","typeLabel":"string"}},"uniqueKey":"plan","typeLabel":"object"},"category":{"oneOf":[{"type":"string","description":"The kind of request it's for, from the same set as the test cases' `category`; `null` for none. Not versioned.","uniqueKey":"category.oneOf.0","typeLabel":"string"},{"type":"null","description":"The kind of request it's for, from the same set as the test cases' `category`; `null` for none. Not versioned.","uniqueKey":"category.oneOf.1","typeLabel":"null"}],"uniqueKey":"category","typeLabel":"string | null"},"written_by":{"type":"string","enum":["person","agent"],"uniqueKey":"written_by","typeLabel":"enum\u003cstring>"},"source_task_id":{"oneOf":[{"type":"string","description":"For one the agent wrote: the task it learned from.","uniqueKey":"source_task_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"For one the agent wrote: the task it learned from.","uniqueKey":"source_task_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"source_task_id","typeLabel":"string | null"},"revision":{"type":"integer","uniqueKey":"revision","typeLabel":"integer"},"uses_30d":{"type":"integer","uniqueKey":"uses_30d","typeLabel":"integer"},"last_used_at":{"oneOf":[{"type":"string","format":"date-time","uniqueKey":"last_used_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","uniqueKey":"last_used_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"last_used_at","typeLabel":"string\u003cdate-time> | null"},"avg_run_cents_30d":{"oneOf":[{"type":"number","description":"What a run that used it cost on average in the last 30 days, in cents at list price (to a tenth of a cent): a conversation, or a task on its own, priced by its tasks and chat replies that got it. Finished runs only; null when there are none.","uniqueKey":"avg_run_cents_30d.oneOf.0","typeLabel":"number"},{"type":"null","description":"What a run that used it cost on average in the last 30 days, in cents at list price (to a tenth of a cent): a conversation, or a task on its own, priced by its tasks and chat replies that got it. Finished runs only; null when there are none.","uniqueKey":"avg_run_cents_30d.oneOf.1","typeLabel":"null"}],"uniqueKey":"avg_run_cents_30d","typeLabel":"number | null"},"created_at":{"type":"string","format":"date-time","uniqueKey":"created_at","typeLabel":"string\u003cdate-time>"},"updated_at":{"type":"string","format":"date-time","uniqueKey":"updated_at","typeLabel":"string\u003cdate-time>"},"evals":{"type":"object","description":"Its evals: the test cases tied to it (`procedure_id`), and its latest run of them (cold runs left out).","properties":{"test_cases":{"type":"integer","example":4,"isRequired":true,"uniqueKey":"evals.test_cases","typeLabel":"integer"},"last_run":{"oneOf":[{"type":"null","isRequired":true,"uniqueKey":"evals.last_run.oneOf.0","typeLabel":"null"},{"type":"object","properties":{"test_run_id":{"type":"string","uniqueKey":"evals.last_run.oneOf.1.test_run_id","typeLabel":"string"},"at":{"type":"string","format":"date-time","uniqueKey":"evals.last_run.oneOf.1.at","typeLabel":"string\u003cdate-time>"},"tries":{"type":"integer","uniqueKey":"evals.last_run.oneOf.1.tries","typeLabel":"integer"},"passed":{"type":"integer","uniqueKey":"evals.last_run.oneOf.1.passed","typeLabel":"integer"},"pass_rate":{"oneOf":[{"type":"number","uniqueKey":"evals.last_run.oneOf.1.pass_rate.oneOf.0","typeLabel":"number"},{"type":"null","uniqueKey":"evals.last_run.oneOf.1.pass_rate.oneOf.1","typeLabel":"null"}],"uniqueKey":"evals.last_run.oneOf.1.pass_rate","typeLabel":"number | null"},"found":{"type":"integer","description":"Tries whose agent found this procedure.","uniqueKey":"evals.last_run.oneOf.1.found","typeLabel":"integer"},"revision":{"oneOf":[{"type":"integer","description":"The revision they found (null: none did).","uniqueKey":"evals.last_run.oneOf.1.revision.oneOf.0","typeLabel":"integer"},{"type":"null","description":"The revision they found (null: none did).","uniqueKey":"evals.last_run.oneOf.1.revision.oneOf.1","typeLabel":"null"}],"uniqueKey":"evals.last_run.oneOf.1.revision","typeLabel":"integer | null"},"current":{"oneOf":[{"type":"boolean","description":"That revision is the procedure's current one (null: no try found it).","uniqueKey":"evals.last_run.oneOf.1.current.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"That revision is the procedure's current one (null: no try found it).","uniqueKey":"evals.last_run.oneOf.1.current.oneOf.1","typeLabel":"null"}],"uniqueKey":"evals.last_run.oneOf.1.current","typeLabel":"boolean | null"}},"isRequired":true,"uniqueKey":"evals.last_run.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"evals.last_run","typeLabel":"null | object"}},"required":["test_cases","last_run"],"uniqueKey":"evals","typeLabel":"object"},"references":{"type":"array","items":{"type":"object","description":"A link in its text, with what it points at now: a tool (`name`) or a procedure (`title`). `missing`: the agent no longer has it.","properties":{"type":{"type":"string","enum":["tool","procedure"],"uniqueKey":"references.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"id":{"type":"string","uniqueKey":"references.items.[INDEX].id","typeLabel":"string"},"name":{"oneOf":[{"type":"string","uniqueKey":"references.items.[INDEX].name.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"references.items.[INDEX].name.oneOf.1","typeLabel":"null"}],"uniqueKey":"references.items.[INDEX].name","typeLabel":"string | null"},"title":{"oneOf":[{"type":"string","uniqueKey":"references.items.[INDEX].title.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"references.items.[INDEX].title.oneOf.1","typeLabel":"null"}],"uniqueKey":"references.items.[INDEX].title","typeLabel":"string | null"},"missing":{"type":"boolean","uniqueKey":"references.items.[INDEX].missing","typeLabel":"boolean"}},"uniqueKey":"references.items.[INDEX]","typeLabel":"object"},"description":"Left out of lists.","uniqueKey":"references","typeLabel":"object[]"},"file_access":{"type":"string","enum":["read_only","read_write"],"description":"Whether the agent may create, change and delete its own files (write_file, edit_file, delete_file, and with Run code save_sandbox_file, which keeps a file its code made) while a conversation follows this procedure: the one it last read, found or ran on its steps, or a schedule's. `read_only` (the default) keeps them read-only, as everywhere else. Checked on every change, so turning it off holds at once. A test chat's or an eval's changes go to that conversation's own copy, never the real files. Every change keeps the version it replaced (`GET /v1/agents/{agent_id}/file_revisions`). Changing it doesn't make a new revision.","uniqueKey":"file_access","typeLabel":"enum\u003cstring>"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"object":"procedure","id":"prc_…","agent_id":"\u003cstring>","title":"\u003cstring>","use_when":"\u003cstring>","inputs":[{"name":"\u003cstring>","type":"text","description":"\u003cstring>","required":true,"options":["\u003cstring>"],"example":"\u003cstring>"}],"goal":"\u003cstring>","context":"\u003cstring>","instructions":"\u003cstring>","steps":[{"id":"\u003cstring>","text":"\u003cstring>","subprocedure":{"id":"\u003cstring>","title":"\u003cstring>","missing":true}}],"checks":"\u003cstring>","body":"\u003cstring>","status":"active","kind":"browser","tools":["\u003cstring>"],"approval":{"required":true,"by":"anyone","who":"","covers":[],"note":""},"model":"claude-haiku-5-5","plan_mode":"off","plan":{"mode":"off","status":"off","revision":123,"compiled_at":"2023-11-07T05:31:56Z","error":"\u003cstring>","steps_count":123,"vars":[{"name":"\u003cstring>","description":"\u003cstring>","list":true}],"steps":[{"id":"\u003cstring>","kind":"ask","text":"\u003cstring>","inputs":["\u003cstring>"],"tool":"\u003cstring>","args":[{"name":"\u003cstring>","value":"\u003cstring>"}],"options":[{"when":"\u003cstring>","next":"\u003cstring>"}],"procedure":"\u003cstring>","next":"\u003cstring>","type":"open","url":"\u003cstring>","page":"\u003cstring>","keys":["\u003cstring>"],"target":{"role":"\u003cstring>","label":"\u003cstring>"},"focus":{"role":"\u003cstring>","label":"\u003cstring>"}}],"recorded_from":"\u003cstring>"},"category":"\u003cstring>","written_by":"person","source_task_id":"\u003cstring>","revision":123,"uses_30d":123,"last_used_at":"2023-11-07T05:31:56Z","avg_run_cents_30d":123,"created_at":"2023-11-07T05:31:56Z","updated_at":"2023-11-07T05:31:56Z","evals":{"test_cases":4,"last_run":{"test_run_id":"\u003cstring>","at":"2023-11-07T05:31:56Z","tries":123,"passed":123,"pass_rate":123,"found":123,"revision":123,"current":true}},"references":[{"type":"tool","id":"\u003cstring>","name":"\u003cstring>","title":"\u003cstring>","missing":true}],"file_access":"read_only"}}},"exampleType":"generated"}},"exampleType":"generated"},"8fc2a885-dda5-4c40-9572-f950cc9bffe6":{"description":"Invalid request.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["type","message"],"properties":{"type":{"type":"string","enum":["invalid_request","authentication","payment_required","permission","not_found","conflict","rate_limit","server_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"code":{"type":"string","description":"Why it was refused, when there’s more to say than the status. Starting a task or a chat reply: `insufficient_balance`, `auto_topup_limit_reached` or `card_needs_attention` (402: the balance is empty and auto top-up can’t add funds; add funds, raise the auto top-up limit, or update the card), `concurrency_limit` (429), `model_unavailable` (503: the agent’s `model` can’t run on this server; choose another). Deciding a conversation’s request: `already_decided` (409: someone decided or answered it first; see `decided_by`) or `not_pending` (409: its task has ended, so nothing would act on it). POST /v1/tasks/{task_id}/respond: `decide_in_conversation` (409: decide it in the task’s conversation; see `conversation_id`, `agent_id`, and `approval_id` or `question_id`). Deleting a start state that test cases use: `in_use` (409, with `test_case_ids`).","uniqueKey":"error.code","typeLabel":"string"},"test_case_ids":{"type":"array","items":{"type":"string","uniqueKey":"error.test_case_ids.items.[INDEX]","typeLabel":"string"},"description":"With `in_use`: the test cases that use the start state.","uniqueKey":"error.test_case_ids","typeLabel":"string[]"},"decided_by":{"type":"object","description":"With `already_decided`: who decided first.","required":["type"],"properties":{"type":{"type":"string","enum":["person","team","auto","refused","timeout","operator","moved_on"],"description":"`person`: the person in the chat (in the Eager app, or a visitor to your website’s widget), when the agent lets them (`customer_approvals`, `customer_answers`) and the request isn’t for your team only. `team`: a member in the console (`email`) or an API key (`key_id`). `auto`: the agent’s guardrails approve without asking (`mode: auto`). `refused`: its guardrails refuse (`mode: unattended`). `timeout`: nobody decided within its `approval_timeout_minutes`. `operator`: an eval case’s operator. `moved_on`: the person sent a new message instead, so it was declined.","isRequired":true,"uniqueKey":"error.decided_by.type","typeLabel":"enum\u003cstring>"},"email":{"type":"string","description":"`team`: the member who decided.","uniqueKey":"error.decided_by.email","typeLabel":"string"},"key_id":{"type":"string","description":"`team`: the API key that decided.","uniqueKey":"error.decided_by.key_id","typeLabel":"string"}},"uniqueKey":"error.decided_by","typeLabel":"object"},"conversation_id":{"type":"string","description":"With `decide_in_conversation`: the conversation to decide it in (POST /v1/conversations/{conversation_id}/decisions).","uniqueKey":"error.conversation_id","typeLabel":"string"},"agent_id":{"oneOf":[{"type":"string","description":"With `decide_in_conversation`: the task’s agent (null for a task run without one).","uniqueKey":"error.agent_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"With `decide_in_conversation`: the task’s agent (null for a task run without one).","uniqueKey":"error.agent_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.agent_id","typeLabel":"string | null"},"approval_id":{"type":"string","description":"With `decide_in_conversation`: the approval to decide.","uniqueKey":"error.approval_id","typeLabel":"string"},"question_id":{"type":"string","description":"With `decide_in_conversation`: the question to answer.","uniqueKey":"error.question_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"invalid_request","message":"\u003cstring>","code":"\u003cstring>","test_case_ids":["\u003cstring>"],"decided_by":{"type":"person","email":"\u003cstring>","key_id":"\u003cstring>"},"conversation_id":"\u003cstring>","agent_id":"\u003cstring>","approval_id":"\u003cstring>","question_id":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"09ef8637-f758-4b0c-88ca-6dcb467ad1ac":{"description":"Not found.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["type","message"],"properties":{"type":{"type":"string","enum":["invalid_request","authentication","payment_required","permission","not_found","conflict","rate_limit","server_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"code":{"type":"string","description":"Why it was refused, when there’s more to say than the status. Starting a task or a chat reply: `insufficient_balance`, `auto_topup_limit_reached` or `card_needs_attention` (402: the balance is empty and auto top-up can’t add funds; add funds, raise the auto top-up limit, or update the card), `concurrency_limit` (429), `model_unavailable` (503: the agent’s `model` can’t run on this server; choose another). Deciding a conversation’s request: `already_decided` (409: someone decided or answered it first; see `decided_by`) or `not_pending` (409: its task has ended, so nothing would act on it). POST /v1/tasks/{task_id}/respond: `decide_in_conversation` (409: decide it in the task’s conversation; see `conversation_id`, `agent_id`, and `approval_id` or `question_id`). Deleting a start state that test cases use: `in_use` (409, with `test_case_ids`).","uniqueKey":"error.code","typeLabel":"string"},"test_case_ids":{"type":"array","items":{"type":"string","uniqueKey":"error.test_case_ids.items.[INDEX]","typeLabel":"string"},"description":"With `in_use`: the test cases that use the start state.","uniqueKey":"error.test_case_ids","typeLabel":"string[]"},"decided_by":{"type":"object","description":"With `already_decided`: who decided first.","required":["type"],"properties":{"type":{"type":"string","enum":["person","team","auto","refused","timeout","operator","moved_on"],"description":"`person`: the person in the chat (in the Eager app, or a visitor to your website’s widget), when the agent lets them (`customer_approvals`, `customer_answers`) and the request isn’t for your team only. `team`: a member in the console (`email`) or an API key (`key_id`). `auto`: the agent’s guardrails approve without asking (`mode: auto`). `refused`: its guardrails refuse (`mode: unattended`). `timeout`: nobody decided within its `approval_timeout_minutes`. `operator`: an eval case’s operator. `moved_on`: the person sent a new message instead, so it was declined.","isRequired":true,"uniqueKey":"error.decided_by.type","typeLabel":"enum\u003cstring>"},"email":{"type":"string","description":"`team`: the member who decided.","uniqueKey":"error.decided_by.email","typeLabel":"string"},"key_id":{"type":"string","description":"`team`: the API key that decided.","uniqueKey":"error.decided_by.key_id","typeLabel":"string"}},"uniqueKey":"error.decided_by","typeLabel":"object"},"conversation_id":{"type":"string","description":"With `decide_in_conversation`: the conversation to decide it in (POST /v1/conversations/{conversation_id}/decisions).","uniqueKey":"error.conversation_id","typeLabel":"string"},"agent_id":{"oneOf":[{"type":"string","description":"With `decide_in_conversation`: the task’s agent (null for a task run without one).","uniqueKey":"error.agent_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"With `decide_in_conversation`: the task’s agent (null for a task run without one).","uniqueKey":"error.agent_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.agent_id","typeLabel":"string | null"},"approval_id":{"type":"string","description":"With `decide_in_conversation`: the approval to decide.","uniqueKey":"error.approval_id","typeLabel":"string"},"question_id":{"type":"string","description":"With `decide_in_conversation`: the question to answer.","uniqueKey":"error.question_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"invalid_request","message":"\u003cstring>","code":"\u003cstring>","test_case_ids":["\u003cstring>"],"decided_by":{"type":"person","email":"\u003cstring>","key_id":"\u003cstring>"},"conversation_id":"\u003cstring>","agent_id":"\u003cstring>","approval_id":"\u003cstring>","question_id":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"19caf6ec-6aee-430b-b1b4-3f12500d5525":{"bearerAuth":{"type":"http","scheme":"bearer","description":"An org API key (`gh_live_…`) from Settings → API keys in the console.","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"85e29cb7-6717-4fc8-a547-7f631658d89f":{"url":"https://guidinghand.ai","description":"Production"},"9a2e9bd4-a985-4b06-b2e6-6058cff49185":{"url":"https://dev.guidinghand.ai","description":"Development (Stripe test mode)"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"An org API key (`gh_live_…`) from Settings → API keys in the console.","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"An org API key (`gh_live_…`) from Settings → API keys in the console.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"api-reference/openapi.json"},"subdomain":"guiding-hand","siteName":"Eager","title":"Add a procedure - Eager","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-24T22:26:44.780Z","originalFileLocation":"api-reference/procedures/add-a-procedure.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=\"application-name\" content=\"Eager\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/guiding-hand/d699KjTsEa_7cIfs/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/guiding-hand/d699KjTsEa_7cIfs/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/guiding-hand/d699KjTsEa_7cIfs/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/guiding-hand/d699KjTsEa_7cIfs/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/guiding-hand/d699KjTsEa_7cIfs/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/guiding-hand/d699KjTsEa_7cIfs/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/guiding-hand/d699KjTsEa_7cIfs/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/guiding-hand/d699KjTsEa_7cIfs/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/guiding-hand/d699KjTsEa_7cIfs/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Add a procedure - Eager\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Eager\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.guidinghand.ai/api-reference/procedures/add-a-procedure\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://guiding-hand.mintlify.app/_mintlify/api/og/v2?division=Procedures\u0026amp;title=Add+a+procedure\u0026amp;theme=7594b6f93cdebe57af53f99d\u0026amp;signature=d2bfb9c9c0bf32b60acaec9622fefb9cb7960cfe2524b899ab78f2070c614d65\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Add a procedure - Eager\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://guiding-hand.mintlify.app/_mintlify/api/og/v2?division=Procedures\u0026amp;title=Add+a+procedure\u0026amp;theme=7594b6f93cdebe57af53f99d\u0026amp;signature=d2bfb9c9c0bf32b60acaec9622fefb9cb7960cfe2524b899ab78f2070c614d65\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/guiding-hand/d699KjTsEa_7cIfs/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Eager\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#183B2B\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.guidinghand.ai/api-reference/procedures/add-a-procedure\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/procedures/add-a-procedure.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.guidinghand.ai/#organization\",\"name\":\"Eager\",\"url\":\"https://docs.guidinghand.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/guiding-hand/lgKNkM-YLkSemq1m/logo/light.svg?fit=max\u0026auto=format\u0026n=lgKNkM-YLkSemq1m\u0026q=85\u0026s=e586dcc65be9b0c262b28f3c88841ebd\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.guidinghand.ai#website\",\"name\":\"Eager\",\"url\":\"https://docs.guidinghand.ai\",\"publisher\":{\"@id\":\"https://docs.guidinghand.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.guidinghand.ai/api-reference/procedures/add-a-procedure#webpage\",\"url\":\"https://docs.guidinghand.ai/api-reference/procedures/add-a-procedure\",\"name\":\"Add a procedure\",\"dateModified\":\"2026-10-24T22:26:44.780Z\",\"isPartOf\":{\"@id\":\"https://docs.guidinghand.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.guidinghand.ai/api-reference/procedures/add-a-procedure#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.guidinghand.ai/api-reference/procedures/add-a-procedure#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"API reference\",\"item\":\"https://docs.guidinghand.ai/api-reference/introduction\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Procedures\",\"item\":\"https://docs.guidinghand.ai/api-reference/procedures/list-an-agent%E2%80%99s-procedures\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Add a procedure\",\"item\":\"https://docs.guidinghand.ai/api-reference/procedures/add-a-procedure\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.guidinghand.ai/api-reference/procedures/add-a-procedure#apireference\",\"headline\":\"Add a procedure\",\"name\":\"Add a procedure\",\"url\":\"https://docs.guidinghand.ai/api-reference/procedures/add-a-procedure\",\"mainEntityOfPage\":{\"@id\":\"https://docs.guidinghand.ai/api-reference/procedures/add-a-procedure#webpage\"},\"dateModified\":\"2026-10-24T22:26:44.780Z\",\"publisher\":{\"@id\":\"https://docs.guidinghand.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.guidinghand.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Eager\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Eager","nav":{"global":null,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":""}]},{"tab":"API reference","groups":[{"group":"API reference","pages":[{"title":"API reference","sidebarTitle":"Introduction","href":"/api-reference/introduction"},{"group":"Agents","pages":[{"title":"List agents","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/agents","href":"/api-reference/agents/list-agents"},{"title":"Create an agent","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/agents","href":"/api-reference/agents/create-an-agent"},{"title":"Get an agent","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/agents/{agent_id}","href":"/api-reference/agents/get-an-agent"},{"title":"Delete an agent","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/agents/{agent_id}","href":"/api-reference/agents/delete-an-agent"},{"title":"Update and publish an agent","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/agents/{agent_id}","href":"/api-reference/agents/update-and-publish-an-agent"},{"title":"Get the draft","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/agents/{agent_id}/draft","href":"/api-reference/agents/get-the-draft"},{"title":"Discard the draft","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/agents/{agent_id}/draft","href":"/api-reference/agents/discard-the-draft"},{"title":"Save a draft","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/agents/{agent_id}/draft","href":"/api-reference/agents/save-a-draft"},{"title":"Publish the draft","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/agents/{agent_id}/publish","href":"/api-reference/agents/publish-the-draft"},{"title":"Duplicate an agent","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/agents/{agent_id}/duplicate","href":"/api-reference/agents/duplicate-an-agent"},{"title":"Get the website widget","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/agents/{agent_id}/widget","href":"/api-reference/agents/get-the-website-widget"},{"title":"Change the website widget","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/agents/{agent_id}/widget","href":"/api-reference/agents/change-the-website-widget"},{"title":"List versions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/agents/{agent_id}/versions","href":"/api-reference/agents/list-versions"},{"title":"Get a version","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/agents/{agent_id}/versions/{version}","href":"/api-reference/agents/get-a-version"},{"title":"Restore a version","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/agents/{agent_id}/versions/{version}/restore","href":"/api-reference/agents/restore-a-version"}]},{"group":"Agent files","pages":[{"title":"List an agent’s files","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/agents/{agent_id}/files","href":"/api-reference/agent-files/list-an-agent’s-files"},{"title":"Get a file","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/agents/{agent_id}/files/{path}","href":"/api-reference/agent-files/get-a-file"},{"title":"Write a file","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /v1/agents/{agent_id}/files/{path}","href":"/api-reference/agent-files/write-a-file"},{"title":"Delete a file","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/agents/{agent_id}/files/{path}","href":"/api-reference/agent-files/delete-a-file"},{"title":"List a file's earlier versions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/agents/{agent_id}/file_revisions","href":"/api-reference/agent-files/list-a-files-earlier-versions"},{"title":"Get an earlier version","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/agents/{agent_id}/file_revisions/{revision_id}","href":"/api-reference/agent-files/get-an-earlier-version"},{"title":"Restore an earlier version","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/agents/{agent_id}/file_revisions/{revision_id}/restore","href":"/api-reference/agent-files/restore-an-earlier-version"}]},{"group":"Sessions","pages":[{"title":"List sessions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/sessions","href":"/api-reference/sessions/list-sessions"},{"title":"Create a session","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/sessions","href":"/api-reference/sessions/create-a-session"},{"title":"Get a session","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/sessions/{session_id}","href":"/api-reference/sessions/get-a-session"},{"title":"Delete a session","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/sessions/{session_id}","href":"/api-reference/sessions/delete-a-session"},{"title":"Disconnect a session’s computer","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/sessions/{session_id}/disconnect","href":"/api-reference/sessions/disconnect-a-session’s-computer"},{"title":"Expire a session","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/sessions/{session_id}/expire","href":"/api-reference/sessions/expire-a-session"},{"title":"Open a cloud browser","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/sessions/{session_id}/open","href":"/api-reference/sessions/open-a-cloud-browser"},{"title":"Control a cloud browser","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/sessions/{session_id}/input","href":"/api-reference/sessions/control-a-cloud-browser"}]},{"group":"Tasks","pages":[{"title":"Start a task","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/sessions/{session_id}/tasks","href":"/api-reference/tasks/start-a-task"},{"title":"List tasks","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/tasks","href":"/api-reference/tasks/list-tasks"},{"title":"Get a task","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/tasks/{task_id}","href":"/api-reference/tasks/get-a-task"},{"title":"Follow a task","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/tasks/{task_id}/events","href":"/api-reference/tasks/follow-a-task"},{"title":"Answer a question or approval (moved to the conversation)","deprecated":true,"version":null,"openapi":"/api-reference/openapi.json post /v1/tasks/{task_id}/respond","href":"/api-reference/tasks/answer-a-question-or-approval-moved-to-the-conversation"},{"title":"Stop a task","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/tasks/{task_id}/stop","href":"/api-reference/tasks/stop-a-task"},{"title":"Get a task recording","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/tasks/{task_id}/recording","href":"/api-reference/tasks/get-a-task-recording"},{"title":"Get a recorded screen","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/tasks/{task_id}/recording/{seq}","href":"/api-reference/tasks/get-a-recorded-screen"}]},{"group":"Webhooks","pages":[{"title":"Get the webhook endpoint","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/webhook","href":"/api-reference/webhooks/get-the-webhook-endpoint"},{"title":"Set the webhook endpoint","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /v1/webhook","href":"/api-reference/webhooks/set-the-webhook-endpoint"}]},{"group":"Test cases","pages":[{"title":"List test cases","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/test_cases","href":"/api-reference/test-cases/list-test-cases"},{"title":"Create a test case","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/test_cases","href":"/api-reference/test-cases/create-a-test-case"},{"title":"Create or update test cases","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/test_cases/batch","href":"/api-reference/test-cases/create-or-update-test-cases"},{"title":"Get a test case","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/test_cases/{test_case_id}","href":"/api-reference/test-cases/get-a-test-case"},{"title":"Delete a test case","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/test_cases/{test_case_id}","href":"/api-reference/test-cases/delete-a-test-case"},{"title":"Update a test case","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/test_cases/{test_case_id}","href":"/api-reference/test-cases/update-a-test-case"}]},{"group":"Test sets","pages":[{"title":"List test sets","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/test_sets","href":"/api-reference/test-sets/list-test-sets"},{"title":"Create a test set","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/test_sets","href":"/api-reference/test-sets/create-a-test-set"},{"title":"Get a test set","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/test_sets/{test_set_id}","href":"/api-reference/test-sets/get-a-test-set"},{"title":"Delete a test set","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/test_sets/{test_set_id}","href":"/api-reference/test-sets/delete-a-test-set"},{"title":"Update a test set","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/test_sets/{test_set_id}","href":"/api-reference/test-sets/update-a-test-set"},{"title":"Add cases to a test set","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/test_sets/{test_set_id}/cases","href":"/api-reference/test-sets/add-cases-to-a-test-set"},{"title":"Remove a case from a test set","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/test_sets/{test_set_id}/cases/{test_case_id}","href":"/api-reference/test-sets/remove-a-case-from-a-test-set"}]},{"group":"Test runs","pages":[{"title":"List test runs","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/test_runs","href":"/api-reference/test-runs/list-test-runs"},{"title":"Start a test run","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/test_runs","href":"/api-reference/test-runs/start-a-test-run"},{"title":"Compare test runs","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/test_runs/compare","href":"/api-reference/test-runs/compare-test-runs"},{"title":"Get a test run","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/test_runs/{test_run_id}","href":"/api-reference/test-runs/get-a-test-run"},{"title":"Delete a test run","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/test_runs/{test_run_id}","href":"/api-reference/test-runs/delete-a-test-run"},{"title":"Cancel a test run","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/test_runs/{test_run_id}/cancel","href":"/api-reference/test-runs/cancel-a-test-run"},{"title":"Rerun a test run","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/test_runs/{test_run_id}/rerun","href":"/api-reference/test-runs/rerun-a-test-run"},{"title":"Get a test run's agent","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/test_runs/{test_run_id}/agents/{agent_id}","href":"/api-reference/test-runs/get-a-test-runs-agent"},{"title":"Get test run results","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/test_runs/{test_run_id}/results","href":"/api-reference/test-runs/get-test-run-results"},{"title":"List test run attempts","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/test_runs/{test_run_id}/attempts","href":"/api-reference/test-runs/list-test-run-attempts"},{"title":"Get an attempt","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/attempts/{attempt_id}","href":"/api-reference/test-runs/get-an-attempt"}]},{"group":"Start states","pages":[{"title":"List start states","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/start_states","href":"/api-reference/start-states/list-start-states"},{"title":"Create a start state","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/start_states","href":"/api-reference/start-states/create-a-start-state"},{"title":"Get a start state","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/start_states/{start_state_id}","href":"/api-reference/start-states/get-a-start-state"},{"title":"Delete a start state","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/start_states/{start_state_id}","href":"/api-reference/start-states/delete-a-start-state"},{"title":"Update a start state","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/start_states/{start_state_id}","href":"/api-reference/start-states/update-a-start-state"},{"title":"Open a start state","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/start_states/{start_state_id}/open","href":"/api-reference/start-states/open-a-start-state"},{"title":"Save a start state","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/start_states/{start_state_id}/save","href":"/api-reference/start-states/save-a-start-state"},{"title":"Close a start state","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/start_states/{start_state_id}/close","href":"/api-reference/start-states/close-a-start-state"},{"title":"Screenshot an open start state","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/start_states/{start_state_id}/screen","href":"/api-reference/start-states/screenshot-an-open-start-state"},{"title":"Send input to an open start state","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/start_states/{start_state_id}/input","href":"/api-reference/start-states/send-input-to-an-open-start-state"}]},{"group":"Runners","pages":[{"title":"List runners","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/runners","href":"/api-reference/runners/list-runners"},{"title":"Create a runner","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/runners","href":"/api-reference/runners/create-a-runner"},{"title":"Delete a runner","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/runners/{runner_id}","href":"/api-reference/runners/delete-a-runner"}]},{"group":"Agent tools","pages":[{"title":"Get the tool signing secret","deprecated":true,"version":null,"openapi":"/api-reference/openapi.json get /v1/tool_secret","href":"/api-reference/agent-tools/get-the-tool-signing-secret"},{"title":"Rotate the tool signing secret","deprecated":true,"version":null,"openapi":"/api-reference/openapi.json post /v1/tool_secret/rotate","href":"/api-reference/agent-tools/rotate-the-tool-signing-secret"},{"title":"Start an OAuth sign-in for an MCP server","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/mcp_oauth/start","href":"/api-reference/agent-tools/start-an-oauth-sign-in-for-an-mcp-server"},{"title":"Get an OAuth sign-in","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/mcp_oauth/{secret_id}","href":"/api-reference/agent-tools/get-an-oauth-sign-in"},{"title":"List the connector library","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/connectors","href":"/api-reference/agent-tools/list-the-connector-library"},{"title":"List connections","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/connections","href":"/api-reference/agent-tools/list-connections"},{"title":"Create a connection with headers","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/connections","href":"/api-reference/agent-tools/create-a-connection-with-headers"},{"title":"Get a connection","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/connections/{connection_id}","href":"/api-reference/agent-tools/get-a-connection"},{"title":"Disconnect a connection","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/connections/{connection_id}","href":"/api-reference/agent-tools/disconnect-a-connection"},{"title":"Rename a connection","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/connections/{connection_id}","href":"/api-reference/agent-tools/rename-a-connection"},{"title":"Get the chat apps","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/chat_apps","href":"/api-reference/agent-tools/get-the-chat-apps"},{"title":"Make a link code","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/chat_apps/link_code","href":"/api-reference/agent-tools/make-a-link-code"},{"title":"Download the Teams app","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/chat_apps/teams/package","href":"/api-reference/agent-tools/download-the-teams-app"},{"title":"Start adding Eager to Slack","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/chat_apps/slack/install","href":"/api-reference/agent-tools/start-adding-eager-to-slack"},{"title":"Unlink a chat app workspace","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/chat_apps/workspaces/{workspace_id}","href":"/api-reference/agent-tools/unlink-a-chat-app-workspace"},{"title":"Update a chat app workspace","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/chat_apps/workspaces/{workspace_id}","href":"/api-reference/agent-tools/update-a-chat-app-workspace"}]},{"group":"Audit log","pages":[{"title":"List audit events","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/audit_events","href":"/api-reference/audit-log/list-audit-events"}]},{"group":"Responses","pages":[{"title":"Send a message to an agent","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/agents/{agent_id}/responses","href":"/api-reference/responses/send-a-message-to-an-agent"},{"title":"Get a response","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/responses/{response_id}","href":"/api-reference/responses/get-a-response"},{"title":"Cancel a response","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/responses/{response_id}/cancel","href":"/api-reference/responses/cancel-a-response"}]},{"group":"Conversations","pages":[{"title":"List conversations","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/conversations","href":"/api-reference/conversations/list-conversations"},{"title":"Get a conversation","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/conversations/{conversation_id}","href":"/api-reference/conversations/get-a-conversation"},{"title":"List a conversation’s items","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/conversations/{conversation_id}/items","href":"/api-reference/conversations/list-a-conversation’s-items"},{"title":"Decide a request","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/conversations/{conversation_id}/decisions","href":"/api-reference/conversations/decide-a-request"}]},{"group":"Procedures","pages":[{"title":"List an agent’s procedures","description":"Newest change first. Archived procedures are left out unless you ask for them with `status=archived`.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/agents/{agent_id}/procedures","href":"/api-reference/procedures/list-an-agent’s-procedures"},{"title":"Add a procedure","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/agents/{agent_id}/procedures","href":"/api-reference/procedures/add-a-procedure"},{"title":"Get a procedure","description":null,"deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/agents/{agent_id}/procedures/{procedure_id}","href":"/api-reference/procedures/get-a-procedure"},{"title":"Delete a procedure","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/agents/{agent_id}/procedures/{procedure_id}","href":"/api-reference/procedures/delete-a-procedure"},{"title":"Change a procedure","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/agents/{agent_id}/procedures/{procedure_id}","href":"/api-reference/procedures/change-a-procedure"},{"title":"A procedure’s revisions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/agents/{agent_id}/procedures/{procedure_id}/revisions","href":"/api-reference/procedures/a-procedure’s-revisions"},{"title":"What a procedure’s runs cost","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/agents/{agent_id}/procedures/{procedure_id}/costs","href":"/api-reference/procedures/what-a-procedure’s-runs-cost"},{"title":"How long a procedure’s runs take","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/agents/{agent_id}/procedures/{procedure_id}/latency","href":"/api-reference/procedures/how-long-a-procedure’s-runs-take"},{"title":"Test a procedure lookup","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/agents/{agent_id}/procedures/match","href":"/api-reference/procedures/test-a-procedure-lookup"},{"title":"Add or change procedures","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/agents/{agent_id}/procedures/batch","href":"/api-reference/procedures/add-or-change-procedures"}]},{"group":"Uploads","pages":[{"title":"Upload a file","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/uploads","href":"/api-reference/uploads/upload-a-file"},{"title":"Get an upload","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/uploads/{upload_id}","href":"/api-reference/uploads/get-an-upload"},{"title":"Delete an upload","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/uploads/{upload_id}","href":"/api-reference/uploads/delete-an-upload"},{"title":"Download an upload","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/uploads/{upload_id}/content","href":"/api-reference/uploads/download-an-upload"}]},{"group":"Computers","pages":[{"title":"List computers","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/computers","href":"/api-reference/computers/list-computers"},{"title":"Link a computer","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/computers","href":"/api-reference/computers/link-a-computer"},{"title":"Get a computer","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/computers/{computer_id}","href":"/api-reference/computers/get-a-computer"},{"title":"Unlink a computer","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/computers/{computer_id}","href":"/api-reference/computers/unlink-a-computer"},{"title":"Rename a computer","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/computers/{computer_id}","href":"/api-reference/computers/rename-a-computer"},{"title":"List pools","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/computer_pools","href":"/api-reference/computers/list-pools"},{"title":"Create a pool","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/computer_pools","href":"/api-reference/computers/create-a-pool"},{"title":"Get a pool","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/computer_pools/{pool_id}","href":"/api-reference/computers/get-a-pool"},{"title":"Delete a pool","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/computer_pools/{pool_id}","href":"/api-reference/computers/delete-a-pool"},{"title":"Change a pool","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/computer_pools/{pool_id}","href":"/api-reference/computers/change-a-pool"}]},{"group":"Phone numbers","pages":[{"title":"List the agent's phone numbers","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/agents/{agent_id}/phone_numbers","href":"/api-reference/phone-numbers/list-the-agents-phone-numbers"},{"title":"Give the agent a phone number","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/agents/{agent_id}/phone_numbers","href":"/api-reference/phone-numbers/give-the-agent-a-phone-number"},{"title":"Take a phone number off the agent","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/agents/{agent_id}/phone_numbers/{phone_number_id}","href":"/api-reference/phone-numbers/take-a-phone-number-off-the-agent"},{"title":"List numbers on connected accounts","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/phone_numbers/available","href":"/api-reference/phone-numbers/list-numbers-on-connected-accounts"},{"title":"List Twilio connections","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/phone_connections","href":"/api-reference/phone-numbers/list-twilio-connections"},{"title":"Connect a Twilio account","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/phone_connections","href":"/api-reference/phone-numbers/connect-a-twilio-account"},{"title":"Remove a Twilio connection","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/phone_connections/{connection_id}","href":"/api-reference/phone-numbers/remove-a-twilio-connection"},{"title":"List phone numbers","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/phone_numbers","href":"/api-reference/phone-numbers/list-phone-numbers"},{"title":"Add a phone number","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/phone_numbers","href":"/api-reference/phone-numbers/add-a-phone-number"},{"title":"Get a phone number","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/phone_numbers/{phone_number_id}","href":"/api-reference/phone-numbers/get-a-phone-number"},{"title":"Take a phone number off Eager","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/phone_numbers/{phone_number_id}","href":"/api-reference/phone-numbers/take-a-phone-number-off-eager"},{"title":"Pick the agent that answers","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/phone_numbers/{phone_number_id}","href":"/api-reference/phone-numbers/pick-the-agent-that-answers"}]},{"group":"Escalations","pages":[{"title":"List escalations","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/escalations","href":"/api-reference/escalations/list-escalations"},{"title":"Get an escalation","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/escalations/{escalation_id}","href":"/api-reference/escalations/get-an-escalation"},{"title":"Dismiss a failed run, or mark a hand-off handled","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/escalations/{escalation_id}/dismiss","href":"/api-reference/escalations/dismiss-a-failed-run-or-mark-a-hand-off-handled"},{"title":"Accept a proposed change","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/escalations/{escalation_id}/accept","href":"/api-reference/escalations/accept-a-proposed-change"},{"title":"Reject a proposed change","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/escalations/{escalation_id}/reject","href":"/api-reference/escalations/reject-a-proposed-change"}]},{"group":"Agent folders","pages":[{"title":"List agent folders","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/agent_folders","href":"/api-reference/agent-folders/list-agent-folders"},{"title":"Make an agent folder","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/agent_folders","href":"/api-reference/agent-folders/make-an-agent-folder"},{"title":"Get an agent folder","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/agent_folders/{folder_id}","href":"/api-reference/agent-folders/get-an-agent-folder"},{"title":"Delete an agent folder","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/agent_folders/{folder_id}","href":"/api-reference/agent-folders/delete-an-agent-folder"},{"title":"Rename or move an agent folder","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/agent_folders/{folder_id}","href":"/api-reference/agent-folders/rename-or-move-an-agent-folder"}]},{"group":"Categories","pages":[{"title":"List categories","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/categories","href":"/api-reference/categories/list-categories"},{"title":"Add a category","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/categories","href":"/api-reference/categories/add-a-category"},{"title":"Remove a category","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/categories/{name}","href":"/api-reference/categories/remove-a-category"},{"title":"Rename a category","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/categories/{name}","href":"/api-reference/categories/rename-a-category"}]},{"group":"Schedules","pages":[{"title":"List the org’s schedules","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/schedules","href":"/api-reference/schedules/list-the-org’s-schedules"},{"title":"Preview a cron expression","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/schedules/preview","href":"/api-reference/schedules/preview-a-cron-expression"},{"title":"List an agent’s schedules","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/agents/{agent_id}/schedules","href":"/api-reference/schedules/list-an-agent’s-schedules"},{"title":"Add a schedule","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/agents/{agent_id}/schedules","href":"/api-reference/schedules/add-a-schedule"},{"title":"Get a schedule","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/agents/{agent_id}/schedules/{schedule_id}","href":"/api-reference/schedules/get-a-schedule"},{"title":"Delete a schedule","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/agents/{agent_id}/schedules/{schedule_id}","href":"/api-reference/schedules/delete-a-schedule"},{"title":"Change, pause or resume a schedule","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/agents/{agent_id}/schedules/{schedule_id}","href":"/api-reference/schedules/change-pause-or-resume-a-schedule"},{"title":"Run a schedule now","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/agents/{agent_id}/schedules/{schedule_id}/run","href":"/api-reference/schedules/run-a-schedule-now"},{"title":"List a schedule’s runs","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/agents/{agent_id}/schedules/{schedule_id}/runs","href":"/api-reference/schedules/list-a-schedule’s-runs"},{"title":"Get a schedule run","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/agents/{agent_id}/schedules/{schedule_id}/runs/{run_id}","href":"/api-reference/schedules/get-a-schedule-run"}]},{"group":"API Reference","pages":[{"title":"Webhook event","version":null,"deprecated":null,"openapi":"/api-reference/openapi.json webhook event","href":"/api-reference/webhook-event"}]}]}]}]},"title":"Add a procedure - Eager","buildId":"dpl_cadrRc5H9XQiJQbDFN5mcYRs2PAj","deploymentId":"dpl_cadrRc5H9XQiJQbDFN5mcYRs2PAj","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DKJwRUt2.js","utils-CWD_VS3u.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-oFjciODD.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-C76WsxC3.js","snippetPresets-DvPMxpX_.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CuNQfndH.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BVFpVUoF.js","shallow-t59Jg5Kr.js","getApiPlaygroundDisplay-C_JZ4amX.js","CodeSnippet-CLRDnx_h.js","CodeSnippets-C2myU4kc.js","Page-7TwLLapg.js","getPastedJson-B-JaVXw7.js","icon-BA-iDhH3.js","MethodPill-D4qZABFp.js","DuplicateIcon-THIDKO1O.js","createIcon-CYYJwgFd.js","DynamicMarkdown-UGQuxDKp.js","SectionHeading-jYELb23h.js","axios-vUo_bRtp.js","Markdown-DKsLa3wy.js","clsx-CefdjKz2.js","lib--scc4DXi.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-BaREnp3o.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-sgx_0XzF.js"]}