> ## Documentation Index
> Fetch the complete documentation index at: https://redo-44af351d-docs-v3-graphql-api-reference.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# createWebhookEndpoint

> Create a webhook endpoint. Returns the signing secret once. Errors if an endpoint with the same URL already exists.

**Required scopes:**
[`webhooks_write`](/docs/api-reference/v3/reference/scopes#scope-webhooks_write)

## Arguments

<ResponseField name="input" type={<a href="/docs/api-reference/v3/reference/webhooks/create-webhook-endpoint-input">CreateWebhookEndpointInput!</a>} required>
  <Expandable title="fields" lazyRender>
    <ResponseField name="description" type="String">
      An optional merchant-supplied label for the endpoint.
    </ResponseField>

    <ResponseField name="topics" type={<a href="/docs/api-reference/v3/reference/webhooks/webhook-topic">[WebhookTopic!]!</a>} required>
      The set of topics the endpoint should subscribe to.
    </ResponseField>

    <ResponseField name="url" type="String!" required>
      The destination URL deliveries are POSTed to.
    </ResponseField>
  </Expandable>
</ResponseField>

## Returns

<ResponseField name="createWebhookEndpoint" type={<a href="/docs/api-reference/v3/reference/webhooks/create-webhook-endpoint-result">CreateWebhookEndpointResult!</a>} required>
  The result of creating a webhook endpoint.

  <Expandable title="fields" lazyRender>
    <ResponseField name="id" type="ID!" required>
      The id of the newly-created endpoint.
    </ResponseField>

    <ResponseField name="secret" type="String!" required>
      The signing secret, returned once at creation. Store it now — it isn't shown again.
    </ResponseField>
  </Expandable>
</ResponseField>

## Example

```graphql theme={null}
mutation {
  createWebhookEndpoint(input: { ... }) {
    id
    secret
  }
}
```
