Skip to content

Autonomous Agents

For: Account owners and the developers who connect other systems to the assistantRequires: The Admin role to make changes; any signed-in user of your workspace can view agents and their runs; no feature switchScreenshots show sample data

An autonomous agent is an assistant that no visitor talks to: another system starts it by calling a webhook, for example when an invoice becomes overdue or a payment fails. The agent reads the call’s JSON body through its prompt, does the work with the tools, instructions and settings of a widget you choose, and returns its answer to the caller. The Agents tab of the Autonomous Agents page is where you create these agents, write their prompt, copy the requests that trigger them, and follow their runs. Open it from ConfigureAutonomous Agents. Every signed-in user of your workspace can view it; creating, changing and deleting agents needs the Admin role.

  • See your agents at a glance. One card per agent, with its status and its number of runs. The screen at a glance.
  • Create an agent. Give it a name, a widget whose tools and settings it uses, a response mode and a prompt. Create an agent.
  • Fill the prompt from the webhook body. Paste an example body and insert its fields as {{payload.…}} variables. Write the prompt.
  • Get the webhook details. The webhook panel shows the agent’s address and ready-made requests for every step. Use the webhook panel · Autonomous agents end to end.
  • Follow runs and read their output. The last 20 runs with their status, customer, error and output. Follow the runs.
  • Pause or delete an agent. An inactive agent refuses webhook calls; deleting removes it and its run history. Pause or delete an agent.
The Autonomous Agents page in StrikeUp, subtitle "Trigger an agent from an external system with a webhook.", with the "Agents" tab selected. Three agent cards are shown: "Overdue invoice follow-up" (green "Active", 184 runs), "Weekly usage digest" (Active, 22 runs) and "Failed payment triage" (grey "Disabled", 7 runs). At the right of the panel header, next to the refresh icon, the blue "New" button is highlighted; it opens an empty agent form. Selecting a card opens that agent for editing.The Autonomous Agents page in StrikeUp, subtitle "Trigger an agent from an external system with a webhook.", with the "Agents" tab selected. Three agent cards are shown: "Overdue invoice follow-up" (green "Active", 184 runs), "Weekly usage digest" (Active, 22 runs) and "Failed payment triage" (grey "Disabled", 7 runs). At the right of the panel header, next to the refresh icon, the blue "New" button is highlighted; it opens an empty agent form. Selecting a card opens that agent for editing.
Each card shows an agent's status and run count; New starts a new agent.
What this screenshot shows
Screen
Agents (/admin/configure/autonomous-agents)
Highlighted
button “New”, panel-header-right, enabled. opens the create form
Also visible
Overdue invoice follow-up (Active, 184 runs), Weekly usage digest (Active, 22 runs), Failed payment triage (Disabled, 7 runs)
Purpose
entry point
RegionWhat it showsWhat you do there
HeaderAutonomous Agents and Trigger an agent from an external system with a webhook.—
TabsAgents (selected) and Access tokensSwitch to the per-user tokens
AgentsOne card per agent: name, Active or Disabled, and {{count}} runs; a refresh icon and NewOpen an agent, reload, create one

Without any agent, the list shows No autonomous agents yet.. Selecting a card opens the agent’s editor; Back to agents returns to the cards.

When a webhook call reaches an active agent:

  1. StrikeUp checks the per-user token in the call and fills the agent’s prompt from the call’s JSON body.
  2. It starts a run, attributed to the end-user the token belongs to. The run gets its own chat session, named after the agent with the date and time, and a job with the trigger Webhook that you can follow under AnalyticsAgent jobs.
  3. The agent works through the normal pipeline of its widget: guardrails, planning, the widget’s main toolkit, its skills and instructions, and the widget’s budgets.
  4. In Async (202) mode the caller gets a run ID at once and collects the result later. In Synchronous (200) mode the caller waits for the answer.

