diff --git a/api/services/telephony/ari_manager.py b/api/services/telephony/ari_manager.py
index f24b64e..a9537ba 100644
--- a/api/services/telephony/ari_manager.py
+++ b/api/services/telephony/ari_manager.py
@@ -656,9 +656,7 @@ class ARIConnection:
# pending bridge entry regardless of ordering.
await self._mark_ext_channel(ext_channel_id)
await self._set_channel_run(ext_channel_id, workflow_run_id)
- await self._set_pending_bridge(
- ext_channel_id, channel_id, workflow_run_id
- )
+ await self._set_pending_bridge(ext_channel_id, channel_id, workflow_run_id)
await db_client.update_workflow_run(
run_id=int(workflow_run_id),
gathered_context={"ext_channel_id": ext_channel_id},
diff --git a/api/services/workflow/dto.py b/api/services/workflow/dto.py
index 563013b..dc26843 100644
--- a/api/services/workflow/dto.py
+++ b/api/services/workflow/dto.py
@@ -36,12 +36,6 @@ class CustomHeaderDTO(BaseModel):
value: str
-class RetryConfigDTO(BaseModel):
- enabled: bool = False
- max_retries: int = 3
- retry_delay_seconds: int = 5
-
-
# ─────────────────────────────────────────────────────────────────────────
# Per-type node data classes.
#
@@ -130,7 +124,6 @@ class WebhookNodeData(_NodeDataBase):
credential_uuid: Optional[str] = None
custom_headers: Optional[list[CustomHeaderDTO]] = None
payload_template: Optional[dict] = None
- retry_config: Optional[RetryConfigDTO] = None
class QANodeData(_NodeDataBase):
diff --git a/api/services/workflow/node_specs/webhook.py b/api/services/workflow/node_specs/webhook.py
index 2844878..37d17f6 100644
--- a/api/services/workflow/node_specs/webhook.py
+++ b/api/services/workflow/node_specs/webhook.py
@@ -108,15 +108,6 @@ SPEC = NodeSpec(
"transcript_url": "{{transcript_url}}",
},
),
- PropertySpec(
- name="retry_config",
- type=PropertyType.json,
- display_name="Retry Configuration",
- description=(
- "Optional retry settings: `enabled` (bool), `max_retries` "
- "(int), `retry_delay_seconds` (int)."
- ),
- ),
],
examples=[
NodeExample(
diff --git a/docs/integrations/telephony/asterisk-ari.mdx b/docs/integrations/telephony/asterisk-ari.mdx
index 8a40dcf..2bd4474 100644
--- a/docs/integrations/telephony/asterisk-ari.mdx
+++ b/docs/integrations/telephony/asterisk-ari.mdx
@@ -74,14 +74,14 @@ Replace `dograh` with the app name you configured in `ari.conf` and in Dograh.
Dograh uses Asterisk's external media streaming to send and receive audio over WebSocket. Configure a WebSocket client connection that points to your Dograh instance:
```ini
-[dograh_staging]
+[dograh]
type = websocket_client
-uri = ws://your-dograh-host:port/ws/audio
+uri = ws://your-dograh-host:port/api/v1/telephony/ws/ari
protocols = audio
```
-The section name (e.g., `dograh_staging`) is the **WebSocket Client Name** you'll enter in the Dograh telephony configuration. This name tells Asterisk which WebSocket connection to use for external media streaming during calls.
+The section name (e.g., `dograh`) is the **WebSocket Client Name** you'll enter in the Dograh telephony configuration. This name tells Asterisk which WebSocket connection to use for external media streaming during calls.
Refer to the [Asterisk WebSocket documentation](https://docs.asterisk.org/) for additional `websocket_client.conf` options and TLS configuration.
@@ -102,7 +102,7 @@ Configure the following fields:
| **ARI Endpoint URL** | HTTP base URL of your Asterisk ARI server | `http://asterisk.example.com:8088` |
| **Stasis App Name** | The ARI username configured in `ari.conf` | `dograh` |
| **App Password** | The ARI password configured in `ari.conf` | `your_secure_password` |
-| **WebSocket Client Name** | The connection name from `websocket_client.conf` | `dograh_staging` |
+| **WebSocket Client Name** | The connection name from `websocket_client.conf` | `dograh` |
| **From Extensions** | Optional SIP extensions or trunk numbers for outbound calls | `PJSIP/6001` or `6001` |
### Step 3: Save and Add Extensions
diff --git a/sdk/python/src/dograh_sdk/_generated_models.py b/sdk/python/src/dograh_sdk/_generated_models.py
index 6f12f2f..b017934 100644
--- a/sdk/python/src/dograh_sdk/_generated_models.py
+++ b/sdk/python/src/dograh_sdk/_generated_models.py
@@ -1,6 +1,6 @@
# generated by datamodel-codegen:
-# filename: dograh-openapi-XXXXXX.json.Zvc0Wos2dk
-# timestamp: 2026-05-12T13:08:52+00:00
+# filename: dograh-openapi-XXXXXX.json.BPTCZt07wQ
+# timestamp: 2026-05-13T16:22:23+00:00
from __future__ import annotations
diff --git a/sdk/python/src/dograh_sdk/typed/webhook.py b/sdk/python/src/dograh_sdk/typed/webhook.py
index fe35bf6..993a74e 100644
--- a/sdk/python/src/dograh_sdk/typed/webhook.py
+++ b/sdk/python/src/dograh_sdk/typed/webhook.py
@@ -76,9 +76,3 @@ class Webhook(TypedNode):
`{{annotations.qa_xxx}}`, etc.
"""
- retry_config: Optional[dict[str, Any]] = None
- """
- Optional retry settings: `enabled` (bool), `max_retries` (int),
- `retry_delay_seconds` (int).
- """
-
diff --git a/sdk/typescript/src/typed/webhook.ts b/sdk/typescript/src/typed/webhook.ts
index 1058285..f3d39f2 100644
--- a/sdk/typescript/src/typed/webhook.ts
+++ b/sdk/typescript/src/typed/webhook.ts
@@ -55,10 +55,6 @@ export interface Webhook {
* JSON body of the request. Values are Jinja-rendered against the run context — `{{workflow_run_id}}`, `{{gathered_context.foo}}`, `{{annotations.qa_xxx}}`, etc.
*/
payload_template?: Record;
- /**
- * Optional retry settings: `enabled` (bool), `max_retries` (int), `retry_delay_seconds` (int).
- */
- retry_config?: Record;
}
/** Factory — sets `type` for you so you don't repeat the discriminator. */
diff --git a/ui/src/components/flow/types.ts b/ui/src/components/flow/types.ts
index 4a09451..a568b91 100644
--- a/ui/src/components/flow/types.ts
+++ b/ui/src/components/flow/types.ts
@@ -43,11 +43,6 @@ export type FlowNodeData = {
credential_uuid?: string;
custom_headers?: Array<{ key: string; value: string }>;
payload_template?: Record;
- retry_config?: {
- enabled: boolean;
- max_retries: number;
- retry_delay_seconds: number;
- };
// QA node specific
qa_enabled?: boolean;
qa_system_prompt?: string;