---
title: "Create webhook endpoint"
method: POST
path: "/api/v3.1/webhook_endpoints"
tags: ["Webhook Endpoints"]
---

# Create webhook endpoint

`POST /api/v3.1/webhook_endpoints`

Creates a shared webhook endpoint for a toolkit + OAuth app + project. Returns the webhook URL that the customer registers in their app dashboard. Idempotent — returns existing endpoint if one already exists for this toolkit + client_id + project.

## Request body

- object
  - `toolkit_slug` string, required — Toolkit identifier (e.g., slack, discord)
  - `client_id` string, required — OAuth app client ID — identifies which app this endpoint is for

## Response `200`

Existing webhook endpoint returned

- object
  - `id` string, required — Webhook endpoint nano ID
  - `toolkit_slug` string, required — Toolkit this endpoint is for
  - `client_id` string, nullable, required — OAuth app client ID
  - `webhook_url` string, required — The webhook URL to register with the provider
  - `data` object, nullable, required — Configured fields with secret values masked
  - `created_at` string, required — ISO 8601 timestamp

## Other responses

- `201` — Webhook endpoint created
- `400` — Bad request
- `401` — Unauthorized
- `404` — Not found
- `500` — Internal server error

---

[API](https://skmtc.net/composiohq/apis/composio-platform-api-v3-1.md) · [All operations](https://skmtc.net/composiohq/apis/composio-platform-api-v3-1/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/composiohq/composio-platform-api-v3-1/revisions/4239836857f8/schema)