The token’s end-user must be a customer in your workspace with a PIN or password. Tokens are created through the API and listed on the Access tokens tab; see Autonomous agents: access tokens.

  1. Open ConfigureAutonomous Agents and select New. An empty form opens.

  2. Enter a Name, such as Overdue invoice follow-up, and choose the Widget whose tools, skills and instructions the agent should use.

  3. Choose the Response mode: Async (202) (the default) or Synchronous (200).

  4. Write the Prompt, as described under Write the prompt.

    The create form for a new autonomous agent, filled in: Name "Trial ending reminder", Widget "Demo Ltd Help Centre widget", Response mode "Async (202)" and a Prompt that uses {{payload.companyName}} and {{payload.trialEndsAt}}. Below the prompt are the sample payload box and the variable buttons. The "Create agent" button at the bottom of the form is highlighted; it saves the agent, after which the Webhook panel and Recent runs appear.The create form for a new autonomous agent, filled in: Name "Trial ending reminder", Widget "Demo Ltd Help Centre widget", Response mode "Async (202)" and a Prompt that uses {{payload.companyName}} and {{payload.trialEndsAt}}. Below the prompt are the sample payload box and the variable buttons. The "Create agent" button at the bottom of the form is highlighted; it saves the agent, after which the Webhook panel and Recent runs appear.
    A new agent needs a name, a widget and a prompt; the webhook details appear once it is created.
    What this screenshot shows
    Screen
    Create agent (/admin/configure/autonomous-agents)
    Highlighted
    button “Create agent”, form-footer, enabled. creates the agent
    Also visible
    Name Trial ending reminder, Widget Demo Ltd Help Centre widget, Async (202)
    Purpose
    creating an agent
  5. Select Create agent. The notice Agent created appears, and the webhook panel and the run list appear under the form.

A new agent is active. If a field is missing, the form shows Name is required., Select a widget. or Prompt is required.. If saving fails for another reason, the server’s message appears above the buttons, or Could not save the agent. Please try again..

Choose a widget with a toolkit. When the chosen widget has no toolkit connected, the form shows a warning. Runs of such an agent fail with “Server ID is required”, so connect a toolkit to the widget, or pick another widget, before you use the agent.

The prompt tells the agent what to do with each call. Values from the call’s JSON body go in as variables with double braces: {{payload.invoiceNumber}} is replaced with the body’s invoiceNumber field when the run starts.

The editor of the autonomous agent "Overdue invoice follow-up", with "Back to agents" and the red "Delete agent" button above it. The form shows Name "Overdue invoice follow-up", Widget "Demo Ltd Support chat", the highlighted "Response mode" select set to "Async (202)", the "Active" switch (on) with "Inactive agents reject webhook calls with 403.", and the Prompt with the variables {{payload.invoiceNumber}}, {{payload.customerName}} and {{payload.daysOverdue}}. Async answers the webhook at once and runs in the background; Synchronous (200) waits for the result.The editor of the autonomous agent "Overdue invoice follow-up", with "Back to agents" and the red "Delete agent" button above it. The form shows Name "Overdue invoice follow-up", Widget "Demo Ltd Support chat", the highlighted "Response mode" select set to "Async (202)", the "Active" switch (on) with "Inactive agents reject webhook calls with 403.", and the Prompt with the variables {{payload.invoiceNumber}}, {{payload.customerName}} and {{payload.daysOverdue}}. Async answers the webhook at once and runs in the background; Synchronous (200) waits for the result.
An agent combines a widget's tools and settings, a response mode and a prompt filled from the webhook body.
What this screenshot shows
Screen
Agents (/admin/configure/autonomous-agents)
Highlighted
combobox “”, form-top-right, Async (202). chooses whether the webhook waits for the answer
Also visible
Name, Widget Demo Ltd Support chat, Active on; Prompt with {{payload.*}} variables
Purpose
editing an agent
  1. Paste an example of the webhook body into Sample payload JSON. If it is not valid JSON, the editor shows That isn't valid JSON — check for a missing quote, comma, or bracket.

  2. Under Fields from your sample payload, select a field. Its variable is inserted into the prompt where the cursor is.

    The prompt editor of the agent "Overdue invoice follow-up". Under "Sample payload JSON" an example webhook body is pasted with invoiceNumber "INV-2026-0412", customerName "Example Studios", daysOverdue 14 and an amount object. Below "Fields from your sample payload" its fields appear as buttons, from {{payload.invoiceNumber}} to {{payload.amount.currency}}; the button for the field payload.amount.value is highlighted. Selecting a field inserts it into the prompt at the cursor. A path box with "Insert variable" adds any other path.The prompt editor of the agent "Overdue invoice follow-up". Under "Sample payload JSON" an example webhook body is pasted with invoiceNumber "INV-2026-0412", customerName "Example Studios", daysOverdue 14 and an amount object. Below "Fields from your sample payload" its fields appear as buttons, from {{payload.invoiceNumber}} to {{payload.amount.currency}}; the button for the field payload.amount.value is highlighted. Selecting a field inserts it into the prompt at the cursor. A path box with "Insert variable" adds any other path.
    Paste an example webhook body and its fields become buttons that insert {{payload…}} variables into the prompt.
    What this screenshot shows
    Screen
    Agents (/admin/configure/autonomous-agents)
    Highlighted
    button “”, prompt-editor, enabled. inserts the variable into the prompt
    Also visible
    Sample payload JSON filled; field buttons for invoiceNumber, customerName, daysOverdue, amount.value, amount.currency
    Purpose
    building the prompt from webhook data
  3. For a field that is not in your example, type its path in the path box, such as payload.customer.email, and select Insert variable.

