# Ingest an inbound webhook trigger (/docs/api-reference/rules-automation/post-api-v1-webhooks-webhook-id)

Send an event to a published Rules Automation webhook trigger at https://rule-automation.transcend.io or https://rule-automation.us.transcend.io. N.B. This is ___not___ a Sombra or api.transcend.io route.

## POST /api/v1/webhooks/{webhookId}

```json
{
  "servers": [
    {
      "url": "https://multi-tenant.sombra.transcend.io",
      "description": "Multi-tenant (EU)"
    },
    {
      "url": "https://multi-tenant.sombra.us.transcend.io",
      "description": "Multi-tenant (US)"
    },
    {
      "description": "Self-hosted",
      "url": "https://_yourOrganizationSombraURL_.com"
    },
    {
      "description": "Preference Store in Europe",
      "url": "https://consent.transcend.io"
    },
    {
      "description": "Preference Store in the U.S.",
      "url": "https://consent.us.transcend.io"
    },
    {
      "description": "Rules Automation webhook ingestion (EU)",
      "url": "https://rule-automation.transcend.io"
    },
    {
      "description": "Rules Automation webhook ingestion (US)",
      "url": "https://rule-automation.us.transcend.io"
    }
  ],
  "security": [
    {
      "Transcend_API_Key": [],
      "Sombra_Token": [],
      "Transcend_API_Key_If_Multitenant": []
    }
  ],
  "pathParameters": [
    {
      "schema": {
        "type": "string",
        "format": "uuid"
      },
      "name": "webhookId",
      "in": "path",
      "required": true,
      "description": "The webhook trigger ID (`maestroRuleTriggers.id`). Displayed in the Admin Dashboard when you create or view a webhook trigger on a Rules Automation rule."
    },
    {
      "$ref": "#/components/parameters/content-type-application-json"
    }
  ],
  "operation": {
    "summary": "Ingest an inbound webhook trigger",
    "description": "Send an event to a published Rules Automation webhook trigger at `https://rule-automation.transcend.io` or `https://rule-automation.us.transcend.io`. ***N.B.*** This is ___not___ a Sombra or `api.transcend.io` route.\n\nTranscend validates the request, verifies the HMAC signature, and enqueues the payload for asynchronous rule evaluation and action execution (for example, a Custom Function). The caller receives an immediate acknowledgment and is not blocked waiting for action completion.\n\nConfigure the signing key, algorithm (`sha256` or `sha1`), signature header, and optional timestamp fields in the Admin Dashboard when creating the webhook trigger. See the [Rules Automation webhook guide](https://docs.transcend.io/docs/rules-automation/webhook-user-guide) for details.",
    "operationId": "post-api-v1-webhooks-webhook-id",
    "tags": [
      "Rules Automation"
    ],
    "security": [
      {
        "Webhook_Hmac_Signature": []
      }
    ],
    "requestBody": {
      "required": true,
      "content": {
        "application/json": {
          "schema": {
            "description": "Any JSON payload sent by the external provider — a JSON object or array. The entire request body is forwarded unchanged to the rule's action (for example, a Custom Function), so there is no fixed schema."
          },
          "examples": {
            "User created event": {
              "value": {
                "event": "user.created",
                "user": {
                  "id": "usr_123",
                  "email": "user@example.com"
                },
                "timestamp": "2026-06-08T16:07:14Z"
              }
            }
          }
        }
      }
    },
    "responses": {
      "200": {
        "description": "Webhook accepted for asynchronous processing. Custom Function or other action execution happens after this response.",
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "required": [
                "accepted",
                "messageId"
              ],
              "properties": {
                "accepted": {
                  "type": "boolean",
                  "enum": [
                    true
                  ],
                  "description": "Whether the webhook was accepted for asynchronous processing."
                },
                "messageId": {
                  "type": "string",
                  "format": "uuid",
                  "description": "Unique message ID for tracing and deduplication."
                }
              }
            },
            "examples": {
              "Accepted": {
                "value": {
                  "accepted": true,
                  "messageId": "550e8400-e29b-41d4-a716-446655440000"
                }
              }
            }
          }
        }
      },
      "400": {
        "description": "Malformed request body.",
        "content": {
          "application/json": {
            "schema": {
              "description": "",
              "type": "object",
              "required": [
                "error"
              ],
              "properties": {
                "error": {
                  "type": "string",
                  "description": "Human-readable error message."
                }
              }
            },
            "examples": {
              "Invalid JSON": {
                "value": {
                  "error": "Invalid JSON payload"
                }
              }
            }
          }
        }
      },
      "401": {
        "description": "HMAC signature verification failed.",
        "content": {
          "application/json": {
            "schema": {
              "description": "",
              "type": "object",
              "required": [
                "error"
              ],
              "properties": {
                "error": {
                  "type": "string",
                  "description": "Human-readable error message."
                }
              }
            },
            "examples": {
              "Invalid signature": {
                "value": {
                  "error": "Invalid webhook signature"
                }
              }
            }
          }
        }
      },
      "404": {
        "description": "Webhook trigger not found or rule is not active.",
        "content": {
          "application/json": {
            "schema": {
              "description": "",
              "type": "object",
              "required": [
                "error"
              ],
              "properties": {
                "error": {
                  "type": "string",
                  "description": "Human-readable error message."
                }
              }
            },
            "examples": {
              "Webhook not found": {
                "value": {
                  "error": "Webhook not found"
                }
              }
            }
          }
        }
      },
      "405": {
        "description": "Only POST is supported.",
        "content": {
          "application/json": {
            "schema": {
              "description": "",
              "type": "object",
              "required": [
                "error"
              ],
              "properties": {
                "error": {
                  "type": "string",
                  "description": "Human-readable error message."
                }
              }
            },
            "examples": {
              "Method not allowed": {
                "value": {
                  "error": "Method not allowed"
                }
              }
            }
          }
        }
      },
      "413": {
        "description": "Request body exceeds the maximum payload size (default 1 MB).",
        "content": {
          "application/json": {
            "schema": {
              "description": "",
              "type": "object",
              "required": [
                "error"
              ],
              "properties": {
                "error": {
                  "type": "string",
                  "description": "Human-readable error message."
                }
              }
            },
            "examples": {
              "Payload too large": {
                "value": {
                  "error": "Payload too large"
                }
              }
            }
          }
        }
      },
      "415": {
        "description": "Content-Type must be application/json.",
        "content": {
          "application/json": {
            "schema": {
              "description": "",
              "type": "object",
              "required": [
                "error"
              ],
              "properties": {
                "error": {
                  "type": "string",
                  "description": "Human-readable error message."
                }
              }
            },
            "examples": {
              "Unsupported content type": {
                "value": {
                  "error": "Unsupported content type"
                }
              }
            }
          }
        }
      },
      "429": {
        "description": "Rate limit exceeded. The response includes a Retry-After header (seconds). Default limits: 100 requests per webhook and 1,000 requests per organization per 60-second window.",
        "headers": {
          "Retry-After": {
            "schema": {
              "type": "integer"
            },
            "description": "Seconds to wait before retrying."
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "description": "",
              "type": "object",
              "required": [
                "error"
              ],
              "properties": {
                "error": {
                  "type": "string",
                  "description": "Human-readable error message."
                }
              }
            },
            "examples": {
              "Rate limit exceeded": {
                "value": {
                  "error": "Rate limit exceeded"
                }
              }
            }
          }
        }
      },
      "500": {
        "description": "Internal server error.",
        "content": {
          "application/json": {
            "schema": {
              "description": "",
              "type": "object",
              "required": [
                "error"
              ],
              "properties": {
                "error": {
                  "type": "string",
                  "description": "Human-readable error message."
                }
              }
            },
            "examples": {
              "Internal server error": {
                "value": {
                  "error": "Internal server error"
                }
              }
            }
          }
        }
      }
    }
  }
}
```