---
title: "Deliver a webhook"
method: POST
path: "/v1/automations/{automation_id}/webhook"
tags: ["Automations"]
---

# Deliver a webhook

`POST /v1/automations/{automation_id}/webhook`

## Request

- Base URL: `https://api.dexto.ai`
- URL: `https://api.dexto.ai/v1/automations/{automation_id}/webhook`
- Auth: none required

Deliver a webhook. No API key: sign the raw body with the automation's secret and send Dexto-Signature: t=<unix seconds>,v1=<hex HMAC-SHA256 of '<t>.<raw body>'>. Requests more than 5 minutes old are refused; the same signed request again returns its first firing. The body must be JSON (or empty), at most 256 KiB. Each automation takes at most 60 requests a minute. Answers 202 before the run starts.

## Path parameters

- `automation_id` string, required

## Headers

- `Dexto-Signature` string, required

## Request body

- union
  - union
    - boolean
    - number
    - string
  - JsonValue[]
  - object

## Response `202`

Accepted.

- object
  - `agent_id` string, uuid, required
  - `automation_id` string, uuid, required
  - `error` object, nullable, required: Why the firing failed, was refused or skipped: the run's stop_reason, insufficient_credits, spend_limit_reached, session_busy, automation_paused, target_unavailable or dispatch_failed.
    - `code` string, required
    - `message` string, required
  - `fired_at` string, date-time, required
  - `id` string, uuid, required
  - `object` 'automation_firing', required
  - `run_id` string, uuid, nullable, required
  - `scheduled_for` string, date-time, nullable, required: The schedule occurrence it fires; null unless the schedule fired it.
  - `session_id` string, uuid, nullable, required
  - `source` 'schedule' | 'webhook' | 'manual', required
  - `status` 'queued' | 'running' | 'completed' | 'failed' | 'cancelled' | 'refused' | 'skipped', required: queued until its run starts; then the run's running, completed, failed or cancelled; refused for credits or a spend limit; skipped when its fixed session was busy.

## Other responses

- `400`: Invalid JSON or request fields.
- `401`: Missing or invalid API key.
- `402`: The account has insufficient credits.
- `403`: The account cannot perform this operation.
- `404`: The requested resource was not found.
- `409`: The request conflicts with existing resource state.
- `429`: The account exceeded this operation's request rate.
- `500`: Unexpected Dexto failure.
- `502`: The upstream model provider failed.
- `503`: A required Dexto service is temporarily unavailable.

---

[API](https://skmtc.dev/dexto/apis/dexto-api.md) - [All operations](https://skmtc.dev/dexto/apis/dexto-api/llms.txt) - [OpenAPI document](https://skmtc.dev/dexto/apis/dexto-api/revisions/47eb880cffa5?raw)