In the promptBodyReplaced with
{{payload.invoiceNumber}}{"invoiceNumber": "INV-2026-0412"}INV-2026-0412
{{payload.amount.value}}{"amount": {"value": 1290}}1290
{{payload.items[0].sku}}{"items": [{"sku": "ABC-1"}]}ABC-1
{{payload.dueDate}}{"invoiceNumber": "INV-2026-0412"} (no dueDate)Nothing: the variable becomes empty
{{payload.invoiceNumber}}Not valid JSONThe prompt is used unchanged
{payload.invoiceNumber} with single bracesAnyNot replaced; the text stays as typed
  • Values are marked as data. Each inserted value is wrapped in markers, and the agent is told that marked text is data from the webhook, not instructions. A body that says ignore your instructions is treated as text to read, not as an order.
  • Long values are cut. Each value is limited to 4,000 characters and ends with ” …[truncated]” when longer.
  • The whole body is limited to 64 KB. A larger call is refused.
  • The hints under the prompt show examples with single braces; always use double braces.
DoDon’t
Say what the agent should do and what it should return: “Check the invoice with getInvoice and draft a reminder for the billing contacts.”Leave the task to be guessed from the data
Name the fields you rely on, so a missing field shows up as an empty value you noticeRely on fields that only some callers send
Say what not to do: “Do not issue refunds.”Rely on the agent to infer limits

The Webhook panel appears below the form once the agent is saved. It follows the response mode currently selected in the form, even before you save it.

The "Webhook" panel of the agent "Overdue invoice follow-up", marked "Async (202)". The "Endpoint URL" field shows the agent's address ending in /api/autonomous/hook/ followed by the workspace and agent IDs; in these sample screenshots it points to a local test server. The "Copy" button next to it is highlighted. Below, a note says every call needs a per-user token, followed by step "1. Sign in as a company admin" with a ready-made curl command and "Copy sign-in".The "Webhook" panel of the agent "Overdue invoice follow-up", marked "Async (202)". The "Endpoint URL" field shows the agent's address ending in /api/autonomous/hook/ followed by the workspace and agent IDs; in these sample screenshots it points to a local test server. The "Copy" button next to it is highlighted. Below, a note says every call needs a per-user token, followed by step "1. Sign in as a company admin" with a ready-made curl command and "Copy sign-in".
The Webhook panel gives the agent's endpoint URL and ready-made requests for each step.
What this screenshot shows
Screen
Webhook (/admin/configure/autonomous-agents)
Highlighted
button “Copy”, webhook-endpoint, enabled. copies the endpoint URL
Also visible
Endpoint URL /api/autonomous/hook/{companyId}/{agentId} (local test host in samples); Step 1 sign-in request
Purpose
wiring the external system
PartWhat it gives you
Endpoint URL and CopyThe agent’s address. Copy the URL shown in the panel; it ends in /api/autonomous/hook/ followed by your workspace ID and the agent’s ID.
Every call needs a per-user token in the Authorization header (or the X-Autonomous-Token header). A company admin signs in (step 1), then generates one (step 2).Every call needs a per-user token
1. Sign in as a company admin, Copy sign-inA ready-made sign-in request for a company admin. The admin token it returns lasts about an hour.
2. Generate a token (company admin), Copy exchangeThe request that creates a per-user token from an end-user’s PIN or password, with your workspace ID filled in
3. Trigger the agent, Copy curlA ready-made call to the agent. Use the token you generated in step 2 as the Bearer <token>.
4. Get the result, Copy status requestAsynchronous agents only: the request that collects the result of a run
Prefer not to poll? Send an X-Callback-Url header with the trigger in step 3 and we POST the same result to that HTTPS URL as soon as the run finishes.Asynchronous agents only: how to receive the result at your own HTTPS address instead

