> ## Documentation Index
> Fetch the complete documentation index at: https://developers.circle.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Update a webhook subscription

> Update a webhook subscription. Metadata fields can be updated independently. To update filters, provide `notificationTypes`, `addresses`, and `domains` together; those fields fully replace the existing filters.




## OpenAPI

````yaml openapi/gateway.yaml patch /v2/notifications/subscriptions/permissionless/{id}
openapi: 3.0.3
info:
  title: Circle Gateway
  version: 1.0.0
  description: >
    Circle Gateway allows you to create a chain-abstracted USDC balance and
    transfer it instantly to any supported destination chain.
servers:
  - url: https://gateway-api-testnet.circle.com
  - url: https://gateway-api.circle.com
security: []
tags:
  - name: Gateway
    description: >-
      Endpoints for getting a unified USDC balance and creating attestations for
      transfer
  - name: Gateway Batch
    description: Endpoints for batch processing of EIP-3009 authorizations
  - name: Gateway x402
    description: Endpoints for x402 payment protocol integration
  - name: Webhook Subscriptions
    description: Manage webhook subscriptions for Gateway event notifications.
paths:
  /v2/notifications/subscriptions/permissionless/{id}:
    servers:
      - url: https://api.circle.com
    patch:
      tags:
        - Webhook Subscriptions
      summary: Update a webhook subscription
      description: >
        Update a webhook subscription. Metadata fields can be updated
        independently. To update filters, provide `notificationTypes`,
        `addresses`, and `domains` together; those fields fully replace the
        existing filters.
      operationId: updatePermissionlessSubscription
      parameters:
        - $ref: '#/components/parameters/Id'
        - $ref: '#/components/parameters/XRequestId'
      requestBody:
        $ref: '#/components/requestBodies/UpdatePermissionlessSubscription'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PermissionlessSubscriptionResponse'
          description: Successfully updated webhook subscription.
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/NotAuthorized'
        '404':
          $ref: '#/components/responses/NotFound'
      security:
        - BearerAuth: []
