{
"error": {
"code": "rate_limited",
"message": "Rate limit exceeded — retry in a few seconds",
"details": {
"retry_after_seconds": 42
}
}
}
{
"error": {
"code": "service_unavailable",
"message": "The API is temporarily unavailable — retry later",
"details": {}
}
}
API Reference
Create a webhook subscription
Subscribes a URL to one or more event types. This response is the only
time the subscription secret is returned: store it to verify the
signatures.
URL: HTTPS only; no private or local address; no credentials in
the URL. A refused URL returns 400 invalid_request with
details.parameter: url and the cause in details.reason.
Events: at least one; duplicates are accepted and ignored.
Limit: 20 active subscriptions per workspace. Beyond that, the
API returns 400 invalid_request with details.max.
Ownership: the subscription belongs to the workspace; workspace
admins can see and delete it in Settings → API. Revoking the key
that creates it deletes the subscription as well, unless the admin
unticks that option in Settings → API. The key is also revoked, with
its subscriptions, when the admin who created it leaves the
workspace, loses the admin role or deletes their account.
Delivery (the delivery callback below): each event is sent as a
POST to the subscribed URL, with a WebhookDelivery JSON body,
Content-Type: application/json and User-Agent: Agentova-Webhooks/1.0.
Signature: X-Agentova-Signature: t=<unix timestamp>,v1=<hex>,
where v1 is the HMAC-SHA256 of the string {t}.{raw body}, keyed
with the complete secret (the whole whsec_… string). Compare in
constant time and reject a t more than 5 minutes away from your
clock (recommended tolerance).
Success: a 2xx status received within 10 seconds (deadline for
the whole response). The response body is ignored. Redirects are not
followed: a 3xx is a failure, like a timeout or a network error.
Retries: 8 attempts in total, spread over about 27 hours 35
minutes. The first attempt is immediate; after each failure, the
next one comes 5 seconds, 5 minutes, 30 minutes, 2 hours, 5 hours,
10 hours and finally 10 hours later. On 429 or 503 with a
Retry-After header, the next attempt waits at least that long
(12 hours at most). No attempt is scheduled more than 36 hours
after the event was created: the delivery is abandoned instead.
410 Gone: the subscription is deleted immediately, without
notification. Answer 410 to unsubscribe.
Disabling: a delivery is abandoned after its 8th failed attempt,
or earlier at the 36-hour limit. The
subscription is then disabled (disabled_at) if it has at least 3
abandoned deliveries in a row and has been failing without
interruption for at least 72 hours, or at once if its URL no longer
passes the address checks; workspace admins are notified. A
disabled subscription cannot be re-enabled: delete it and create a
new one (Zapier: turn the Zap off and on again; n8n: deactivate and
reactivate the workflow). It is deleted automatically 30 days later.
At least once, in no guaranteed order: deduplicate on the event
id (evt_…), which is the same on every attempt and for every
subscription (keep seen ids for at least 48 hours); order events
with the timestamp of the resource in data, not with their arrival
order.
API key created in the Agentova app (Settings → API), sent as Authorization: Bearer agk_live_…. One key = one workspace: the key determines the workspace, and no workspace identifier ever travels in requests. The Bearer scheme is case-insensitive. A revoked key is refused immediately.
lead.created: a lead was created (data is a Lead).
run.completed: an automation completed a run (data is a Run).
automation.status_changed: the status of an automation changed
(data is an Automation).
Options disponibles:
run.completed,
lead.created,
automation.status_changed
Callbacks
POST
{$request.body#/url}delivery
Corps
application/json
Option 1
Option 2
Option 3
Body sent to the subscribed URL. type (a WebhookEvent value) determines the shape of data: a Lead for lead.created, a Run for run.completed, an Automation for automation.status_changed.
Opaque identifier prefixed with evt_, unique per event: use it to deduplicate. It is the same on every delivery attempt and for every subscription that receives the event.
A contact captured by one of the workspace's agents.
Show child attributes
Réponse
Unsubscribe: the subscription is deleted immediately, without notification, and nothing is retried.
Réponse
Subscription created. The secret is returned only in this response.
A webhook subscription. It belongs to the workspace. Revoking the API key that created it deletes it as well, unless the admin unticks that option in Settings → API.
Set when Agentova disabled the subscription, typically after prolonged delivery failures (see POST /webhooks); null otherwise. A disabled subscription receives nothing and cannot be re-enabled: delete it and create a new one. It is deleted automatically 30 days after this date.
Signing secret (whsec_…), shown only once. The complete string, prefix included, is the HMAC key used to sign the deliveries.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Agentova API","colors":{"primary":"#26D8FF","light":"#26D8FF","dark":"#020308"},"logo":{"light":"https://mintcdn.com/agentova-2c667f5d/Xl6jEAYNYyd4kO2m/brand/logo/logo-ink.svg?fit=max\u0026auto=format\u0026n=Xl6jEAYNYyd4kO2m\u0026q=85\u0026s=cd9afebdaa853d2794ed37edbe695f3b","dark":"https://mintcdn.com/agentova-2c667f5d/Xl6jEAYNYyd4kO2m/brand/logo/logo-white.svg?fit=max\u0026auto=format\u0026n=Xl6jEAYNYyd4kO2m\u0026q=85\u0026s=50622e182c43b32e6e51d92ccc849a4f","href":"https://agentova.ai"},"favicon":"https://mintcdn.com/agentova-2c667f5d/Xl6jEAYNYyd4kO2m/brand/dark/favicon-48.png?fit=max\u0026auto=format\u0026n=Xl6jEAYNYyd4kO2m\u0026q=85\u0026s=82b67249e01e25cd96d3bf6884e514dd","api":{"playground":{"display":"interactive","proxy":true}},"footer":{"socials":{"github":"https://github.com/Agentova-ai-Company"}},"contextual":{"options":["copy","view","chatgpt","claude","mcp"],"display":"header"},"styling":{"latex":false},"navigation":{"languages":[{"language":"fr","navbar":{"links":[{"href":"/support","label":"Support"}],"primary":{"type":"button","label":"Contacter le support","href":"mailto:contact@agentova.ai"}},"href":""},{"language":"en","navbar":{"links":[{"href":"/en/support","label":"Support"}],"primary":{"type":"button","label":"Contact support","href":"mailto:contact@agentova.ai"}},"href":"en"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"agentova-2c667f5d","hasAudioNarration":false,"actualSubdomain":"agentova-2c667f5d","customDomains":["docs.agentova.ai"],"gitSource":{"type":"github","owner":"agentova-ai-company","repo":"api-docs-agentova-ai","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6aeb1ac41f0e0ab891cce2c4","collectionId":"8e2d1f78-31e3-4a96-b15d-cda38a8496eb","liveDeploymentHistoryId":"6aeb1ac41f0e0ab891cce2c4","schemaVersion":"v3"},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"WEB_MCP":{"status":"DISABLED"},"NARRATION":{"status":"DISABLED"}},"buildId":"6aeb29011c0770128d3242a7","clientVersion":"0.0.4054","searchFilterCounts":[{"language":"fr","tag":"Guides","count":18},{"language":"en","tag":"Guides","count":18},{"language":"en","tag":"API Reference","count":18},{"language":"fr","tag":"Référence de l'API","count":9},{"language":"fr","tag":"API Reference","count":9},{"language":"fr","tag":"Bien démarrer","count":7},{"language":"fr","tag":"n8n","count":7},{"language":"en","tag":"n8n","count":7},{"language":"fr","tag":"Zapier","count":6},{"language":"en","tag":"Zapier","count":6},{"language":"en","tag":"Get started","count":5},{"language":"fr","tag":"Aide","count":4},{"language":"en","tag":"Help","count":4},{"language":"fr","tag":"Nœuds","count":3},{"language":"fr","tag":"Utiliser l'app","count":3},{"language":"en","tag":"Nodes","count":3},{"language":"en","tag":"Using the app","count":3},{"language":"fr","tag":"Nouveautés","count":2},{"language":"en","tag":"Updates","count":2},{"language":"en","tag":"Getting Started","count":2}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","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":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","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":"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":"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":"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":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","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":"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":"workos-sso-scim","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},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/create-a-webhook-subscription","slug":"/api-reference/create-a-webhook-subscription","pageMetadata":{"title":"Create a webhook subscription","description":"Subscribes a URL to one or more event types. This response is the only\ntime the subscription `secret` is returned: store it to verify the\nsignatures.\n\n- **URL**: HTTPS only; no private or local address; no credentials in\n the URL. A refused URL returns `400 invalid_request` with\n `details.parameter: url` and the cause in `details.reason`.\n- **Events**: at least one; duplicates are accepted and ignored.\n- **Limit**: 20 active subscriptions per workspace. Beyond that, the\n API returns `400 invalid_request` with `details.max`.\n- **Ownership**: the subscription belongs to the workspace; workspace\n admins can see and delete it in Settings → API. Revoking the key\n that creates it deletes the subscription as well, unless the admin\n unticks that option in Settings → API. The key is also revoked, with\n its subscriptions, when the admin who created it leaves the\n workspace, loses the admin role or deletes their account.\n\n**Delivery** (the `delivery` callback below): each event is sent as a\n`POST` to the subscribed URL, with a `WebhookDelivery` JSON body,\n`Content-Type: application/json` and `User-Agent: Agentova-Webhooks/1.0`.\n\n- **Signature**: `X-Agentova-Signature: t=\u003cunix timestamp>,v1=\u003chex>`,\n where `v1` is the HMAC-SHA256 of the string `{t}.{raw body}`, keyed\n with the complete `secret` (the whole `whsec_…` string). Compare in\n constant time and reject a `t` more than 5 minutes away from your\n clock (recommended tolerance).\n- **Success**: a 2xx status received within 10 seconds (deadline for\n the whole response). The response body is ignored. Redirects are not\n followed: a 3xx is a failure, like a timeout or a network error.\n- **Retries**: 8 attempts in total, spread over about 27 hours 35\n minutes. The first attempt is immediate; after each failure, the\n next one comes 5 seconds, 5 minutes, 30 minutes, 2 hours, 5 hours,\n 10 hours and finally 10 hours later. On `429` or `503` with a\n `Retry-After` header, the next attempt waits at least that long\n (12 hours at most). No attempt is scheduled more than 36 hours\n after the event was created: the delivery is abandoned instead.\n- **`410 Gone`**: the subscription is deleted immediately, without\n notification. Answer `410` to unsubscribe.\n- **Disabling**: a delivery is abandoned after its 8th failed attempt,\n or earlier at the 36-hour limit. The\n subscription is then disabled (`disabled_at`) if it has at least 3\n abandoned deliveries in a row and has been failing without\n interruption for at least 72 hours, or at once if its URL no longer\n passes the address checks; workspace admins are notified. A\n disabled subscription cannot be re-enabled: delete it and create a\n new one (Zapier: turn the Zap off and on again; n8n: deactivate and\n reactivate the workflow). It is deleted automatically 30 days later.\n- **At least once, in no guaranteed order**: deduplicate on the event\n `id` (`evt_…`), which is the same on every attempt and for every\n subscription (keep seen ids for at least 48 hours); order events\n with the timestamp of the resource in `data`, not with their arrival\n order.\n","deprecated":null,"version":null,"openapi":"/openapi/openapi-v1.yaml post /webhooks","href":"/api-reference/create-a-webhook-subscription","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n li: \"li\",\n p: \"p\",\n strong: \"strong\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Subscribes a URL to one or more event types. This response is the only\\ntime the subscription \", _jsx(_components.code, {\n children: \"secret\"\n }), \" is returned: store it to verify the\\nsignatures.\"]\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: \"URL\"\n }), \": HTTPS only; no private or local address; no credentials in\\nthe URL. A refused URL returns \", _jsx(_components.code, {\n children: \"400 invalid_request\"\n }), \" with\\n\", _jsx(_components.code, {\n children: \"details.parameter: url\"\n }), \" and the cause in \", _jsx(_components.code, {\n children: \"details.reason\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: \"Events\"\n }), \": at least one; duplicates are accepted and ignored.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: \"Limit\"\n }), \": 20 active subscriptions per workspace. Beyond that, the\\nAPI returns \", _jsx(_components.code, {\n children: \"400 invalid_request\"\n }), \" with \", _jsx(_components.code, {\n children: \"details.max\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: \"Ownership\"\n }), \": the subscription belongs to the workspace; workspace\\nadmins can see and delete it in Settings → API. Revoking the key\\nthat creates it deletes the subscription as well, unless the admin\\nunticks that option in Settings → API. The key is also revoked, with\\nits subscriptions, when the admin who created it leaves the\\nworkspace, loses the admin role or deletes their account.\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Delivery\"\n }), \" (the \", _jsx(_components.code, {\n children: \"delivery\"\n }), \" callback below): each event is sent as a\\n\", _jsx(_components.code, {\n children: \"POST\"\n }), \" to the subscribed URL, with a \", _jsx(_components.code, {\n children: \"WebhookDelivery\"\n }), \" JSON body,\\n\", _jsx(_components.code, {\n children: \"Content-Type: application/json\"\n }), \" and \", _jsx(_components.code, {\n children: \"User-Agent: Agentova-Webhooks/1.0\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: \"Signature\"\n }), \": \", _jsx(_components.code, {\n children: \"X-Agentova-Signature: t=\u003cunix timestamp>,v1=\u003chex>\"\n }), \",\\nwhere \", _jsx(_components.code, {\n children: \"v1\"\n }), \" is the HMAC-SHA256 of the string \", _jsx(_components.code, {\n children: \"{t}.{raw body}\"\n }), \", keyed\\nwith the complete \", _jsx(_components.code, {\n children: \"secret\"\n }), \" (the whole \", _jsx(_components.code, {\n children: \"whsec_…\"\n }), \" string). Compare in\\nconstant time and reject a \", _jsx(_components.code, {\n children: \"t\"\n }), \" more than 5 minutes away from your\\nclock (recommended tolerance).\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: \"Success\"\n }), \": a 2xx status received within 10 seconds (deadline for\\nthe whole response). The response body is ignored. Redirects are not\\nfollowed: a 3xx is a failure, like a timeout or a network error.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: \"Retries\"\n }), \": 8 attempts in total, spread over about 27 hours 35\\nminutes. The first attempt is immediate; after each failure, the\\nnext one comes 5 seconds, 5 minutes, 30 minutes, 2 hours, 5 hours,\\n10 hours and finally 10 hours later. On \", _jsx(_components.code, {\n children: \"429\"\n }), \" or \", _jsx(_components.code, {\n children: \"503\"\n }), \" with a\\n\", _jsx(_components.code, {\n children: \"Retry-After\"\n }), \" header, the next attempt waits at least that long\\n(12 hours at most). No attempt is scheduled more than 36 hours\\nafter the event was created: the delivery is abandoned instead.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: _jsx(_components.code, {\n children: \"410 Gone\"\n })\n }), \": the subscription is deleted immediately, without\\nnotification. Answer \", _jsx(_components.code, {\n children: \"410\"\n }), \" to unsubscribe.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: \"Disabling\"\n }), \": a delivery is abandoned after its 8th failed attempt,\\nor earlier at the 36-hour limit. The\\nsubscription is then disabled (\", _jsx(_components.code, {\n children: \"disabled_at\"\n }), \") if it has at least 3\\nabandoned deliveries in a row and has been failing without\\ninterruption for at least 72 hours, or at once if its URL no longer\\npasses the address checks; workspace admins are notified. A\\ndisabled subscription cannot be re-enabled: delete it and create a\\nnew one (Zapier: turn the Zap off and on again; n8n: deactivate and\\nreactivate the workflow). It is deleted automatically 30 days later.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: \"At least once, in no guaranteed order\"\n }), \": deduplicate on the event\\n\", _jsx(_components.code, {\n children: \"id\"\n }), \" (\", _jsx(_components.code, {\n children: \"evt_…\"\n }), \"), which is the same on every attempt and for every\\nsubscription (keep seen ids for at least 48 hours); order events\\nwith the timestamp of the resource in \", _jsx(_components.code, {\n children: \"data\"\n }), \", not with their arrival\\norder.\"]\n }), \"\\n\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Create a webhook subscription","description":"Subscribes a URL to one or more event types. This response is the only\ntime the subscription `secret` is returned: store it to verify the\nsignatures.\n\n- **URL**: HTTPS only; no private or local address; no credentials in\n the URL. A refused URL returns `400 invalid_request` with\n `details.parameter: url` and the cause in `details.reason`.\n- **Events**: at least one; duplicates are accepted and ignored.\n- **Limit**: 20 active subscriptions per workspace. Beyond that, the\n API returns `400 invalid_request` with `details.max`.\n- **Ownership**: the subscription belongs to the workspace; workspace\n admins can see and delete it in Settings → API. Revoking the key\n that creates it deletes the subscription as well, unless the admin\n unticks that option in Settings → API. The key is also revoked, with\n its subscriptions, when the admin who created it leaves the\n workspace, loses the admin role or deletes their account.\n\n**Delivery** (the `delivery` callback below): each event is sent as a\n`POST` to the subscribed URL, with a `WebhookDelivery` JSON body,\n`Content-Type: application/json` and `User-Agent: Agentova-Webhooks/1.0`.\n\n- **Signature**: `X-Agentova-Signature: t=\u003cunix timestamp>,v1=\u003chex>`,\n where `v1` is the HMAC-SHA256 of the string `{t}.{raw body}`, keyed\n with the complete `secret` (the whole `whsec_…` string). Compare in\n constant time and reject a `t` more than 5 minutes away from your\n clock (recommended tolerance).\n- **Success**: a 2xx status received within 10 seconds (deadline for\n the whole response). The response body is ignored. Redirects are not\n followed: a 3xx is a failure, like a timeout or a network error.\n- **Retries**: 8 attempts in total, spread over about 27 hours 35\n minutes. The first attempt is immediate; after each failure, the\n next one comes 5 seconds, 5 minutes, 30 minutes, 2 hours, 5 hours,\n 10 hours and finally 10 hours later. On `429` or `503` with a\n `Retry-After` header, the next attempt waits at least that long\n (12 hours at most). No attempt is scheduled more than 36 hours\n after the event was created: the delivery is abandoned instead.\n- **`410 Gone`**: the subscription is deleted immediately, without\n notification. Answer `410` to unsubscribe.\n- **Disabling**: a delivery is abandoned after its 8th failed attempt,\n or earlier at the 36-hour limit. The\n subscription is then disabled (`disabled_at`) if it has at least 3\n abandoned deliveries in a row and has been failing without\n interruption for at least 72 hours, or at once if its URL no longer\n passes the address checks; workspace admins are notified. A\n disabled subscription cannot be re-enabled: delete it and create a\n new one (Zapier: turn the Zap off and on again; n8n: deactivate and\n reactivate the workflow). It is deleted automatically 30 days later.\n- **At least once, in no guaranteed order**: deduplicate on the event\n `id` (`evt_…`), which is the same on every attempt and for every\n subscription (keep seen ids for at least 48 hours); order events\n with the timestamp of the resource in `data`, not with their arrival\n order.\n","deprecated":null,"version":null,"openapi":"/openapi/openapi-v1.yaml post /webhooks","href":"/api-reference/create-a-webhook-subscription","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"createWebhook","summary":"Create a webhook subscription","description":"Subscribes a URL to one or more event types. This response is the only\ntime the subscription `secret` is returned: store it to verify the\nsignatures.\n\n- **URL**: HTTPS only; no private or local address; no credentials in\n the URL. A refused URL returns `400 invalid_request` with\n `details.parameter: url` and the cause in `details.reason`.\n- **Events**: at least one; duplicates are accepted and ignored.\n- **Limit**: 20 active subscriptions per workspace. Beyond that, the\n API returns `400 invalid_request` with `details.max`.\n- **Ownership**: the subscription belongs to the workspace; workspace\n admins can see and delete it in Settings → API. Revoking the key\n that creates it deletes the subscription as well, unless the admin\n unticks that option in Settings → API. The key is also revoked, with\n its subscriptions, when the admin who created it leaves the\n workspace, loses the admin role or deletes their account.\n\n**Delivery** (the `delivery` callback below): each event is sent as a\n`POST` to the subscribed URL, with a `WebhookDelivery` JSON body,\n`Content-Type: application/json` and `User-Agent: Agentova-Webhooks/1.0`.\n\n- **Signature**: `X-Agentova-Signature: t=\u003cunix timestamp>,v1=\u003chex>`,\n where `v1` is the HMAC-SHA256 of the string `{t}.{raw body}`, keyed\n with the complete `secret` (the whole `whsec_…` string). Compare in\n constant time and reject a `t` more than 5 minutes away from your\n clock (recommended tolerance).\n- **Success**: a 2xx status received within 10 seconds (deadline for\n the whole response). The response body is ignored. Redirects are not\n followed: a 3xx is a failure, like a timeout or a network error.\n- **Retries**: 8 attempts in total, spread over about 27 hours 35\n minutes. The first attempt is immediate; after each failure, the\n next one comes 5 seconds, 5 minutes, 30 minutes, 2 hours, 5 hours,\n 10 hours and finally 10 hours later. On `429` or `503` with a\n `Retry-After` header, the next attempt waits at least that long\n (12 hours at most). No attempt is scheduled more than 36 hours\n after the event was created: the delivery is abandoned instead.\n- **`410 Gone`**: the subscription is deleted immediately, without\n notification. Answer `410` to unsubscribe.\n- **Disabling**: a delivery is abandoned after its 8th failed attempt,\n or earlier at the 36-hour limit. The\n subscription is then disabled (`disabled_at`) if it has at least 3\n abandoned deliveries in a row and has been failing without\n interruption for at least 72 hours, or at once if its URL no longer\n passes the address checks; workspace admins are notified. A\n disabled subscription cannot be re-enabled: delete it and create a\n new one (Zapier: turn the Zap off and on again; n8n: deactivate and\n reactivate the workflow). It is deleted automatically 30 days later.\n- **At least once, in no guaranteed order**: deduplicate on the event\n `id` (`evt_…`), which is the same on every attempt and for every\n subscription (keep seen ids for at least 48 hours); order events\n with the timestamp of the resource in `data`, not with their arrival\n order.\n","requestBody":"201c898b-45a2-43bc-b5e0-1e97b40650f1","callbacks":{"delivery":"66dcba94-1036-4fed-a9ea-a10105f43668"},"responses":{"201":"8eb8a182-9ef2-4c88-93b4-ac103b8dea5b","400":"3dcf70bd-a301-46bc-ad04-d5baaefbc79f","401":"94da4443-c8ff-4706-b8c3-011a1864af3b","403":"072b203c-bc62-4403-a4a2-26d7507af2ff","413":"54d35d7a-ef43-4d4d-9c62-cb4878377775","415":"5c222a8d-7329-4e8f-951e-8addc85f56b6","429":"47487066-e334-4d02-a659-9bfb7b2beaf3","503":"a0099d37-cb83-40ac-be49-6f8f4cdb3af3"},"method":"post","type":"path","servers":["466c20a4-fdfc-49d8-9e04-77157cc9a3bf"],"security":["f233ab4c-5cea-4f37-8d2c-dd8481910b86"],"path":"/webhooks","baseUrlOptions":["https://core-api.agentova.ai/v1"],"title":"Create a webhook subscription","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["url","events"],"properties":{"url":{"type":"string","format":"uri","description":"URL that receives the deliveries. HTTPS is required; no private or local address; no credentials in the URL.\n","isRequired":true,"uniqueKey":"url","typeLabel":"string\u003curi>"},"events":{"type":"array","minItems":1,"description":"Event types to receive (at least one).","items":{"type":"string","description":"- `lead.created`: a lead was created (`data` is a `Lead`).\n- `run.completed`: an automation completed a run (`data` is a `Run`).\n- `automation.status_changed`: the status of an automation changed\n (`data` is an `Automation`).\n","enum":["run.completed","lead.created","automation.status_changed"],"uniqueKey":"events.items.[INDEX]","typeLabel":"enum\u003cstring>"},"isRequired":true,"uniqueKey":"events","typeLabel":"enum\u003cstring>[]"}},"uniqueKey":"","typeLabel":"object"},"example":{"url":"https://hooks.zapier.com/hooks/standard/xxxxx/","events":["lead.created"]},"examples":{"Example":{"title":"Example","value":{"url":"https://hooks.zapier.com/hooks/standard/xxxxx/","events":["lead.created"]}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"8eb8a182-9ef2-4c88-93b4-ac103b8dea5b":{"description":"Subscription created. The `secret` is returned only in this response.\n","headers":{"Cache-Control":{"description":"Always `no-store` (personal data, no intermediate cache)","schema":{"type":"string","enum":["no-store"]}},"X-RateLimit-Limit":{"description":"Number of requests allowed per window (per key; per IP address when the 429 comes from repeated authentication failures)\n","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests left in the current window","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Seconds left before the window resets (NOT a timestamp)","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","description":"A webhook subscription. It belongs to the workspace. Revoking the API key that created it deletes it as well, unless the admin unticks that option in Settings → API.\n","required":["secret","id","url","events","created_at","disabled_at"],"properties":{"id":{"type":"string","description":"Opaque identifier prefixed with `whk_`.","isRequired":true,"uniqueKey":"id","typeLabel":"string"},"url":{"type":"string","format":"uri","description":"URL that receives the deliveries.","isRequired":true,"uniqueKey":"url","typeLabel":"string\u003curi>"},"events":{"type":"array","description":"Event types sent to this URL.","items":{"type":"string","description":"- `lead.created`: a lead was created (`data` is a `Lead`).\n- `run.completed`: an automation completed a run (`data` is a `Run`).\n- `automation.status_changed`: the status of an automation changed\n (`data` is an `Automation`).\n","enum":["run.completed","lead.created","automation.status_changed"],"uniqueKey":"events.items.[INDEX]","typeLabel":"enum\u003cstring>"},"isRequired":true,"uniqueKey":"events","typeLabel":"enum\u003cstring>[]"},"created_at":{"type":"string","format":"date-time","description":"When the subscription was created.","isRequired":true,"uniqueKey":"created_at","typeLabel":"string\u003cdate-time>"},"disabled_at":{"oneOf":[{"type":"string","format":"date-time","description":"Set when Agentova disabled the subscription, typically after prolonged delivery failures (see `POST /webhooks`); `null` otherwise. A disabled subscription receives nothing and cannot be re-enabled: delete it and create a new one. It is deleted automatically 30 days after this date.\n","isRequired":true,"uniqueKey":"disabled_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"Set when Agentova disabled the subscription, typically after prolonged delivery failures (see `POST /webhooks`); `null` otherwise. A disabled subscription receives nothing and cannot be re-enabled: delete it and create a new one. It is deleted automatically 30 days after this date.\n","isRequired":true,"uniqueKey":"disabled_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"disabled_at","typeLabel":"string\u003cdate-time> | null"},"secret":{"type":"string","description":"Signing secret (`whsec_…`), shown only once. The complete string, prefix included, is the HMAC key used to sign the deliveries.\n","isRequired":true,"uniqueKey":"secret","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"id":"whk_01HZX6X7Y8Z9A0B1C2D3E4F5G6","url":"https://hooks.zapier.com/hooks/standard/xxxxx/","events":["lead.created"],"created_at":"2026-08-20T09:25:00Z","disabled_at":null,"secret":"whsec_5f8a3c1e9b2d4f6a8c0e2b4d6f8a0c2e"},"examples":{"Example":{"title":"Example","value":{"id":"whk_01HZX6X7Y8Z9A0B1C2D3E4F5G6","url":"https://hooks.zapier.com/hooks/standard/xxxxx/","events":["lead.created"],"created_at":"2026-08-20T09:25:00Z","disabled_at":null,"secret":"whsec_5f8a3c1e9b2d4f6a8c0e2b4d6f8a0c2e"}}},"exampleType":"examples"}},"exampleType":"examples"},"3dcf70bd-a301-46bc-ad04-d5baaefbc79f":{"description":"Invalid body: `details.parameter` names the field (`url`, `events`, `body`); for `url`, `details.reason` says why (`https_required`, `credentials_in_url`, `local_address`, `private_address`, `unresolvable_host`, `invalid_url`, `url_too_long`); when the limit of active subscriptions is reached, `details.max` gives it.\n","headers":{"Cache-Control":{"description":"Always `no-store` (personal data, no intermediate cache)","schema":{"type":"string","enum":["no-store"]}},"X-RateLimit-Limit":{"description":"Number of requests allowed per window (per key; per IP address when the 429 comes from repeated authentication failures)\n","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests left in the current window","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Seconds left before the window resets (NOT a timestamp)","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string","description":"Stable error codes. `invalid_request` (400; also 413 when the body is larger than 16 KB and 415 for an unsupported content type: the HTTP status is kept and the cause is in `details.reason`) · `invalid_api_key` (401) · `workspace_access_denied` (403) · `automation_not_found` (404) · `webhook_not_found` (404) · `route_not_found` (404: unknown path or method) · `automation_not_controllable` (422: automation in `draft` or `error`, see `details.status`) · `rate_limited` (429) · `internal_error` (500, generic message) · `service_unavailable` (503: the API is temporarily switched off by Agentova; retry later).\n","enum":["invalid_request","invalid_api_key","workspace_access_denied","automation_not_found","webhook_not_found","route_not_found","automation_not_controllable","rate_limited","internal_error","service_unavailable"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"In English, meant to be displayed; it can change without notice (branch on `code`).\n","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"type":"object","description":"Empty (`{}`) or context: `parameter`, `allowed`, `max`, `reason`, `status`, `retry_after_seconds`…\n","isRequired":true,"uniqueKey":"error.details","typeLabel":"object"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"invalid_request","message":"\u003cstring>","details":{}}}}},"exampleType":"generated"}},"exampleType":"generated"},"94da4443-c8ff-4706-b8c3-011a1864af3b":{"description":"Missing, malformed, unknown or revoked key (deliberately indistinguishable)","headers":{"Cache-Control":{"description":"Always `no-store` (personal data, no intermediate cache)","schema":{"type":"string","enum":["no-store"]}},"X-RateLimit-Limit":{"description":"Number of requests allowed per window (per key; per IP address when the 429 comes from repeated authentication failures)\n","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests left in the current window","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Seconds left before the window resets (NOT a timestamp)","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string","description":"Stable error codes. `invalid_request` (400; also 413 when the body is larger than 16 KB and 415 for an unsupported content type: the HTTP status is kept and the cause is in `details.reason`) · `invalid_api_key` (401) · `workspace_access_denied` (403) · `automation_not_found` (404) · `webhook_not_found` (404) · `route_not_found` (404: unknown path or method) · `automation_not_controllable` (422: automation in `draft` or `error`, see `details.status`) · `rate_limited` (429) · `internal_error` (500, generic message) · `service_unavailable` (503: the API is temporarily switched off by Agentova; retry later).\n","enum":["invalid_request","invalid_api_key","workspace_access_denied","automation_not_found","webhook_not_found","route_not_found","automation_not_controllable","rate_limited","internal_error","service_unavailable"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"In English, meant to be displayed; it can change without notice (branch on `code`).\n","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"type":"object","description":"Empty (`{}`) or context: `parameter`, `allowed`, `max`, `reason`, `status`, `retry_after_seconds`…\n","isRequired":true,"uniqueKey":"error.details","typeLabel":"object"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"invalid_api_key","message":"Invalid or revoked key — create one in Settings → API","details":{}}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"invalid_api_key","message":"Invalid or revoked key — create one in Settings → API","details":{}}}}},"exampleType":"examples"}},"exampleType":"examples"},"072b203c-bc62-4403-a4a2-26d7507af2ff":{"description":"Valid key, but the workspace does not have access to the service (or no longer has it): its subscription is blocked (unpaid, paused, or initial payment never completed). A workspace without a subscription is on the free plan and is not affected. This is not a per-key permission: v1 has no per-key permissions.\n","headers":{"Cache-Control":{"description":"Always `no-store` (personal data, no intermediate cache)","schema":{"type":"string","enum":["no-store"]}},"X-RateLimit-Limit":{"description":"Number of requests allowed per window (per key; per IP address when the 429 comes from repeated authentication failures)\n","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests left in the current window","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Seconds left before the window resets (NOT a timestamp)","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string","description":"Stable error codes. `invalid_request` (400; also 413 when the body is larger than 16 KB and 415 for an unsupported content type: the HTTP status is kept and the cause is in `details.reason`) · `invalid_api_key` (401) · `workspace_access_denied` (403) · `automation_not_found` (404) · `webhook_not_found` (404) · `route_not_found` (404: unknown path or method) · `automation_not_controllable` (422: automation in `draft` or `error`, see `details.status`) · `rate_limited` (429) · `internal_error` (500, generic message) · `service_unavailable` (503: the API is temporarily switched off by Agentova; retry later).\n","enum":["invalid_request","invalid_api_key","workspace_access_denied","automation_not_found","webhook_not_found","route_not_found","automation_not_controllable","rate_limited","internal_error","service_unavailable"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"In English, meant to be displayed; it can change without notice (branch on `code`).\n","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"type":"object","description":"Empty (`{}`) or context: `parameter`, `allowed`, `max`, `reason`, `status`, `retry_after_seconds`…\n","isRequired":true,"uniqueKey":"error.details","typeLabel":"object"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"workspace_access_denied","message":"This workspace's subscription does not allow access to the API","details":{}}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"workspace_access_denied","message":"This workspace's subscription does not allow access to the API","details":{}}}}},"exampleType":"examples"}},"exampleType":"examples"},"54d35d7a-ef43-4d4d-9c62-cb4878377775":{"description":"Request body larger than 16 KB. The code is `invalid_request`; the HTTP status stays `413` and `details.reason` gives the cause.\n","headers":{"Cache-Control":{"description":"Always `no-store` (personal data, no intermediate cache)","schema":{"type":"string","enum":["no-store"]}},"X-RateLimit-Limit":{"description":"Number of requests allowed per window (per key; per IP address when the 429 comes from repeated authentication failures)\n","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests left in the current window","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Seconds left before the window resets (NOT a timestamp)","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string","description":"Stable error codes. `invalid_request` (400; also 413 when the body is larger than 16 KB and 415 for an unsupported content type: the HTTP status is kept and the cause is in `details.reason`) · `invalid_api_key` (401) · `workspace_access_denied` (403) · `automation_not_found` (404) · `webhook_not_found` (404) · `route_not_found` (404: unknown path or method) · `automation_not_controllable` (422: automation in `draft` or `error`, see `details.status`) · `rate_limited` (429) · `internal_error` (500, generic message) · `service_unavailable` (503: the API is temporarily switched off by Agentova; retry later).\n","enum":["invalid_request","invalid_api_key","workspace_access_denied","automation_not_found","webhook_not_found","route_not_found","automation_not_controllable","rate_limited","internal_error","service_unavailable"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"In English, meant to be displayed; it can change without notice (branch on `code`).\n","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"type":"object","description":"Empty (`{}`) or context: `parameter`, `allowed`, `max`, `reason`, `status`, `retry_after_seconds`…\n","isRequired":true,"uniqueKey":"error.details","typeLabel":"object"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"invalid_request","message":"Invalid request","details":{"reason":"Request body is too large"}}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"invalid_request","message":"Invalid request","details":{"reason":"Request body is too large"}}}}},"exampleType":"examples"}},"exampleType":"examples"},"5c222a8d-7329-4e8f-951e-8addc85f56b6":{"description":"Request body not sent as JSON (`Content-Type` other than `application/json`). The code is `invalid_request`; the HTTP status stays `415` and `details.reason` gives the cause.\n","headers":{"Cache-Control":{"description":"Always `no-store` (personal data, no intermediate cache)","schema":{"type":"string","enum":["no-store"]}},"X-RateLimit-Limit":{"description":"Number of requests allowed per window (per key; per IP address when the 429 comes from repeated authentication failures)\n","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests left in the current window","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Seconds left before the window resets (NOT a timestamp)","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string","description":"Stable error codes. `invalid_request` (400; also 413 when the body is larger than 16 KB and 415 for an unsupported content type: the HTTP status is kept and the cause is in `details.reason`) · `invalid_api_key` (401) · `workspace_access_denied` (403) · `automation_not_found` (404) · `webhook_not_found` (404) · `route_not_found` (404: unknown path or method) · `automation_not_controllable` (422: automation in `draft` or `error`, see `details.status`) · `rate_limited` (429) · `internal_error` (500, generic message) · `service_unavailable` (503: the API is temporarily switched off by Agentova; retry later).\n","enum":["invalid_request","invalid_api_key","workspace_access_denied","automation_not_found","webhook_not_found","route_not_found","automation_not_controllable","rate_limited","internal_error","service_unavailable"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"In English, meant to be displayed; it can change without notice (branch on `code`).\n","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"type":"object","description":"Empty (`{}`) or context: `parameter`, `allowed`, `max`, `reason`, `status`, `retry_after_seconds`…\n","isRequired":true,"uniqueKey":"error.details","typeLabel":"object"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"invalid_request","message":"Invalid request","details":{"reason":"Unsupported Media Type"}}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"invalid_request","message":"Invalid request","details":{"reason":"Unsupported Media Type"}}}}},"exampleType":"examples"}},"exampleType":"examples"},"47487066-e334-4d02-a659-9bfb7b2beaf3":{"description":"Rate limit exceeded: too many requests with this key, or too many authentication failures from this IP address\n","headers":{"Cache-Control":{"description":"Always `no-store` (personal data, no intermediate cache)","schema":{"type":"string","enum":["no-store"]}},"Retry-After":{"description":"Seconds to wait before retrying","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Number of requests allowed per window (per key; per IP address when the 429 comes from repeated authentication failures)\n","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests left in the current window","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Seconds left before the window resets (NOT a timestamp)","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string","description":"Stable error codes. `invalid_request` (400; also 413 when the body is larger than 16 KB and 415 for an unsupported content type: the HTTP status is kept and the cause is in `details.reason`) · `invalid_api_key` (401) · `workspace_access_denied` (403) · `automation_not_found` (404) · `webhook_not_found` (404) · `route_not_found` (404: unknown path or method) · `automation_not_controllable` (422: automation in `draft` or `error`, see `details.status`) · `rate_limited` (429) · `internal_error` (500, generic message) · `service_unavailable` (503: the API is temporarily switched off by Agentova; retry later).\n","enum":["invalid_request","invalid_api_key","workspace_access_denied","automation_not_found","webhook_not_found","route_not_found","automation_not_controllable","rate_limited","internal_error","service_unavailable"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"In English, meant to be displayed; it can change without notice (branch on `code`).\n","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"type":"object","description":"Empty (`{}`) or context: `parameter`, `allowed`, `max`, `reason`, `status`, `retry_after_seconds`…\n","isRequired":true,"uniqueKey":"error.details","typeLabel":"object"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"rate_limited","message":"Rate limit exceeded — retry in a few seconds","details":{"retry_after_seconds":42}}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"rate_limited","message":"Rate limit exceeded — retry in a few seconds","details":{"retry_after_seconds":42}}}}},"exampleType":"examples"}},"exampleType":"examples"},"a0099d37-cb83-40ac-be49-6f8f4cdb3af3":{"description":"The API is temporarily switched off by Agentova (`service_unavailable`): retry later. This response may come without the `X-RateLimit-*` headers. While the API is switched off, no webhook delivery is created for the events that happen in the meantime.\n","headers":{"Cache-Control":{"description":"Always `no-store` (personal data, no intermediate cache)","schema":{"type":"string","enum":["no-store"]}}},"content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string","description":"Stable error codes. `invalid_request` (400; also 413 when the body is larger than 16 KB and 415 for an unsupported content type: the HTTP status is kept and the cause is in `details.reason`) · `invalid_api_key` (401) · `workspace_access_denied` (403) · `automation_not_found` (404) · `webhook_not_found` (404) · `route_not_found` (404: unknown path or method) · `automation_not_controllable` (422: automation in `draft` or `error`, see `details.status`) · `rate_limited` (429) · `internal_error` (500, generic message) · `service_unavailable` (503: the API is temporarily switched off by Agentova; retry later).\n","enum":["invalid_request","invalid_api_key","workspace_access_denied","automation_not_found","webhook_not_found","route_not_found","automation_not_controllable","rate_limited","internal_error","service_unavailable"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"In English, meant to be displayed; it can change without notice (branch on `code`).\n","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"type":"object","description":"Empty (`{}`) or context: `parameter`, `allowed`, `max`, `reason`, `status`, `retry_after_seconds`…\n","isRequired":true,"uniqueKey":"error.details","typeLabel":"object"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"service_unavailable","message":"The API is temporarily unavailable — retry later","details":{}}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"service_unavailable","message":"The API is temporarily unavailable — retry later","details":{}}}}},"exampleType":"examples"}},"exampleType":"examples"}},"callbacks":[{"callbackName":"delivery","expression":"{$request.body#/url}","method":"post","resolved":{"operation":{"summary":"Event delivery to the subscribed URL","description":"Sent by Agentova for each event of the subscribed types. Answer with a 2xx status within 10 seconds. A timeout, a network error or any other status is a failure, retried on the schedule described in `POST /webhooks`.\n","security":[],"requestBody":"a910158d-27a1-49b9-946b-f092dd3088d0","parameters":["e30f3f4a-33a7-41fa-b50e-840a59fe2b97","36630fb9-59ef-4c5d-9a26-e86cb0b8610b"],"responses":{"410":"b18bbccf-4353-46d6-a9f1-d362e7075353","2XX":"bdccd9bc-660f-441b-8739-f35e2fe2eb55","4XX":"fde08426-2807-458f-8cce-11d31e75c69f","5XX":"441a0939-b45e-4bfb-ba07-d3a6c4e67aea"},"method":"post","type":"path"},"dependencies":{"parameters":{"e30f3f4a-33a7-41fa-b50e-840a59fe2b97":{"name":"X-Agentova-Signature","in":"header","required":true,"description":"`t=\u003cunix timestamp>,v1=\u003chex digest>`, where the digest is the HMAC-SHA256 of `{t}.{raw request body}`, keyed with the complete subscription secret (`whsec_` prefix included). Recommended tolerance on `t`: 5 minutes.\n","schema":{"type":"string","isRequired":true,"description":"`t=\u003cunix timestamp>,v1=\u003chex digest>`, where the digest is the HMAC-SHA256 of `{t}.{raw request body}`, keyed with the complete subscription secret (`whsec_` prefix included). Recommended tolerance on `t`: 5 minutes.\n","uniqueKey":"","typeLabel":"string"},"example":"t=1724145600,v1=5f8a3c1e9b2d4f6a8c0e2b4d6f8a0c2e5f8a3c1e9b2d4f6a8c0e2b4d6f8a0c2e"},"36630fb9-59ef-4c5d-9a26-e86cb0b8610b":{"name":"User-Agent","in":"header","required":true,"description":"Always `Agentova-Webhooks/1.0`.","schema":{"type":"string","enum":["Agentova-Webhooks/1.0"],"isRequired":true,"description":"Always `Agentova-Webhooks/1.0`.","uniqueKey":"","typeLabel":"enum\u003cstring>"}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"type":"object","description":"Body sent to the subscribed URL. `type` (a `WebhookEvent` value) determines the shape of `data`: a `Lead` for `lead.created`, a `Run` for `run.completed`, an `Automation` for `automation.status_changed`.\n","required":["type","data","id","created_at"],"example":{"id":"evt_01HZX7B2C3D4E5F6G7H8J9K0L1","type":"lead.created","created_at":"2026-08-20T09:20:01Z","data":{"id":"lea_01HZX5M2N3P4Q5R6S7T8V9W0X1","source":"lead_ads","agent_id":"agt_01HZX3Q8K5N7P2R4S6T8V0W2Y5","name":"Jane Doe","email":"jane.doe@example.com","phone":"+33612345678","custom_fields":{},"created_at":"2026-08-20T09:20:00Z"}},"properties":{"id":{"type":"string","description":"Opaque identifier prefixed with `evt_`, unique per event: use it to deduplicate. It is the same on every delivery attempt and for every subscription that receives the event.\n","isRequired":true,"uniqueKey":"oneOf.0.id","typeLabel":"string"},"created_at":{"type":"string","format":"date-time","description":"When the event was generated.","isRequired":true,"uniqueKey":"oneOf.0.created_at","typeLabel":"string\u003cdate-time>"},"type":{"type":"string","enum":["lead.created"],"isRequired":true,"uniqueKey":"oneOf.0.type","typeLabel":"enum\u003cstring>"},"data":{"type":"object","description":"A contact captured by one of the workspace's agents.","required":["id","source","agent_id","name","email","phone","custom_fields","created_at"],"properties":{"id":{"type":"string","description":"Opaque identifier prefixed with `lea_`.","isRequired":true,"uniqueKey":"oneOf.0.data.id","typeLabel":"string"},"source":{"type":"string","description":"- `widget`: the chat widget of a website, or a lead entered manually in\n the Agentova app.\n- `lead_ads`: a Meta Lead Ads form.\n- `telephony`: a phone call handled by an Agentova telephony agent.\n- `social`: an Instagram or Facebook prospect who commented a post and\n then sent their contact details (email or phone) in a private\n message to the comment automation of an Agentova agent.\n- `crm`: an incoming contact of a connected CRM (HubSpot, Monday,\n Customer.io…) for which an automation of an Agentova agent ran.\n","enum":["widget","social","telephony","lead_ads","crm"],"isRequired":true,"uniqueKey":"oneOf.0.data.source","typeLabel":"enum\u003cstring>"},"agent_id":{"type":"string","description":"Opaque identifier, prefixed with `agt_`, of the agent that captured the lead (telephony agents included).\n","isRequired":true,"uniqueKey":"oneOf.0.data.agent_id","typeLabel":"string"},"name":{"oneOf":[{"type":"string","description":"Name as captured, or `null`.","isRequired":true,"uniqueKey":"oneOf.0.data.name.oneOf.0","typeLabel":"string"},{"type":"null","description":"Name as captured, or `null`.","isRequired":true,"uniqueKey":"oneOf.0.data.name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.0.data.name","typeLabel":"string | null"},"email":{"oneOf":[{"type":"string","description":"E-mail address as captured, or `null`.","isRequired":true,"uniqueKey":"oneOf.0.data.email.oneOf.0","typeLabel":"string"},{"type":"null","description":"E-mail address as captured, or `null`.","isRequired":true,"uniqueKey":"oneOf.0.data.email.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.0.data.email","typeLabel":"string | null"},"phone":{"oneOf":[{"type":"string","description":"Phone number exactly as entered or captured, or `null`. It is not normalized: its format varies from one source to another.\n","isRequired":true,"uniqueKey":"oneOf.0.data.phone.oneOf.0","typeLabel":"string"},{"type":"null","description":"Phone number exactly as entered or captured, or `null`. It is not normalized: its format varies from one source to another.\n","isRequired":true,"uniqueKey":"oneOf.0.data.phone.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.0.data.phone","typeLabel":"string | null"},"custom_fields":{"type":"object","description":"Additional data captured with the lead (for example the answers to a Lead Ads form), as key-value pairs. Keys that start with `_` are internal to Agentova and are never returned.\n","isRequired":true,"uniqueKey":"oneOf.0.data.custom_fields","typeLabel":"object"},"created_at":{"type":"string","format":"date-time","description":"When the lead was created in Agentova.","isRequired":true,"uniqueKey":"oneOf.0.data.created_at","typeLabel":"string\u003cdate-time>"}},"isRequired":true,"uniqueKey":"oneOf.0.data","typeLabel":"object"}},"uniqueKey":"oneOf.0","typeLabel":"object"},{"type":"object","description":"Body sent to the subscribed URL. `type` (a `WebhookEvent` value) determines the shape of `data`: a `Lead` for `lead.created`, a `Run` for `run.completed`, an `Automation` for `automation.status_changed`.\n","required":["type","data","id","created_at"],"example":{"id":"evt_01HZX7B2C3D4E5F6G7H8J9K0L1","type":"lead.created","created_at":"2026-08-20T09:20:01Z","data":{"id":"lea_01HZX5M2N3P4Q5R6S7T8V9W0X1","source":"lead_ads","agent_id":"agt_01HZX3Q8K5N7P2R4S6T8V0W2Y5","name":"Jane Doe","email":"jane.doe@example.com","phone":"+33612345678","custom_fields":{},"created_at":"2026-08-20T09:20:00Z"}},"properties":{"id":{"type":"string","description":"Opaque identifier prefixed with `evt_`, unique per event: use it to deduplicate. It is the same on every delivery attempt and for every subscription that receives the event.\n","isRequired":true,"uniqueKey":"oneOf.1.id","typeLabel":"string"},"created_at":{"type":"string","format":"date-time","description":"When the event was generated.","isRequired":true,"uniqueKey":"oneOf.1.created_at","typeLabel":"string\u003cdate-time>"},"type":{"type":"string","enum":["run.completed"],"isRequired":true,"uniqueKey":"oneOf.1.type","typeLabel":"enum\u003cstring>"},"data":{"type":"object","description":"One execution of an automation: what triggered it and what it did.\n\nRuns are produced by the messaging automations (comments, stories,\nprivate messages, e-mails), by the Lead Ads automations, and by the CRM\nautomations that have an agent: one run per person of a Customer.io\nsegment handled, and one run per action received from a CRM workflow\n(for example HubSpot, Close or Typeform). The website widget produces\nno runs. Runs are kept for 90 days.\n","required":["id","automation_id","status","trigger_type","occurred_at","actions","lead_id"],"properties":{"id":{"type":"string","description":"Opaque identifier prefixed with `run_`.","isRequired":true,"uniqueKey":"oneOf.1.data.id","typeLabel":"string"},"automation_id":{"type":"string","description":"Opaque identifier prefixed with `aut_`.","isRequired":true,"uniqueKey":"oneOf.1.data.automation_id","typeLabel":"string"},"status":{"type":"string","description":"`success`: no action failed (a run without any action is also `success`). `failed`: every action failed. `partial`: some actions failed, for example an e-mail reply that could not be sent automatically and was saved as a draft instead.\n","enum":["success","partial","failed"],"isRequired":true,"uniqueKey":"oneOf.1.data.status","typeLabel":"enum\u003cstring>"},"trigger_type":{"type":"string","description":"What started the run:\n\n- `comment`: a comment on Facebook or Instagram.\n- `story_reply`: a reply to a story.\n- `message`: a private message on Facebook, Instagram or WhatsApp.\n- `email`: an e-mail received by an `email_messages` automation.\n- `lead_ads`: a Lead Ads form submission.\n- `crm_event`: an event from a CRM source.\n","enum":["comment","story_reply","message","lead_ads","crm_event","email"],"isRequired":true,"uniqueKey":"oneOf.1.data.trigger_type","typeLabel":"enum\u003cstring>"},"occurred_at":{"type":"string","format":"date-time","description":"When the run happened.","isRequired":true,"uniqueKey":"oneOf.1.data.occurred_at","typeLabel":"string\u003cdate-time>"},"actions":{"type":"array","description":"What the automation did. `type` is an open string, today one of `reply_message`, `reply_comment`, `send_dm`, `story_reply`, `send_reply`, `save_draft`, `generate_reply`, `send_message` and `add_to_crm`. The list is empty for a Lead Ads run when the automation has no action configured (the run is then `success`).\n","items":{"type":"object","required":["type","status"],"properties":{"type":{"type":"string","description":"Kind of action (open string; new values can appear).","isRequired":true,"uniqueKey":"oneOf.1.data.actions.items.[INDEX].type","typeLabel":"string"},"status":{"type":"string","description":"Outcome of the action.","enum":["success","failed"],"isRequired":true,"uniqueKey":"oneOf.1.data.actions.items.[INDEX].status","typeLabel":"enum\u003cstring>"}},"uniqueKey":"oneOf.1.data.actions.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"oneOf.1.data.actions","typeLabel":"object[]"},"lead_id":{"oneOf":[{"type":"string","description":"Opaque identifier, prefixed with `lea_`, of the lead involved, or `null`.","isRequired":true,"uniqueKey":"oneOf.1.data.lead_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Opaque identifier, prefixed with `lea_`, of the lead involved, or `null`.","isRequired":true,"uniqueKey":"oneOf.1.data.lead_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.1.data.lead_id","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"oneOf.1.data","typeLabel":"object"}},"uniqueKey":"oneOf.1","typeLabel":"object"},{"type":"object","description":"Body sent to the subscribed URL. `type` (a `WebhookEvent` value) determines the shape of `data`: a `Lead` for `lead.created`, a `Run` for `run.completed`, an `Automation` for `automation.status_changed`.\n","required":["type","data","id","created_at"],"example":{"id":"evt_01HZX7B2C3D4E5F6G7H8J9K0L1","type":"lead.created","created_at":"2026-08-20T09:20:01Z","data":{"id":"lea_01HZX5M2N3P4Q5R6S7T8V9W0X1","source":"lead_ads","agent_id":"agt_01HZX3Q8K5N7P2R4S6T8V0W2Y5","name":"Jane Doe","email":"jane.doe@example.com","phone":"+33612345678","custom_fields":{},"created_at":"2026-08-20T09:20:00Z"}},"properties":{"id":{"type":"string","description":"Opaque identifier prefixed with `evt_`, unique per event: use it to deduplicate. It is the same on every delivery attempt and for every subscription that receives the event.\n","isRequired":true,"uniqueKey":"oneOf.2.id","typeLabel":"string"},"created_at":{"type":"string","format":"date-time","description":"When the event was generated.","isRequired":true,"uniqueKey":"oneOf.2.created_at","typeLabel":"string\u003cdate-time>"},"type":{"type":"string","enum":["automation.status_changed"],"isRequired":true,"uniqueKey":"oneOf.2.type","typeLabel":"enum\u003cstring>"},"data":{"type":"object","description":"An automation of the workspace, carried out by one agent.","required":["id","name","type","provider","agent_id","agent_name","status","updated_at"],"properties":{"id":{"type":"string","description":"Opaque identifier prefixed with `aut_`. Stable for a given automation.","isRequired":true,"uniqueKey":"oneOf.2.data.id","typeLabel":"string"},"name":{"type":"string","description":"Display label in English: what the automation does, then the agent's name (for example `Comment replies — Support Agent`, or `HubSpot contacts — Support Agent` for a CRM source). For display only: it can change, and two automations can share one.\n","isRequired":true,"uniqueKey":"oneOf.2.data.name","typeLabel":"string"},"type":{"type":"string","description":"`social_comments`, `social_story` and `lead_ads` cover the Meta networks (Facebook, Instagram). `social_messages` replies to private messages on the Meta networks and on WhatsApp (the `provider` field tells them apart). `email_messages` replies to the e-mails of a Gmail, Outlook or IMAP mailbox. `crm_source` is an automation triggered by a CRM.\n","enum":["social_comments","social_story","social_messages","lead_ads","email_messages","crm_source"],"isRequired":true,"uniqueKey":"oneOf.2.data.type","typeLabel":"enum\u003cstring>"},"provider":{"type":"string","description":"The connected service, as a raw value. Messaging automations: `facebook`, `instagram`, `instagram_page`, `whatsapp`, `gmail`, `microsoft_outlook`, `imap`. CRM sources carry the name of the CRM (for example `hubspot`). Treat it as an open string: new values can appear.\n","isRequired":true,"uniqueKey":"oneOf.2.data.provider","typeLabel":"string"},"agent_id":{"type":"string","description":"Opaque identifier of the agent, prefixed with `agt_`.","isRequired":true,"uniqueKey":"oneOf.2.data.agent_id","typeLabel":"string"},"agent_name":{"type":"string","description":"Name of the agent.","isRequired":true,"uniqueKey":"oneOf.2.data.agent_name","typeLabel":"string"},"status":{"type":"string","description":"- `active`: running.\n- `paused`: paused from the Agentova app or through `PATCH`.\n- `draft`: never activated; it has to be activated from the Agentova\n app.\n- `error`: stopped by a failure that has to be fixed from the Agentova\n app (for example a lost e-mail connection, a channel that could not\n be reconnected on resume, or a subscription to the provider that\n could not be renewed).\n\n`PATCH` only acts on `active` and `paused` automations.\n\nAn automation that is deleted or deactivated in the Agentova app, or\nwhose connected account is disconnected, is no longer returned by the\nAPI (`404 automation_not_found`). When a failure is what removes it\n(revoked token, mailbox authentication refused, reconnection\nimpossible), a last `automation.status_changed` event is sent first,\nwith `status: error`. When the account is reconnected, an\n`automation.status_changed` event with `status: active` is sent for\neach automation that comes back. A deliberate deletion sends no event.\n","enum":["active","paused","draft","error"],"isRequired":true,"uniqueKey":"oneOf.2.data.status","typeLabel":"enum\u003cstring>"},"updated_at":{"type":"string","format":"date-time","description":"Date of the last change to the automation. Use it to order `automation.status_changed` events.\n","isRequired":true,"uniqueKey":"oneOf.2.data.updated_at","typeLabel":"string\u003cdate-time>"}},"isRequired":true,"uniqueKey":"oneOf.2.data","typeLabel":"object"}},"uniqueKey":"oneOf.2","typeLabel":"object"}],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"id":"evt_01HZX7B2C3D4E5F6G7H8J9K0L1","type":"lead.created","created_at":"2026-08-20T09:20:01Z","data":{"id":"lea_01HZX5M2N3P4Q5R6S7T8V9W0X1","source":"lead_ads","agent_id":"agt_01HZX3Q8K5N7P2R4S6T8V0W2Y5","name":"Jane Doe","email":"jane.doe@example.com","phone":"+33612345678","custom_fields":{},"created_at":"2026-08-20T09:20:00Z"}}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"b18bbccf-4353-46d6-a9f1-d362e7075353":{"description":"Unsubscribe: the subscription is deleted immediately, without notification, and nothing is retried.\n","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"bdccd9bc-660f-441b-8739-f35e2fe2eb55":{"description":"Delivery acknowledged (the response body is ignored)","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"fde08426-2807-458f-8cce-11d31e75c69f":{"description":"Failure: retried on the schedule (8 attempts over about 27 hours 35 minutes), then abandoned. On `429`, a `Retry-After` header is respected, up to 12 hours.\n","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"441a0939-b45e-4bfb-ba07-d3a6c4e67aea":{"description":"Failure: retried on the schedule (8 attempts over about 27 hours 35 minutes), then abandoned. On `503`, a `Retry-After` header is respected, up to 12 hours.\n","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}}},"security":{}}}}],"security":{"f233ab4c-5cea-4f37-8d2c-dd8481910b86":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"agk_live_\u003c32 characters>","description":"API key created in the Agentova app (Settings → API), sent as `Authorization: Bearer agk_live_…`. One key = one workspace: the key determines the workspace, and no workspace identifier ever travels in requests. The `Bearer` scheme is case-insensitive. A revoked key is refused immediately.\n","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"466c20a4-fdfc-49d8-9e04-77157cc9a3bf":{"url":"https://core-api.agentova.ai/v1","description":"Production, the only environment (there is no separate test environment)"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","bearerFormat":"agk_live_\u003c32 characters>","description":"API key created in the Agentova app (Settings → API), sent as `Authorization: Bearer agk_live_…`. One key = one workspace: the key determines the workspace, and no workspace identifier ever travels in requests. The `Bearer` scheme is case-insensitive. A revoked key is refused immediately.\n","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"API key created in the Agentova app (Settings → API), sent as `Authorization: Bearer agk_live_…`. One key = one workspace: the key determines the workspace, and no workspace identifier ever travels in requests. The `Bearer` scheme is case-insensitive. A revoked key is refused immediately.\n","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"openapi/openapi-v1.yaml"},"subdomain":"agentova-2c667f5d","siteName":"Agentova API","title":"Create a webhook subscription - Agentova API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"fr":{"href":"/api-reference/create-a-webhook-subscription","matchLevel":0},"en":{"href":"/en/api-reference/create-a-webhook-subscription","matchLevel":1}}},"lastModified":"2026-11-04T12:45:59.408Z","originalFileLocation":"api-reference/create-a-webhook-subscription.mdx","locale":"fr"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Subscribes a URL to one or more event types. This response is the only time the subscription secret is returned: store it to verify the signatures. - URL: HTTPS only; no private or local address; no credentials in the URL. A refused URL returns 400 invalid_request with details.parameter: url and the cause in details.reason. - Events: at least one; duplicates are accepted and ignored. - Limit: 20 active subscriptions per workspace. Beyond that, the API returns 400 invalid_request with details.max. - Ownership: the subscription belongs to the workspace; workspace admins can see and delete it in Settings → API. Revoking the key that creates it deletes the subscription as well, unless the admin unticks that option in Settings → API. The key is also revoked, with its subscriptions, when the admin who created it leaves the workspace, loses the admin role or deletes their account. Delivery (the delivery callback below): each event is sent as a POST to the subscribed URL, with a WebhookDelivery JSON body, Content-Type: application/json and User-Agent: Agentova-Webhooks/1.0. - Signature: X-Agentova-Signature: t=,v1=, where v1 is the HMAC-SHA256 of the string {t}.{raw body}, keyed with the complete secret (the whole whsec_… string). Compare in constant time and reject a t more than 5 minutes away from your clock (recommended tolerance). - Success: a 2xx status received within 10 seconds (deadline for the whole response). The response body is ignored. Redirects are not followed: a 3xx is a failure, like a timeout or a network error. - Retries: 8 attempts in total, spread over about 27 hours 35 minutes. The first attempt is immediate; after each failure, the next one comes 5 seconds, 5 minutes, 30 minutes, 2 hours, 5 hours, 10 hours and finally 10 hours later. On 429 or 503 with a Retry-After header, the next attempt waits at least that long (12 hours at most). No attempt is scheduled more than 36 hours after the event was created: the delivery is abandoned instead. - 410 Gone: the subscription is deleted immediately, without notification. Answer 410 to unsubscribe. - Disabling: a delivery is abandoned after its 8th failed attempt, or earlier at the 36-hour limit. The subscription is then disabled (disabled_at) if it has at least 3 abandoned deliveries in a row and has been failing without interruption for at least 72 hours, or at once if its URL no longer passes the address checks; workspace admins are notified. A disabled subscription cannot be re-enabled: delete it and create a new one (Zapier: turn the Zap off and on again; n8n: deactivate and reactivate the workflow). It is deleted automatically 30 days later. - At least once, in no guaranteed order: deduplicate on the event id (evt_…), which is the same on every attempt and for every subscription (keep seen ids for at least 48 hours); order events with the timestamp of the resource in data, not with their arrival order.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Agentova API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/agentova-2c667f5d/cOZ9di9FMDzG0OX5/_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/agentova-2c667f5d/cOZ9di9FMDzG0OX5/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/agentova-2c667f5d/cOZ9di9FMDzG0OX5/_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/agentova-2c667f5d/cOZ9di9FMDzG0OX5/_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/agentova-2c667f5d/cOZ9di9FMDzG0OX5/_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/agentova-2c667f5d/cOZ9di9FMDzG0OX5/_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/agentova-2c667f5d/cOZ9di9FMDzG0OX5/_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/agentova-2c667f5d/cOZ9di9FMDzG0OX5/_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/agentova-2c667f5d/cOZ9di9FMDzG0OX5/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Create a webhook subscription - Agentova API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Subscribes a URL to one or more event types. This response is the only time the subscription secret is returned: store it to verify the signatures. - URL: HTTPS only; no private or local address; no credentials in the URL. A refused URL returns 400 invalid_request with details.parameter: url and the cause in details.reason. - Events: at least one; duplicates are accepted and ignored. - Limit: 20 active subscriptions per workspace. Beyond that, the API returns 400 invalid_request with details.max. - Ownership: the subscription belongs to the workspace; workspace admins can see and delete it in Settings → API. Revoking the key that creates it deletes the subscription as well, unless the admin unticks that option in Settings → API. The key is also revoked, with its subscriptions, when the admin who created it leaves the workspace, loses the admin role or deletes their account. Delivery (the delivery callback below): each event is sent as a POST to the subscribed URL, with a WebhookDelivery JSON body, Content-Type: application/json and User-Agent: Agentova-Webhooks/1.0. - Signature: X-Agentova-Signature: t=,v1=, where v1 is the HMAC-SHA256 of the string {t}.{raw body}, keyed with the complete secret (the whole whsec_… string). Compare in constant time and reject a t more than 5 minutes away from your clock (recommended tolerance). - Success: a 2xx status received within 10 seconds (deadline for the whole response). The response body is ignored. Redirects are not followed: a 3xx is a failure, like a timeout or a network error. - Retries: 8 attempts in total, spread over about 27 hours 35 minutes. The first attempt is immediate; after each failure, the next one comes 5 seconds, 5 minutes, 30 minutes, 2 hours, 5 hours, 10 hours and finally 10 hours later. On 429 or 503 with a Retry-After header, the next attempt waits at least that long (12 hours at most). No attempt is scheduled more than 36 hours after the event was created: the delivery is abandoned instead. - 410 Gone: the subscription is deleted immediately, without notification. Answer 410 to unsubscribe. - Disabling: a delivery is abandoned after its 8th failed attempt, or earlier at the 36-hour limit. The subscription is then disabled (disabled_at) if it has at least 3 abandoned deliveries in a row and has been failing without interruption for at least 72 hours, or at once if its URL no longer passes the address checks; workspace admins are notified. A disabled subscription cannot be re-enabled: delete it and create a new one (Zapier: turn the Zap off and on again; n8n: deactivate and reactivate the workflow). It is deleted automatically 30 days later. - At least once, in no guaranteed order: deduplicate on the event id (evt_…), which is the same on every attempt and for every subscription (keep seen ids for at least 48 hours); order events with the timestamp of the resource in data, not with their arrival order.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Agentova API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.agentova.ai/api-reference/create-a-webhook-subscription\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://agentova-2c667f5d.mintlify.app/_mintlify/api/og/v2?division=API+Reference\u0026amp;title=Create+a+webhook+subscription\u0026amp;description=Subscribes+a+URL+to+one+or+more+event+types.+This+response+is+the+only%0Atime+the+subscription+%60secret%60+is+returned%3A+store+it+to+verify+the%0Asignatures.%0A%0A-+**URL**\u0026amp;theme=3bd408b6ad3e057590ca96db\u0026amp;signature=c4c0d30d13eb6c19a28c6fc835274136bc6d0f997253a0d30b439387c09e15ba\">\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=\"Create a webhook subscription - Agentova API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Subscribes a URL to one or more event types. This response is the only time the subscription secret is returned: store it to verify the signatures. - URL: HTTPS only; no private or local address; no credentials in the URL. A refused URL returns 400 invalid_request with details.parameter: url and the cause in details.reason. - Events: at least one; duplicates are accepted and ignored. - Limit: 20 active subscriptions per workspace. Beyond that, the API returns 400 invalid_request with details.max. - Ownership: the subscription belongs to the workspace; workspace admins can see and delete it in Settings → API. Revoking the key that creates it deletes the subscription as well, unless the admin unticks that option in Settings → API. The key is also revoked, with its subscriptions, when the admin who created it leaves the workspace, loses the admin role or deletes their account. Delivery (the delivery callback below): each event is sent as a POST to the subscribed URL, with a WebhookDelivery JSON body, Content-Type: application/json and User-Agent: Agentova-Webhooks/1.0. - Signature: X-Agentova-Signature: t=,v1=, where v1 is the HMAC-SHA256 of the string {t}.{raw body}, keyed with the complete secret (the whole whsec_… string). Compare in constant time and reject a t more than 5 minutes away from your clock (recommended tolerance). - Success: a 2xx status received within 10 seconds (deadline for the whole response). The response body is ignored. Redirects are not followed: a 3xx is a failure, like a timeout or a network error. - Retries: 8 attempts in total, spread over about 27 hours 35 minutes. The first attempt is immediate; after each failure, the next one comes 5 seconds, 5 minutes, 30 minutes, 2 hours, 5 hours, 10 hours and finally 10 hours later. On 429 or 503 with a Retry-After header, the next attempt waits at least that long (12 hours at most). No attempt is scheduled more than 36 hours after the event was created: the delivery is abandoned instead. - 410 Gone: the subscription is deleted immediately, without notification. Answer 410 to unsubscribe. - Disabling: a delivery is abandoned after its 8th failed attempt, or earlier at the 36-hour limit. The subscription is then disabled (disabled_at) if it has at least 3 abandoned deliveries in a row and has been failing without interruption for at least 72 hours, or at once if its URL no longer passes the address checks; workspace admins are notified. A disabled subscription cannot be re-enabled: delete it and create a new one (Zapier: turn the Zap off and on again; n8n: deactivate and reactivate the workflow). It is deleted automatically 30 days later. - At least once, in no guaranteed order: deduplicate on the event id (evt_…), which is the same on every attempt and for every subscription (keep seen ids for at least 48 hours); order events with the timestamp of the resource in data, not with their arrival order.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://agentova-2c667f5d.mintlify.app/_mintlify/api/og/v2?division=API+Reference\u0026amp;title=Create+a+webhook+subscription\u0026amp;description=Subscribes+a+URL+to+one+or+more+event+types.+This+response+is+the+only%0Atime+the+subscription+%60secret%60+is+returned%3A+store+it+to+verify+the%0Asignatures.%0A%0A-+**URL**\u0026amp;theme=3bd408b6ad3e057590ca96db\u0026amp;signature=c4c0d30d13eb6c19a28c6fc835274136bc6d0f997253a0d30b439387c09e15ba\">\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/agentova-2c667f5d/cOZ9di9FMDzG0OX5/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Agentova API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#26D8FF\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.agentova.ai/api-reference/create-a-webhook-subscription\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/create-a-webhook-subscription.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"fr\" href=\"https://docs.agentova.ai/api-reference/create-a-webhook-subscription\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://docs.agentova.ai/en/api-reference/create-a-webhook-subscription\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://docs.agentova.ai/api-reference/create-a-webhook-subscription\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.agentova.ai/#organization\",\"name\":\"Agentova API\",\"url\":\"https://docs.agentova.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/agentova-2c667f5d/Xl6jEAYNYyd4kO2m/brand/logo/logo-ink.svg?fit=max\u0026auto=format\u0026n=Xl6jEAYNYyd4kO2m\u0026q=85\u0026s=cd9afebdaa853d2794ed37edbe695f3b\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.agentova.ai#website\",\"name\":\"Agentova API\",\"url\":\"https://docs.agentova.ai\",\"publisher\":{\"@id\":\"https://docs.agentova.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.agentova.ai/api-reference/create-a-webhook-subscription#webpage\",\"url\":\"https://docs.agentova.ai/api-reference/create-a-webhook-subscription\",\"name\":\"Create a webhook subscription\",\"description\":\"Subscribes a URL to one or more event types. This response is the only time the subscription secret is returned: store it to verify the signatures. - URL: HTTPS only; no private or local address; no credentials in the URL. A refused URL returns 400 invalid_request with details.parameter: url and the cause in details.reason. - Events: at least one; duplicates are accepted and ignored. - Limit: 20 active subscriptions per workspace. Beyond that, the API returns 400 invalid_request with details.max. - Ownership: the subscription belongs to the workspace; workspace admins can see and delete it in Settings → API. Revoking the key that creates it deletes the subscription as well, unless the admin unticks that option in Settings → API. The key is also revoked, with its subscriptions, when the admin who created it leaves the workspace, loses the admin role or deletes their account. Delivery (the delivery callback below): each event is sent as a POST to the subscribed URL, with a WebhookDelivery JSON body, Content-Type: application/json and User-Agent: Agentova-Webhooks/1.0. - Signature: X-Agentova-Signature: t=,v1=, where v1 is the HMAC-SHA256 of the string {t}.{raw body}, keyed with the complete secret (the whole whsec_… string). Compare in constant time and reject a t more than 5 minutes away from your clock (recommended tolerance). - Success: a 2xx status received within 10 seconds (deadline for the whole response). The response body is ignored. Redirects are not followed: a 3xx is a failure, like a timeout or a network error. - Retries: 8 attempts in total, spread over about 27 hours 35 minutes. The first attempt is immediate; after each failure, the next one comes 5 seconds, 5 minutes, 30 minutes, 2 hours, 5 hours, 10 hours and finally 10 hours later. On 429 or 503 with a Retry-After header, the next attempt waits at least that long (12 hours at most). No attempt is scheduled more than 36 hours after the event was created: the delivery is abandoned instead. - 410 Gone: the subscription is deleted immediately, without notification. Answer 410 to unsubscribe. - Disabling: a delivery is abandoned after its 8th failed attempt, or earlier at the 36-hour limit. The subscription is then disabled (disabled_at) if it has at least 3 abandoned deliveries in a row and has been failing without interruption for at least 72 hours, or at once if its URL no longer passes the address checks; workspace admins are notified. A disabled subscription cannot be re-enabled: delete it and create a new one (Zapier: turn the Zap off and on again; n8n: deactivate and reactivate the workflow). It is deleted automatically 30 days later. - At least once, in no guaranteed order: deduplicate on the event id (evt_…), which is the same on every attempt and for every subscription (keep seen ids for at least 48 hours); order events with the timestamp of the resource in data, not with their arrival order.\",\"dateModified\":\"2026-11-04T12:45:59.408Z\",\"isPartOf\":{\"@id\":\"https://docs.agentova.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.agentova.ai/api-reference/create-a-webhook-subscription#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.agentova.ai/api-reference/create-a-webhook-subscription#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"API Reference\",\"item\":\"https://docs.agentova.ai/api-reference/list-automations\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Create a webhook subscription\",\"item\":\"https://docs.agentova.ai/api-reference/create-a-webhook-subscription\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.agentova.ai/api-reference/create-a-webhook-subscription#apireference\",\"headline\":\"Create a webhook subscription\",\"name\":\"Create a webhook subscription\",\"description\":\"Subscribes a URL to one or more event types. This response is the only time the subscription secret is returned: store it to verify the signatures. - URL: HTTPS only; no private or local address; no credentials in the URL. A refused URL returns 400 invalid_request with details.parameter: url and the cause in details.reason. - Events: at least one; duplicates are accepted and ignored. - Limit: 20 active subscriptions per workspace. Beyond that, the API returns 400 invalid_request with details.max. - Ownership: the subscription belongs to the workspace; workspace admins can see and delete it in Settings → API. Revoking the key that creates it deletes the subscription as well, unless the admin unticks that option in Settings → API. The key is also revoked, with its subscriptions, when the admin who created it leaves the workspace, loses the admin role or deletes their account. Delivery (the delivery callback below): each event is sent as a POST to the subscribed URL, with a WebhookDelivery JSON body, Content-Type: application/json and User-Agent: Agentova-Webhooks/1.0. - Signature: X-Agentova-Signature: t=,v1=, where v1 is the HMAC-SHA256 of the string {t}.{raw body}, keyed with the complete secret (the whole whsec_… string). Compare in constant time and reject a t more than 5 minutes away from your clock (recommended tolerance). - Success: a 2xx status received within 10 seconds (deadline for the whole response). The response body is ignored. Redirects are not followed: a 3xx is a failure, like a timeout or a network error. - Retries: 8 attempts in total, spread over about 27 hours 35 minutes. The first attempt is immediate; after each failure, the next one comes 5 seconds, 5 minutes, 30 minutes, 2 hours, 5 hours, 10 hours and finally 10 hours later. On 429 or 503 with a Retry-After header, the next attempt waits at least that long (12 hours at most). No attempt is scheduled more than 36 hours after the event was created: the delivery is abandoned instead. - 410 Gone: the subscription is deleted immediately, without notification. Answer 410 to unsubscribe. - Disabling: a delivery is abandoned after its 8th failed attempt, or earlier at the 36-hour limit. The subscription is then disabled (disabled_at) if it has at least 3 abandoned deliveries in a row and has been failing without interruption for at least 72 hours, or at once if its URL no longer passes the address checks; workspace admins are notified. A disabled subscription cannot be re-enabled: delete it and create a new one (Zapier: turn the Zap off and on again; n8n: deactivate and reactivate the workflow). It is deleted automatically 30 days later. - At least once, in no guaranteed order: deduplicate on the event id (evt_…), which is the same on every attempt and for every subscription (keep seen ids for at least 48 hours); order events with the timestamp of the resource in data, not with their arrival order.\",\"url\":\"https://docs.agentova.ai/api-reference/create-a-webhook-subscription\",\"mainEntityOfPage\":{\"@id\":\"https://docs.agentova.ai/api-reference/create-a-webhook-subscription#webpage\"},\"dateModified\":\"2026-11-04T12:45:59.408Z\",\"publisher\":{\"@id\":\"https://docs.agentova.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.agentova.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Agentova API\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Agentova API","nav":{"global":null,"languages":[{"language":"fr","navbar":{"links":[{"href":"/support","label":"Support"}],"primary":{"type":"button","label":"Contacter le support","href":"mailto:contact@agentova.ai"}},"tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":""}]},{"tab":"Zapier","pages":[{"title":"Zapier","href":"/zapier/overview"}]},{"tab":"n8n","pages":[{"title":"n8n","href":"/n8n/overview"}]},{"tab":"Référence de l'API","groups":[{"group":"API Reference","pages":[{"title":"List automations","deprecated":null,"version":null,"openapi":"/openapi/openapi-v1.yaml get /automations","href":"/api-reference/list-automations"},{"title":"Retrieve an automation","deprecated":null,"version":null,"openapi":"/openapi/openapi-v1.yaml get /automations/{id}","href":"/api-reference/retrieve-an-automation"},{"title":"Update an automation's status","deprecated":null,"version":null,"openapi":"/openapi/openapi-v1.yaml patch /automations/{id}","href":"/api-reference/update-an-automations-status"},{"title":"List runs of an automation","deprecated":null,"version":null,"openapi":"/openapi/openapi-v1.yaml get /automations/{id}/runs","href":"/api-reference/list-runs-of-an-automation"},{"title":"List runs","deprecated":null,"version":null,"openapi":"/openapi/openapi-v1.yaml get /runs","href":"/api-reference/list-runs"},{"title":"List leads","deprecated":null,"version":null,"openapi":"/openapi/openapi-v1.yaml get /leads","href":"/api-reference/list-leads"},{"title":"List webhook subscriptions","description":"Lists all the webhook subscriptions of the workspace, whichever API key created them, including disabled ones (`disabled_at` set) until they are deleted automatically, 30 days after being disabled. Not paginated. The full `url` is returned only for the subscriptions created with the calling API key; for the others, `url` is reduced to its origin (for example `https://hooks.zapier.com`), since the path of a hook URL carries the connector's secret token.\n","deprecated":null,"version":null,"openapi":"/openapi/openapi-v1.yaml get /webhooks","href":"/api-reference/list-webhook-subscriptions"},{"title":"Create a webhook subscription","deprecated":null,"version":null,"openapi":"/openapi/openapi-v1.yaml post /webhooks","href":"/api-reference/create-a-webhook-subscription"},{"title":"Delete a webhook subscription","description":"Deletes the subscription and its delivery log; nothing more is sent to its URL. Returns `204` only once: deleting it again returns `404 webhook_not_found` (not idempotent).\n","deprecated":null,"version":null,"openapi":"/openapi/openapi-v1.yaml delete /webhooks/{id}","href":"/api-reference/delete-a-webhook-subscription"}]}]}]},{"language":"en","navbar":{"links":[{"href":"/en/support","label":"Support"}],"primary":{"type":"button","label":"Contact support","href":"mailto:contact@agentova.ai"}},"pages":[{"title":"en","href":"/en/api-reference/create-a-webhook-subscription"}]}]},"basePath":"","title":"Create a webhook subscription - Agentova API","buildId":"dpl_345ReqzYaAjzS9QpeJemsKdb7KDj","deploymentId":"dpl_345ReqzYaAjzS9QpeJemsKdb7KDj","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-C8RPHPxo.js","utils-0BK-9q6z.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DfjzsUJT.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-B4v9psJ4.js","snippetPresets-CpTQv-Ez.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-BNP-Fvr0.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BSgu6h1D.js","shallow-Biv1i9Gs.js","getApiPlaygroundDisplay-BoGOXhtF.js","CodeSnippet-DvQoT18_.js","CodeSnippets-Dnpa15xT.js","Page-Buji1S4J.js","getPastedJson-xAIyhUFE.js","icon-S6FBih11.js","MethodPill-SaYeUZyk.js","DuplicateIcon-Cs-p3v2Q.js","createIcon-DjCFEoHq.js","DynamicMarkdown-BcnBltEQ.js","SectionHeading-BUBl0eEF.js","axios-vUo_bRtp.js","Markdown-h4cOoD8d.js","clsx-B2v50t8t.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-DJnKvr0g.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-BHrrjR1K.js"]}