Each copy button puts the text on your clipboard and shows Copied to clipboard. The full sequence, with responses and error codes, is in Autonomous agents end to end.

Recent runs at the bottom of the editor lists the agent’s last 20 runs, newest first.

The "Recent runs" table at the bottom of the agent "Overdue invoice follow-up", with the columns Status, Started, Completed, Triggered for, Error and Output. The newest run (15/09/2026, 08:15) is "Running" and the one before it "Waiting for approval", both for customer cus_48321; the others are "Completed" except one highlighted "Failed" run on 14/09/2026 for cus_48321 with the error "The assistant is temporarily unavailable. Please try again shortly." One completed run was triggered for cus_48210. Every row has "View output". The table shows the last 20 runs.The "Recent runs" table at the bottom of the agent "Overdue invoice follow-up", with the columns Status, Started, Completed, Triggered for, Error and Output. The newest run (15/09/2026, 08:15) is "Running" and the one before it "Waiting for approval", both for customer cus_48321; the others are "Completed" except one highlighted "Failed" run on 14/09/2026 for cus_48321 with the error "The assistant is temporarily unavailable. Please try again shortly." One completed run was triggered for cus_48210. Every row has "View output". The table shows the last 20 runs.
Recent runs lists each run's status, the customer it ran for and any error.
What this screenshot shows
Screen
Recent runs (/admin/configure/autonomous-agents)
Highlighted
“”, runs-table, failed run. none
Also visible
Running, Waiting for approval, Completed and Failed runs with customer IDs
Purpose
monitoring runs
StatusMeaning
PendingAccepted, not started yet
RunningThe agent is working
CompletedFinished; the output is ready
FailedStopped with an error, shown under Error
Waiting for approvalThe agent reached a tool that needs approval and is waiting for it
app.autonomousAgents.status.waitingforinputThe agent asked a question and is waiting for a reply; this status shows its internal name

The Triggered for column appears when at least one run has a customer, and shows the end-user the run is attributed to. Select View output to open Run output:

The "Run output" dialog for a completed run of "Overdue invoice follow-up". The highlighted line "Completed in 11.2s", next to the green "Completed" badge, sits above the agent's answer: invoice INV-2026-0412 for Example Studios is 14 days overdue, the card on file is a Visa ending 4417, and a draft payment reminder for the billing contacts follows. The output is the same text an external system receives when it collects the result.The "Run output" dialog for a completed run of "Overdue invoice follow-up". The highlighted line "Completed in 11.2s", next to the green "Completed" badge, sits above the agent's answer: invoice INV-2026-0412 for Example Studios is 14 days overdue, the card on file is a Visa ending 4417, and a draft payment reminder for the billing contacts follows. The output is the same text an external system receives when it collects the result.
View output shows a finished run's answer and how long it took.
What this screenshot shows
Screen
Run output (/admin/configure/autonomous-agents)
Highlighted
“”, dialog-top, completed run. none
Also visible
Agent output with a draft payment reminder
Purpose
reading a run's result
  • A finished run shows Completed in {{duration}} and the agent’s answer, the same text the caller receives.
  • A run still in progress shows This run is still in progress. Check back shortly.
  • A run with no answer shows This run produced no output.
  • If the output cannot be loaded: Could not load the run output. Please try again.

