Paperspace Networking API

Networking primitives for Paperspace — private networks (VPCs) for east-west machine-to-machine traffic and a claim-assign-release lifecycle for public IPv4 addresses.

OpenAPI Specification

paperspace-networking-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Paperspace Networking API
  version: v1
  description: |
    Paperspace networking primitives — private networks (VPCs) for east-west
    machine-to-machine traffic and public IPs for north-south internet access.
    Authenticate with a team-scoped API key as `Authorization: Bearer
    $API_TOKEN`.
servers:
- url: https://api.paperspace.com/v1
  description: Production
security:
- bearerAuth: []
tags:
- name: Private Networks
- name: Public IPs
paths:
  /private-networks:
    get:
      tags: [Private Networks]
      operationId: listPrivateNetworks
      summary: List Private Networks
      description: Fetches a list of private networks.
      parameters:
      - $ref: '#/components/parameters/After'
      - $ref: '#/components/parameters/Limit'
      responses:
        '200':
          description: Private network list.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PrivateNetwork'
    post:
      tags: [Private Networks]
      operationId: createPrivateNetwork
      summary: Create Private Network
      description: Creates a new private network in a region.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PrivateNetworkCreate'
      responses:
        '201':
          description: Network created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrivateNetwork'
  /private-networks/{id}:
    parameters:
    - in: path
      name: id
      required: true
      schema:
        type: string
    get:
      tags: [Private Networks]
      operationId: getPrivateNetwork
      summary: Get Private Network
      description: Fetches a single private network by ID.
      responses:
        '200':
          description: Private network.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrivateNetwork'
    put:
      tags: [Private Networks]
      operationId: updatePrivateNetwork
      summary: Update Private Network
      description: Updates a private network by ID.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
      responses:
        '200':
          description: Updated network.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrivateNetwork'
    delete:
      tags: [Private Networks]
      operationId: deletePrivateNetwork
      summary: Delete Private Network
      description: Deletes a private network by ID.
      responses:
        '204':
          description: Deleted.
  /public-ips:
    get:
      tags: [Public IPs]
      operationId: listPublicIps
      summary: List Public IPs
      description: Fetches a list of public IPs claimed by the team.
      responses:
        '200':
          description: Public IP list.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PublicIp'
    post:
      tags: [Public IPs]
      operationId: claimPublicIp
      summary: Claim Public IP
      description: Claims a new public IP address for the team.
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                region:
                  type: string
      responses:
        '201':
          description: IP claimed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicIp'
  /public-ips/{ip}:
    parameters:
    - in: path
      name: ip
      required: true
      schema:
        type: string
    put:
      tags: [Public IPs]
      operationId: assignPublicIp
      summary: Assign Public IP
      description: Assigns a public IP to a machine.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [machineId]
              properties:
                machineId:
                  type: string
      responses:
        '200':
          description: IP assigned.
    delete:
      tags: [Public IPs]
      operationId: releasePublicIp
      summary: Release Public IP
      description: Releases a public IP back to the pool.
      responses:
        '204':
          description: Released.
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: api-key
  parameters:
    After:
      in: query
      name: after
      schema:
        type: string
    Limit:
      in: query
      name: limit
      schema:
        type: integer
  schemas:
    PrivateNetwork:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        region:
          type: string
        cidr:
          type: string
        teamId:
          type: string
        dtCreated:
          type: string
          format: date-time
    PrivateNetworkCreate:
      type: object
      required: [name, region]
      properties:
        name:
          type: string
        region:
          type: string
        cidr:
          type: string
    PublicIp:
      type: object
      properties:
        ip:
          type: string
        region:
          type: string
        machineId:
          type: string
          nullable: true
        teamId:
          type: string
        dtCreated:
          type: string
          format: date-time