components:
  parameters:
    Id:
      name: id
      description: The universally unique identifier of the resource.
      in: path
      required: true
      schema:
        type: string
        format: uuid
        example: b3d9d2d5-4c12-4946-a09d-953e82fae2b0
    XRequestId:
      name: X-Request-Id
      in: header
      description: >
        Developer-provided identifier for this request, used for tracing
        requests in Wallets API logs and the Developer Console, and when
        communicating with Circle Support.

        **Must be a UUID to appear in logs.** Non-UUID values are accepted by
        the API but are ignored by logging and tracing systems.
      schema:
        $ref: '#/components/schemas/XRequestId'
  requestBodies:
    UpdatePermissionlessSubscription:
      content:
        application/json:
          schema:
            type: object
            minProperties: 1
            description: >
              Fields to update on a subscription. Metadata fields can be updated
              independently. To update filters, provide `notificationTypes`,
              `addresses`, and `domains` together; those fields fully replace
              the existing filters when provided.
            properties:
              environment:
                $ref: '#/components/schemas/PermissionlessEnvironment'
              name:
                type: string
                description: Name of the subscription.
                example: Gateway Webhooks
              enabled:
                type: boolean
                description: Whether the subscription is enabled.
                example: true
              notificationTypes:
                type: array
                description: >
                  The notification types to subscribe to. Must be provided
                  together with `addresses` and `domains` when changing filters.
                  Fully replaces the existing list on update.
                items:
                  $ref: '#/components/schemas/PermissionlessNotificationType'
                example:
                  - gateway.deposit.finalized
                  - gateway.mint.finalized
              addresses:
                type: array
                description: >
                  The EVM or Solana wallet addresses to monitor. Must be
                  provided together with `notificationTypes` and `domains` when
                  changing filters. Fully replaces the existing list on update.
                items:
                  type: string
                example:
                  - '0x1234567890abcdef1234567890abcdef12345678'
                  - '0xabcdef1234567890abcdef1234567890abcdef12'
              domains:
                type: array
                description: >
                  The CCTP domain identifiers. Must be provided together with
                  `notificationTypes` and `addresses` when changing filters.
                  Fully replaces the existing list on update.
                items:
                  type: string
                example:
                  - '26'
                  - '3'
      required: true
      description: Schema for the request payload to update a subscription.
  schemas:
    PermissionlessSubscriptionResponse:
      title: PermissionlessSubscriptionResponse
      type: object
      properties:
        data:
          $ref: '#/components/schemas/PermissionlessSubscription'
    XRequestId:
      type: string
      format: uuid
      description: >-
        A unique identifier, which can be helpful for identifying a request when
        communicating with Circle support.
      example: 2adba88e-9d63-44bc-b975-9b6ae3440dde
    PermissionlessEnvironment:
      type: string
      description: >-
        The environment for the subscription. Use `TEST` to receive testnet
        events or `LIVE` to receive mainnet events.
      enum:
        - TEST
        - LIVE
      example: TEST
    PermissionlessNotificationType:
      type: string
      description: >
        Notification type for Gateway webhook subscriptions. Omit
        `notificationTypes` or use

        `gateway.*` to subscribe to all current and future Gateway notification
        types. Use individual

        event types to restrict delivery to specific Gateway events.
      enum:
        - gateway.*
        - gateway.deposit.finalized
        - gateway.mint.finalized
        - gateway.mint.forwarded
    PermissionlessSubscription:
      type: object
      title: PermissionlessSubscription
      description: >-
        Contains information about a permissionless webhook notification
        subscription.
      required:
        - id
        - endpoint
        - enabled
        - notificationTypes
        - restricted
        - addresses
        - domains
        - environment
        - createDate
        - updateDate
      properties:
        id:
          $ref: '#/components/schemas/Id'
        name:
          type: string
          description: Name of the webhook notification subscription.
          example: Gateway Webhooks
        endpoint:
          type: string
          description: >-
            URL of the endpoint subscribing to notifications. Must be publicly
            accessible, use HTTPS, and respond with a 2XX status to a POST
            request.
          example: https://example.org/handler/for/notifications
        enabled:
          type: boolean
          description: >-
            Whether the subscription is enabled. `true` indicates the
            subscription is enabled.
          example: true
        notificationTypes:
          type: array
          description: >-
            The notification types on which a notification will be sent.
            `gateway.*` indicates all current and future Gateway notification
            types.
          items:
            $ref: '#/components/schemas/PermissionlessNotificationType'
          example:
            - gateway.*
        restricted:
          type: boolean
          description: >-
            Whether the webhook is restricted to specific notification types. An
            unrestricted webhook will notify on all current and future
            notification types for the subscribed products. A restricted webhook
            will only notify on the notification types in the
            `notificationTypes` field.
          example: false
        addresses:
          type: array
          description: >-
            The EVM or Solana wallet addresses registered for this subscription.
            Notifications fire only for events on these addresses.
          items:
            type: string
            description: An EVM or Solana wallet address.
            example: '0x1234567890abcdef1234567890abcdef12345678'
          example:
            - '0x1234567890abcdef1234567890abcdef12345678'
        domains:
          type: array
          description: >-
            The CCTP domain identifiers for the blockchains to watch. For
            example, "0" is Ethereum and "6" is Base.
          items:
            type: string
            description: A CCTP domain identifier.
            example: '26'
          example:
            - '26'
        environment:
          $ref: '#/components/schemas/PermissionlessEnvironment'
        createDate:
          $ref: '#/components/schemas/CreateDate'
        updateDate:
          $ref: '#/components/schemas/UpdateDate'
    Id:
      type: string
      format: uuid
      description: System-generated unique identifier of the resource.
      example: c4d1da72-111e-4d52-bdbf-2e74a2d803d5
    CreateDate:
      type: string
      format: date-time
      description: Date and time the resource was created, in ISO-8601 UTC format.
      example: '2023-01-01T12:04:05Z'
    UpdateDate:
      type: string
      format: date-time
      description: Date and time the resource was last updated, in ISO-8601 UTC format.
      example: '2023-01-01T12:04:05Z'
  headers:
    XRequestId:
      description: >
        Developer-provided header parameter or Circle-generated universally
        unique identifier (UUID v4). Useful for identifying a specific request
        when communicating with Circle Support.
      schema:
        $ref: '#/components/schemas/XRequestId'
  responses:
    BadRequest:
      content:
        application/json:
          schema:
            type: object
            title: BadRequestResponse
            required:
              - code
              - message
            properties:
              code:
                type: integer
                description: Code that corresponds to the error.
              message:
                type: string
                description: Message that describes the error.
            example:
              code: 400
              message: Bad request.
      description: Request cannot be processed due to a client error.
      headers:
        X-Request-Id:
          $ref: '#/components/headers/XRequestId'
    NotAuthorized:
      content:
        application/json:
          schema:
            type: object
            title: NotAuthorizedResponse
            required:
              - code
              - message
            properties:
              code:
                type: integer
                description: Code that corresponds to the error.
              message:
                type: string
                description: Message that describes the error.
            example:
              code: 401
              message: Malformed authorization.
      description: >-
        Request has not been applied because it lacks valid authentication
        credentials.
      headers:
        X-Request-Id:
          $ref: '#/components/headers/XRequestId'
    NotFound:
      content:
        application/json:
          schema:
            type: object
            title: NotFoundResponse
            required:
              - code
              - message
            properties:
              code:
                type: integer
                description: Code that corresponds to the error.
              message:
                type: string
                description: Message that describes the error.
            example:
              code: 404
              message: Not found.
      description: Specified resource was not found.
      headers:
        X-Request-Id:
          $ref: '#/components/headers/XRequestId'
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: PREFIX:ID:SECRET
      description: >-
        Circle's API Keys are formatted in the following structure
        "PREFIX:ID:SECRET". All three parts are required to make a successful
        request.

````