When every AI provider fails, the run fails with “The assistant is temporarily unavailable. Please try again shortly.” as its error. Each run is also a job under AnalyticsAgent jobs, with its steps and events.

  1. Open the agent. To pause it, switch Active off and select Save: Inactive agents reject webhook calls with 403. Its card then shows Disabled.

  2. To delete it, select Delete agent above the form. The popover warns: This permanently deletes the agent and its run history. This cannot be undone. Confirm with Delete agent.

A paused agent keeps its settings and its runs; callers that poll a run they started still get its status. Deleting removes the agent and its run list; the chat sessions and jobs its runs created stay where they are. Callers of a deleted agent get “Agent not found”.

Where

At the right of the Agents header: a refresh icon and New.

What

Refresh reloads the cards and their run counts. New opens an empty agent form.

Why

Run counts change with every webhook call; refresh to see them.

Where

The first field of the form, Name.

What

Required, up to 255 characters. Shown on the card, in the run’s chat session name and in usage reports.

Why

A name that says what triggers the agent, such as e.g. Order shipped notifier, makes jobs and spend easy to read.

Where

Widget, a drop-down of your widgets. Required.

What

The agent uses this widget’s main toolkit, skills, instructions, guardrails and budgets. A widget without a toolkit shows a warning, and runs on it fail.

Why

You configure an agent’s abilities once, on a widget, and reuse them.

Where

Response mode, below the widget. Saved with the form.

What

Async (202) (default): the call returns at once with a run ID; the caller collects the result or receives it at a callback address. Synchronous (200): the call waits up to 6 minutes and returns the answer. A caller can also ask an asynchronous agent to wait for one call.

Why

Short tasks are simplest synchronously; long tasks and tasks that may wait for an approval should be asynchronous.

Where

Active, shown when editing a saved agent. Saved with the form.

What

Inactive agents reject webhook calls with 403. The webhook’s error reads “Agent is disabled”.

Why

Stop an agent without losing it, for example while you change the system that calls it.

Where

Prompt, with Sample payload JSON, the field buttons and the path box below it.

What

The prompt is required. {{payload.path}} variables are filled from the call’s body; the sample only helps you insert them and is not used in runs.

Why

Inserting fields from a real example avoids typing paths wrong.

Save, Create agent, Delete agent and Back to agents

Section titled “Save, Create agent, Delete agent and Back to agents”
Where

Below the form: Create agent for a new agent, Save for a saved one. Above the form: Back to agents and, for a saved agent, Delete agent.

What

Saving shows Agent created or Agent updated. Deleting asks first and shows Agent deleted.

Why

Changes apply to the next webhook call; runs already started keep the prompt they started with.

Where

Recent runs at the bottom of the editor, with View output on each row.

What

The last 20 runs with Status, Started, Completed, Triggered for, Error and Output. Without runs: No runs yet.

Why

Check what an agent did without opening the system that called it.

TopicFact
TriggerA webhook call only; there is no schedule for autonomous agents.
TokensEvery call needs a per-user token. One token works for every agent in the workspace.
BodyJSON, up to 64 KB; each inserted value up to 4,000 characters.
Variables{{payload.path}} with double braces; a missing field becomes empty.
Synchronous waitingUp to 6 minutes.
Rate limit5 runs per end-user per minute; more are refused until the minute has passed. One calling address can also make at most 300 calls per minute to your workspace, run starts and status checks together.
Runs listedThe last 20 per agent; all runs are also jobs under Agent jobs.
CostEvery run’s calls to AI models are attributed to the agent and the end-user, and count towards the widget’s and the workspace’s budgets.
MemoryRuns do not read or write the end-user’s chat memory.
DeletingRemoves the agent and its run list, not the chat sessions or jobs.

Where do I find the agent’s webhook address?

Section titled “Where do I find the agent’s webhook address?”

Open the agent on ConfigureAutonomous Agents. The Webhook panel below the form shows it under Endpoint URL; copy the URL shown in the panel. It appears once the agent has been saved.

