UpCloud Network Peering API

Network peering management

Business capability
IT Infrastructure Management BC-600.50

Operations 5

GET /1.3/network-peering List peerings #
POST /1.3/network-peering Create peering #
GET /1.3/network-peering/{peering_uuid} Get peering #
DELETE /1.3/network-peering/{peering_uuid} Delete peering #
PATCH /1.3/network-peering/{peering_uuid} Modify peering #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/upcloud:upcloud-network-peering-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

upcloud-network-peering-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Upcloud Network Peering API
  version: '1.3'
  contact:
    name: UpCloud
    url: https://upcloud.com
    email: hello@upcloud.com
  license:
    name: MIT
    url: https://spdx.org/licenses/MIT.html
  termsOfService: https://upcloud.com/terms-of-service/
  description: 'Operations tagged network-peering across 2 of this provider''s published API definitions: upcloud-openapi.json, upcloud-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.upcloud.com
security:
- apiToken: []
tags:
- name: network-peering
  description: Network peering management
  x-displayName: Network Peering
paths:
  /1.3/network-peering:
    get:
      tags:
      - network-peering
      summary: List peerings
      description: 'Get a list of all peerings within the current account. Only peerings that refer to a network that the current

        account has access are returned.


        It is also possible to filter network peering with label URL parameters, e.g.

        `?label=env` or `?label=env%3Dprod`. The URL parameter can be given multiple

        times to add more filters (e.g. `?label=env%3Dprod&label=v2`), where

        only network peering that match all labels are returned.

        Label keys are matched case insensitively.'
      operationId: listNetworkPeerings
      parameters:
      - $ref: '#/components/parameters/listNetworkPeeringsUuid'
      - $ref: '#/components/parameters/listNetworkPeeringsNetworkUuidLocal'
      - $ref: '#/components/parameters/listNetworkPeeringsNetworkUuidPeer'
      - $ref: '#/components/parameters/listNetworkPeeringsLabel'
      responses:
        '200':
          $ref: '#/components/responses/listNetworkPeerings200'
        default:
          $ref: '#/components/responses/listNetworkPeeringsDefault'
      x-upcloud-visibility: public
    post:
      tags:
      - network-peering
      summary: Create peering
      description: 'Network peerings are used to enable traffic between two networks that can be on different main accounts.

        The peering must be established both ways before it''s considered as active. Peering is only supported between networks

        of type `private`.


        **Note**: you should only create peering between accounts and networks you trust. There is no limits on what traffic

        can flow. The server firewall **has no effect** for `private` type networks.


        It is required that both networks have a *Router* attached to the network.'
      operationId: createNetworkPeering
      requestBody:
        $ref: '#/components/requestBodies/createNetworkPeering'
      responses:
        '201':
          $ref: '#/components/responses/createNetworkPeering201'
        '400':
          $ref: '#/components/responses/createNetworkPeering400'
        '404':
          $ref: '#/components/responses/createNetworkPeering404'
        '409':
          $ref: '#/components/responses/createNetworkPeering409'
        default:
          $ref: '#/components/responses/createNetworkPeeringDefault'
      x-upcloud-visibility: public
    servers:
    - url: https://api.upcloud.com
  /1.3/network-peering/{peering_uuid}:
    get:
      tags:
      - network-peering
      summary: Get peering
      description: 'Returns the state of an existing network peering.


        Note that the `peer_network` field only contains the network details if the peering has been defined by both accounts.'
      operationId: getNetworkPeering
      parameters:
      - $ref: '#/components/parameters/getNetworkPeeringPeeringUuid'
      responses:
        '200':
          $ref: '#/components/responses/getNetworkPeering200'
        '404':
          $ref: '#/components/responses/getNetworkPeering404'
        default:
          $ref: '#/components/responses/getNetworkPeeringDefault'
      x-upcloud-visibility: public
    delete:
      tags:
      - network-peering
      summary: Delete peering
      description: Deletes a network peering. It is required that the peering is in `disabled` state before delete is possible.
      operationId: deleteNetworkPeering
      parameters:
      - $ref: '#/components/parameters/deleteNetworkPeeringPeeringUuid'
      responses:
        '204':
          $ref: '#/components/responses/deleteNetworkPeering204'
        '404':
          $ref: '#/components/responses/deleteNetworkPeering404'
        default:
          $ref: '#/components/responses/deleteNetworkPeeringDefault'
      x-upcloud-visibility: public
    patch:
      tags:
      - network-peering
      summary: Modify peering
      description: Modifies attributes of an existing network peering.
      operationId: modifyNetworkPeering
      parameters:
      - $ref: '#/components/parameters/modifyNetworkPeeringPeeringUuid'
      requestBody:
        $ref: '#/components/requestBodies/modifyNetworkPeering'
      responses:
        '200':
          $ref: '#/components/responses/modifyNetworkPeering200'
        '400':
          $ref: '#/components/responses/modifyNetworkPeering400'
        '404':
          $ref: '#/components/responses/modifyNetworkPeering404'
        default:
          $ref: '#/components/responses/modifyNetworkPeeringDefault'
      x-upcloud-visibility: public
    servers:
    - url: https://api.upcloud.com
