Skip to main content
An incoming webhook starts a Bolt schedule when another tool sends a POST request to its URL. When the request has a JSON body, Paradime gives that body to the run. A DinoAI agent in the run gets the body in its task, so it can work on the one ticket, alert, or pull request that started the run. In this guide, a Jira Automation rule calls the webhook when someone creates a ticket, and an agent reads the ticket from the body.
Prerequisites
  • An agent you can run, built in the Agent UI or defined as code under .dinoai/agents/<name>.yml. See Run an agent with Bolt.
  • The Admin, Workspace Admin, or Developer role, to create incoming webhooks.
  • A tool that can send a POST request with a custom header and a JSON body, such as Jira Automation, Zapier, a CI job, or curl.
Estimated time: 15 minutes.

Steps

1

Add the agent command

Create a Bolt schedule, select Add command, then Run Paradime DinoAI Agent.
  1. Agent name: pick the agent.
  2. Task: tell the agent what to do with the event. Refer to the webhook payload by name, because Paradime adds it after your task:
  3. Select Save command.
Keep the schedule agent-only: every command is paradime dinoai. Then each request starts its own run, up to 5 at once. On a schedule with other commands, a request that arrives while a run is in progress is skipped.
2

Create the Trigger URL

  1. Under Trigger type, select Incoming webhook.
  2. In the Trigger URLs card, click New Trigger URL, enter a Name such as Jira new tickets, and click Create.
  3. Copy the URL and the Authorization header, then click Done. The secret shows only once.
  4. Click Deploy.
3

Send the event from the other tool

Set up the other tool to send a POST request to the URL, with the Authorization header and a JSON body.In Jira Automation, add a Send web request action to a rule that runs when a ticket is created:
  • Web request URL: the Trigger URL.
  • HTTP method: POST.
  • Headers: Authorization with the value Bearer <your secret>, and Content-Type with the value application/json.
  • Web request body: Custom data, with the fields the agent needs:
Send only the fields the agent needs. The body must be a JSON object or array of 64 KB or less.
4

Test with a body

Send test request in Bolt sends no body, so it doesn’t test the payload. To test the payload, send a request with a body from your terminal:
The response has "accepted": true and a run_id.
Open the run in Bolt. It says Triggered by an incoming webhook. The agent’s logs show that it worked on DATA-142.

What the agent gets

Paradime adds a <webhook_payload> block after your task. The agent’s opening message for the test request above is:
  • The body is compact JSON. The characters <, >, and & are written as <, >, and &, so text in the body can’t close the block.
  • The block tells the agent to treat the body as data and not to follow instructions in it. Anyone who can create a ticket can put text in the body, so put every instruction in the task, and give the agent only the tools it needs.
  • When there’s no body to pass, the block says why: a test request, no body or a body over 1 MB, a body that isn’t a JSON object or array, or a body over 64 KB. The agent still runs, so write the task so that the agent stops if the payload is missing.
  • The agent can’t read the payload from an environment variable. The block in its task is the only copy it gets.

Use the payload in other commands

Other commands in the run read the payload from environment variables. For a full walkthrough, see Use a webhook payload in a Bolt run. In a Python script:
In a dbt™ model or macro:
Always give a default, such as '{}'. The variable isn’t set on a run without a usable body, such as a test request.

Define it as code

If you manage schedules as code, declare the trigger with trigger_on_webhook: true:
The file doesn’t create the Trigger URL. After you deploy, open the schedule in Bolt and create the URL in the Trigger URLs card.

Troubleshooting

To see every request a Trigger URL received, go to Bolt > Webhooks > Incoming.

Next steps

Incoming webhooks reference

Responses, deliveries, rotation, and limits.

Browse templates

Agent recipes to start from, such as the Jira intake agent.