Choose Synchronous (200) for short tasks where the caller can wait for the answer, up to 6 minutes. Choose Async (202) for longer tasks or tasks that may stop for an approval: the call returns a run ID at once, and the caller collects the result or receives it at a callback address.

How do I put data from the webhook into the prompt?

Section titled “How do I put data from the webhook into the prompt?”

Use variables with double braces, such as {{payload.invoiceNumber}}, in the Prompt. Paste an example body into Sample payload JSON and select its fields to insert them. Single braces are not replaced.

What happens if a field in the prompt is missing from the body?

Section titled “What happens if a field in the prompt is missing from the body?”

The variable is replaced with nothing, and the rest of the prompt runs as written. If the body is not valid JSON, the prompt is used with every variable left as typed. Write prompts that still make sense, or tell the agent to stop, when a value is empty.

Why does every run fail with Server ID is required?

Section titled “Why does every run fail with Server ID is required?”

The agent’s widget has no toolkit connected. Autonomous runs need the widget’s toolkit; connect one to the widget under ConfigureToolkits, or choose another widget for the agent, and save.

Open it, switch Active off and save. Webhook calls are then refused with HTTP 403 and “Agent is disabled”. Its settings and runs are kept, and switching it on again restores it at once.

Up to 5 runs per end-user per minute. Further calls in the same minute are refused with HTTP 429 and a Retry-After header, so the calling system can wait and try again. Separately, one calling address can make at most 300 calls per minute to your workspace, run starts and status checks together; over that, calls get HTTP 429 “Too many requests. Please wait a minute and try again.” before the token is even checked.

What happens to a run that needs an approval?

Section titled “What happens to a run that needs an approval?”

It stops with Waiting for approval when it reaches a tool that requires approval, and continues once the approval is decided. Its job under AnalyticsAgent jobs shows which tool is waiting.

View output in Recent runs shows the answer and how long it took. The run’s job under AnalyticsAgent jobs shows its steps, approvals and events.

Recent runs lists the last 20 runs of the agent. The card shows the total number of runs, and every run, including older ones, is a job under AnalyticsAgent jobs.

Deleting removes the agent and its run list, after the confirmation This permanently deletes the agent and its run history. This cannot be undone. The chat sessions and jobs its runs created are separate records and stay. Callers of the deleted agent get “Agent not found”.

Do runs count towards budgets and AI spend?

Section titled “Do runs count towards budgets and AI spend?”

Yes. Each run’s calls to AI models are attributed to the agent and to the end-user of the token, appear on DashboardAI Spend by autonomous agent and by customer, and count towards the budgets covering the widget, the customer company and the workspace.

Users with the Admin role. Every other signed-in user of your workspace can view agents and their runs, but their changes fail with “This action requires the Admin role.” The page has no feature switch, and agents are shared by the whole workspace.

SymptomWhat to check
Runs fail with “Server ID is required”The widget has no toolkit. Connect one or choose another widget.
That isn't valid JSON — check for a missing quote, comma, or bracket.The sample body is not valid JSON. Check quotes, commas and brackets.
A variable stays in the output as typedIt uses single braces, or a path that does not exist. Use {{payload.path}}.
Callers get HTTP 403 “Agent is disabled”Switch Active on and save.
Callers get HTTP 401 “Missing access token” or “Invalid access token”The call has no token, or the token was revoked or mistyped. See the Access tokens tab.
Callers get HTTP 429 “Too many runs for this customer in the last minute.”More than 5 runs for one end-user in a minute. Wait for the Retry-After time.
Callers get HTTP 429 “Too many requests. Please wait a minute and try again.”More than 300 calls in a minute from one calling address to your workspace; run starts and status checks count together. Wait for the Retry-After time and poll less often.
A run stays Waiting for approvalA tool needs approval. Check the job’s approvals under Agent jobs.
A run failed with “The assistant is temporarily unavailable”Every AI model failed. Check the connectors’ health and try again.
Could not save the agent. Please try again.Check the message above the buttons, fill in every required field and save again.
A change fails with Request failed and “This action requires the Admin role.”Changes on this page need the Admin role. Ask an Admin to make the change, or to give you the Admin role under Settings › Users.