components:
  responses:
    createNetworkPeering400:
      description: Invalid request data.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/networkPeeringError'
    deleteNetworkPeering404:
      description: The specified network peering does not exist.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/networkPeeringError'
    createNetworkPeering404:
      description: One of the specified networks does not exist.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/networkPeeringError'
    modifyNetworkPeering200:
      description: The network peering was successfully modified.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/networkPeering'
    modifyNetworkPeering404:
      description: The specified network peering does not exist.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/networkPeeringError'
    listNetworkPeerings200:
      description: A list of network peerings.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/networkPeerings'
    listNetworkPeeringsDefault:
      description: General failure
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/networkPeeringError'
    createNetworkPeeringDefault:
      description: General failure
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/networkPeeringError'
    deleteNetworkPeering204:
      description: The network peering was successfully deleted.
    deleteNetworkPeeringDefault:
      description: General failure
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/networkPeeringError'
    modifyNetworkPeering400:
      description: Invalid request data.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/networkPeeringError'
    modifyNetworkPeeringDefault:
      description: General failure
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/networkPeeringError'
    getNetworkPeeringDefault:
      description: General failure
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/networkPeeringError'
    createNetworkPeering201:
      description: The network peering was successfully created.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/networkPeering'
    getNetworkPeering404:
      description: The specified network peering does not exist.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/networkPeeringError'
    createNetworkPeering409:
      description: A peering between the specified networks already exists.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/networkPeeringError'
    getNetworkPeering200:
      description: Details of the specified network peering.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/networkPeering'
  parameters:
    getNetworkPeeringPeeringUuid:
      name: peering_uuid
      in: path
      description: The network peering identifier.
      required: true
      schema:
        type: string
        format: uuid
    deleteNetworkPeeringPeeringUuid:
      name: peering_uuid
      in: path
      description: The network peering identifier.
      required: true
      schema:
        type: string
        format: uuid
    listNetworkPeeringsNetworkUuidLocal:
      name: network_uuid_local
      in: query
      description: Filter by local network uuid.
      required: false
      schema:
        $ref: '#/components/schemas/networkPeeringUuid'
    listNetworkPeeringsUuid:
      name: uuid
      in: query
      description: Filter by network peering UUID.
      required: false
      schema:
        $ref: '#/components/schemas/networkPeeringUuid'
    modifyNetworkPeeringPeeringUuid:
      name: peering_uuid
      in: path
      description: The network peering identifier.
      required: true
      schema:
        type: string
        format: uuid
    listNetworkPeeringsLabel:
      name: label
      in: query
      description: Label filter in the form key=value. Can be specified multiple times to filter by multiple labels.
      required: false
      schema:
        type: string
    listNetworkPeeringsNetworkUuidPeer:
      name: network_uuid_peer
      in: query
      description: Filter by peer network uuid.
      required: false
      schema:
        $ref: '#/components/schemas/networkPeeringUuid'
  schemas:
    networkPeeringIpFamily:
      $schema: https://json-schema.org/draft/2020-12/schema
      type: string
      enum:
      - IPv4
      - IPv6
      description: IP address family
      example: IPv4
    networkPeeringCreate:
      $schema: https://json-schema.org/draft/2020-12/schema
      type: object
      properties:
        configured_status:
          type: string
          enum:
          - active
          - disabled
          default: active
        name:
          type: string
          example: Peering A->B
        network:
          type: object
          properties:
            uuid:
              $ref: '#/components/schemas/networkPeeringUuid'
          required:
          - uuid
          description: Describes the local side of the peering
        peer_network:
          type: object
          properties:
            uuid:
              $ref: '#/components/schemas/networkPeeringUuid'
          required:
          - uuid
          description: Describes the peer side of the peering
      required:
      - name
      - network
      - peer_network
      additionalProperties: false
      description: Describes the mutable properties when creating a network-peering between two networks
      example:
        configured_status: active
        name: Peering A->B
        network:
          uuid: 03126dc1-a69f-4bc2-8b24-e31c22d64712
        peer_network:
          uuid: 03585987-bf7d-4544-8e9b-5a1b4d74a333
    networkPeeringUuid:
      $schema: https://json-schema.org/draft/2020-12/schema
      type: string
      pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
      format: uuid
      description: Universally unique identifier
      example: 0414e0d7-4436-4037-9dd8-6eaf47dce599
    networkPeeringError:
      $schema: https://json-schema.org/draft/2020-12/schema
      type: object
      properties:
        error:
          type: object
          properties:
            error_code:
              type: string
              examples:
              - GENERAL_FAILURE
            error_message:
              type: string
              examples:
              - Your request could not be fulfilled due to a technical issue.
          required:
          - error_code
          - error_message
          additionalProperties: false
      required:
      - error
      additionalProperties: false
      description: A general error response indicating that the request could not be fulfilled due to a technical issue.
    networkPeeringIpCidr:
      $schema: https://json-schema.org/draft/2020-12/schema
      type: string
      format: cidr
      description: IP CIDR
    networkPeeringName:
      $schema: https://json-schema.org/draft/2020-12/schema
      type: string
      maxLength: 255
      minLength: 1
      description: Name of a network peering relationship.
    networkPeering:
      $schema: https://json-schema.org/draft/2020-12/schema
      type: object
      properties:
        configured_status:
          type: string
          enum:
          - active
          - disabled
        name:
          $ref: '#/components/schemas/networkPeeringName'
        network:
          type: object
          properties:
            ip_networks:
              type: object
              properties:
                ip_network:
                  type: array
                  items:
                    properties:
                      address:
                        $ref: '#/components/schemas/networkPeeringIpCidr'
                      family:
                        $ref: '#/components/schemas/networkPeeringIpFamily'
            uuid:
              $ref: '#/components/schemas/networkPeeringUuid'
          description: Describes the local side of the peering
        peer_network:
          type: object
          properties:
            ip_networks:
              type: object
              properties:
                ip_network:
                  type: array
                  items:
                    properties:
                      address:
                        $ref: '#/components/schemas/networkPeeringIpCidr'
                      family:
                        $ref: '#/components/schemas/networkPeeringIpFamily'
              description: 'note: only visible if both sides have a peering defined'
            uuid:
              $ref: '#/components/schemas/networkPeeringUuid'
          description: Describes the peer side of the peering
        state:
          $ref: '#/components/schemas/networkPeeringState'
        uuid:
          $ref: '#/components/schemas/networkPeeringUuid'
        created_at:
          oneOf:
          - $ref: '#/components/schemas/networkPeeringRfc3339Datetime'
          - type: 'null'
          description: When the network peering was created
        updated_at:
          oneOf:
          - $ref: '#/components/schemas/networkPeeringRfc3339Datetime'
          - type: 'null'
          description: When the network peering was last updated. Null until the first modification.
      description: Network peering object describes a peering relationship between two networks
      example:
        configured_status: active
        name: Peering A->B
        network:
          ip_networks:
            ip_network:
            - address: 192.168.0.0/24
              family: IPv4
            - address: fc02:c4f3::/64
              family: IPv6
          uuid: 03126dc1-a69f-4bc2-8b24-e31c22d64712
        peer_network:
          ip_networks:
            ip_network:
            - address: 192.168.99.0/24
              family: IPv4
            - address: fc02:c4f3:99::/64
              family: IPv6
          uuid: 03585987-bf7d-4544-8e9b-5a1b4d74a333
        state: active
        uuid: 0f7984bc-5d72-4aaf-b587-90e6a8f32efc
        created_at: '2026-07-01T00:00:00Z'
    networkPeeringModify:
      $schema: https://json-schema.org/draft/2020-12/schema
      type: object
      properties:
        configured_status:
          enum:
          - active
          - disabled
        name:
          type: string
      additionalProperties: false
      description: Describes the mutable properties when modifying a network-peering
      example:
        configured_status: disabled
        name: Peering A->B modified
    networkPeeringRfc3339Datetime:
      $schema: https://json-schema.org/draft/2020-12/schema
      type: string
      examples:
      - '2026-07-01T00:00:00Z'
      - '2026-07-31T23:59:59Z'
      format: date-time
      description: Datetime in RFC 3339 format
    networkPeerings:
      $schema: https://json-schema.org/draft/2020-12/schema
      type: object
      properties:
        network_peerings:
          type: object
          properties:
            network_peering:
              type: array
              items:
                $ref: '#/components/schemas/networkPeering'
          required:
          - network_peering
          additionalProperties: false
          example:
            network_peering:
            - configured_status: active
              name: Peering A->B
              network:
                uuid: 03126dc1-a69f-4bc2-8b24-e31c22d64712
              peer_network:
                uuid: 03585987-bf7d-4544-8e9b-5a1b4d74a333
              state: active
              uuid: 0f7984bc-5d72-4aaf-b587-90e6a8f32efc
              created_at: '2026-07-01T00:00:00Z'
      required:
      - network_peerings
      additionalProperties: false
      description: Network peerings
      example:
        network_peerings:
          network_peering:
          - configured_status: active
            name: Peering A->B
            network:
              uuid: 03126dc1-a69f-4bc2-8b24-e31c22d64712
            peer_network:
              uuid: 03585987-bf7d-4544-8e9b-5a1b4d74a333
            state: active
            uuid: 0f7984bc-5d72-4aaf-b587-90e6a8f32efc
            created_at: '2026-07-01T00:00:00Z'
    networkPeeringState:
      $schema: https://json-schema.org/draft/2020-12/schema
      type: string
      enum:
      - active
      - pending-peer
      - provisioning
      - conflict-subnet
      - missing-local-router
      - missing-peer-router
      - deleted-peer-network
      - disabled
      - peer-disabled
      - error
      description: Current lifecycle state of a network peering.
  requestBodies:
    modifyNetworkPeering:
      description: Attributes to modify for the network peering.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/networkPeeringModify'
    createNetworkPeering:
      description: Attributes for the new network peering.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/networkPeeringCreate'
  securitySchemes:
    apiToken:
      type: http
      description: UpCloud API uses HTTP Bearer authentication. An API token is required to authenticate. The API token can be created in the UpCloud control panel. Alternatively, you can create an API token using the API directly, or with upctl. Note that if you want to use HTTP Basic authentication on API or with upctl, you will need to enable API access in the UpCloud control panel first.
      scheme: bearer
x-refined-from:
- upcloud-openapi.json
- upcloud-openapi.yml
x-upcloud-visibility: public
x-tagGroups:
- name: Server
  tags:
  - server
  - server-group
  - server_size
  - plan
  - device
  - events
  - timezone
  - vnc_keymap
- name: Network
  tags:
  - network
  - network-peering
  - ip_address
  - router
  - gateway
  - firewall-ruleset
- name: Account & Access
  tags:
  - account
  - audit-logs
  - account-tokens
  - permission
  - tag
- name: Billing
  tags:
  - price
  - currency
x-provenance:
  method: harvested
  publisher: UpCloud
  source: https://developers.upcloud.com/api/1.3/upcloud-openapi.json
  note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
    stamped by stamp-openapi-provenance.py (roadmap#793)