---
search:
  tags:
    - Merchant Webhooks
    - PUT
seo:
  description: >-
    Configure verified-domain webhook; secret shown once. Reference for the PUT
    /v1/merchants/{id}/webhook endpoint in the agentsub Gateway API.
sidebar:
  label: Configure verified-domain webhook; secret shown once
  badge: PUT
title: Configure verified-domain webhook; secret shown once
type: openapi-operation
---
`PUT /v1/merchants/{id}/webhook`

**Request body** (`application/json`, required)

- `url` (string<uri>, required) — Public HTTPS URL on the verified merchant domain or subdomain; no query, fragment or credentials
- `enabled` (boolean)

Request body example:

```json
{
  "url": "http://example.com",
  "enabled": true
}
```

**Responses**

- `200` — Successful response
- `401` — \`unauthorized\` problem; live 401s advertise \`WWW-Authenticate: Bearer resource\_metadata=...\`
- `403` — Identity, ownership, scope or policy denied (\`human\_required\`, \`owner\_claim\_required\`, \`scope\_required\`, \`FROZEN\`, \`CAP\_EXCEEDED\`, \`SCOPE\_FORBIDDEN\`)
- `503` — Runtime or provider configuration unavailable (\`runtime\_configuration\_required\`, \`signing\_configuration\_required\`, \`runtime\_unavailable\`, \`workspace\_unavailable\`, \`provider\_configuration\_required\`)

Response example, 200:

```json
{
  "configuration": {
    "configured": true,
    "enabled": true,
    "queueConfigured": true,
    "merchantId": "string",
    "url": "http://example.com",
    "createdAt": 0,
    "updatedAt": 0
  },
  "webhookSecret": "string",
  "notice": "string"
}
```
