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

# Update router

> Update the configuration of an existing router.
Fields that already match the current router state are skipped. If no fields
change, no task is created and an empty task list is returned.



## OpenAPI

````yaml /api-reference/services_docs_mintlify_enriched/cloud_api.yaml patch /cloud/v2/routers/{project_id}/{region_id}/{router_id}
openapi: 3.1.0
info:
  title: Gcore OpenAPI – Cloud API
  description: >-
    This OpenAPI is an aggregated OpenAPI specification that unifies all Gcore
    products into a single file. It covers Cloud, CDN, DNS, WAAP, DDoS
    Protection, Object Storage, Streaming, and FastEdge services.
  version: 23526a255bc8
servers:
  - url: https://api.gcore.com
security:
  - APIKey: []
tags:
  - name: Bare Metal
  - name: Container as a Service
  - name: Cost Reports
  - name: DDoS Protection
  - name: Everywhere Inference
  - name: Everywhere Inference Apps
  - name: File Shares
  - name: Floating IPs
  - name: Function as a Service
  - name: GPU Bare Metal
  - name: GPU Virtual
  - name: IP Ranges
  - name: Images
  - name: Instances
  - name: Load Balancers
  - name: Logging
  - name: Managed Kubernetes
  - name: Managed PostgreSQL
  - name: Networks
  - name: Placement Groups
  - name: Ports
  - name: Projects
  - name: Quotas
  - name: Regions
  - name: Registry
  - name: Reservations
  - name: Reserved IPs
  - name: Routers
  - name: SSH Keys
  - name: Secrets
  - name: Security Groups
  - name: Snapshot Schedules
  - name: Snapshots
  - name: Tasks
  - name: User Actions
  - name: User Role Assignments
  - name: Volumes
paths:
  /cloud/v2/routers/{project_id}/{region_id}/{router_id}:
    patch:
      tags:
        - Routers
      summary: Update router
      description: >-
        Update the configuration of an existing router.

        Fields that already match the current router state are skipped. If no
        fields

        change, no task is created and an empty task list is returned.
      operationId: RouterRouterViewSetV2.patch
      parameters:
        - in: path
          name: project_id
          required: true
          description: Project ID
          schema:
            description: Project ID
            example: 1
            examples:
              - 1
            title: Project Id
            type: integer
        - in: path
          name: region_id
          required: true
          description: Region ID
          schema:
            description: Region ID
            example: 1
            examples:
              - 1
            title: Region Id
            type: integer
        - in: path
          name: router_id
          required: true
          description: Router ID
          schema:
            description: Router ID
            example: ccd5b925-e35c-4611-a511-67ab503104c8
            examples:
              - ccd5b925-e35c-4611-a511-67ab503104c8
            format: uuid4
            title: Router Id
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchRouterSerializerV2'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskIDsSerializer'
      x-codeSamples:
        - lang: Python
          source: |-
            import os
            from gcore import Gcore

            client = Gcore(
                api_key=os.environ.get("GCORE_API_KEY"),  # This is the default and can be omitted
            )
            task_id_list = client.cloud.networks.routers.update(
                router_id="ccd5b925-e35c-4611-a511-67ab503104c8",
                project_id=1,
                region_id=1,
            )
            print(task_id_list.tasks)
        - lang: Go
          source: "package main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"github.com/G-Core/gcore-go\"\n\t\"github.com/G-Core/gcore-go/cloud\"\n\t\"github.com/G-Core/gcore-go/option\"\n)\n\nfunc main() {\n\tclient := gcore.NewClient(\n\t\toption.WithAPIKey(\"My API Key\"),\n\t)\n\ttaskIDList, err := client.Cloud.Networks.Routers.Update(\n\t\tcontext.TODO(),\n\t\t\"ccd5b925-e35c-4611-a511-67ab503104c8\",\n\t\tcloud.NetworkRouterUpdateParams{\n\t\t\tProjectID: gcore.Int(1),\n\t\t\tRegionID:  gcore.Int(1),\n\t\t},\n\t)\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\tfmt.Printf(\"%+v\\n\", taskIDList.Tasks)\n}\n"
components:
  schemas:
    PatchRouterSerializerV2:
      properties:
        external_gateway_info:
          anyOf:
            - $ref: '#/components/schemas/RouterExternalManualGwSerializer'
            - type: 'null'
          description: >-
            New external gateway configuration. Only type 'manual' is accepted
            on update, so you must provide the `network_id` of the external
            network. Set to null to remove the external gateway.
          examples:
            - enable_snat: false
              network_id: d7745dcf-b302-4795-9d61-6cc52487af48
              type: manual
        name:
          description: New name of router
          example: my_renamed_router
          examples:
            - my_renamed_router
          pattern: ^[a-zA-Z0-9][a-zA-Z 0-9._\-]{1,61}[a-zA-Z0-9._]$
          title: Name
          type: string
        routes:
          description: List of custom routes.
          example:
            - destination: 10.0.3.0/24
              nexthop: 10.0.0.13
          examples:
            - - destination: 10.0.3.0/24
                nexthop: 10.0.0.13
          items:
            $ref: '#/components/schemas/RouteInSerializer'
          title: Routes
          type: array
      title: PatchRouterSerializerV2
      type: object
    TaskIDsSerializer:
      properties:
        tasks:
          description: >-
            List of task IDs representing asynchronous operations. Use these IDs
            to monitor operation progress:
              - `GET /v1/tasks/{task_id}` - Check individual task status and details
              Poll task status until completion (`FINISHED`/`ERROR`) before proceeding with dependent operations.
          example:
            - d478ae29-dedc-4869-82f0-96104425f565
          examples:
            - - d478ae29-dedc-4869-82f0-96104425f565
          items:
            type: string
          title: Tasks
          type: array
      required:
        - tasks
      title: TaskIDsSerializer
      type: object
    RouterExternalManualGwSerializer:
      properties:
        enable_snat:
          default: true
          description: Is SNAT enabled. Defaults to true.
          example: true
          examples:
            - true
          title: Enable Snat
          type: boolean
        network_id:
          description: ID of the external network to connect the router to.
          example: 3d1e9779-b8ad-4c8e-a1a4-0a03671f07f7
          examples:
            - 3d1e9779-b8ad-4c8e-a1a4-0a03671f07f7
          format: uuid4
          title: Network Id
          type: string
        type:
          const: manual
          default: manual
          description: >-
            Gateway type. Use 'manual' to explicitly specify which external
            network the router connects to via `network_id`. Required for
            PATCH/update operations.
          example: manual
          examples:
            - manual
          title: Type
          type: string
      required:
        - network_id
      title: RouterExternalManualGwSerializer
      type: object
    RouteInSerializer:
      properties:
        destination:
          description: CIDR of destination IPv4 or IPv6 subnet.
          example: 10.0.3.0/24
          examples:
            - 10.0.3.0/24
          format: ipvanynetwork
          title: Destination
          type: string
        nexthop:
          description: >-
            IPv4 or IPv6 address to forward traffic to if it's destination IP
            matches 'destination' CIDR.
          example: 10.0.0.13
          examples:
            - 10.0.0.13
          format: ipvanyaddress
          title: Nexthop
          type: string
      required:
        - destination
        - nexthop
      title: RouteInSerializer
      type: object
  securitySchemes:
    APIKey:
      description: >-
        API key for authentication. Make sure to include the word `apikey`,
        followed by a single space and then your token.

        Example: `apikey 1234_abcdef`
      type: apiKey
      in: header
      name: Authorization

````