Prime Intellect Tunnel API

The Tunnel API from Prime Intellect — 2 operation(s) for tunnel.

OpenAPI Specification

prime-intellect-tunnel-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Prime Intellect Compute admin-clusters Tunnel API
  version: 0.1.0
  description: 'GPU compute marketplace and pod orchestration: availability across providers, on-demand and multi-node GPU pod lifecycle, persistent network-attached disks, and SSH key management. Supports H100, H200, B200, B300, and other GPU families with 1-256 GPU configurations.'
  contact:
    name: Prime Intellect
    url: https://www.primeintellect.ai
servers:
- url: https://api.primeintellect.ai
security:
- HTTPBearer: []
tags:
- name: Tunnel
paths:
  /api/v1/tunnel:
    post:
      tags:
      - Tunnel
      summary: Create Tunnel Endpoint
      description: Create a new tunnel for exposing a local service.
      operationId: create_tunnel_endpoint_api_v1_tunnel_post
      security:
      - HTTPBearer: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateTunnelRequest'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TunnelResponse'
        '401':
          description: Authorization failed
        '422':
          description: Invalid request data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-mint:
        content: '## Rate Limit


          100 requests per 60 seconds per user.'
    get:
      tags:
      - Tunnel
      summary: List Tunnels Endpoint
      description: List all active tunnels for the current user.
      operationId: list_tunnels_endpoint_api_v1_tunnel_get
      security:
      - HTTPBearer: []
      parameters:
      - name: teamId
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Teamid
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TunnelListResponse'
        '401':
          description: Authorization failed
        '422':
          description: Invalid request data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-mint:
        content: '## Rate Limit


          300 requests per 60 seconds per user.'
    delete:
      tags:
      - Tunnel
      summary: Bulk Delete Tunnels Endpoint
      description: Bulk delete multiple tunnels by IDs.
      operationId: bulk_delete_tunnels_endpoint_api_v1_tunnel_delete
      security:
      - HTTPBearer: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkDeleteTunnelRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkDeleteTunnelResponse'
        '401':
          description: Authorization failed
        '422':
          description: Invalid request data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-mint:
        content: '## Rate Limit


          100 requests per 60 seconds per user.'
  /api/v1/tunnel/{tunnel_id}:
    get:
      tags:
      - Tunnel
      summary: Get Tunnel Status Endpoint
      description: Get status of a specific tunnel.
      operationId: get_tunnel_status_endpoint_api_v1_tunnel__tunnel_id__get
      security:
      - HTTPBearer: []
      parameters:
      - name: tunnel_id
        in: path
        required: true
        schema:
          type: string
          title: Tunnel Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TunnelStatusResponse'
        '401':
          description: Authorization failed
        '422':
          description: Invalid request data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-mint:
        content: '## Rate Limit


          300 requests per 60 seconds per tunnel.'
    delete:
      tags:
      - Tunnel
      summary: Delete Tunnel Endpoint
      description: Delete a tunnel and disconnect any active clients.
      operationId: delete_tunnel_endpoint_api_v1_tunnel__tunnel_id__delete
      security:
      - HTTPBearer: []
      parameters:
      - name: tunnel_id
        in: path
        required: true
        schema:
          type: string
          title: Tunnel Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteTunnelResponse'
        '401':
          description: Authorization failed
        '422':
          description: Invalid request data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-mint:
        content: '## Rate Limit


          100 requests per 60 seconds per user.'
components:
  schemas:
    TunnelStatus:
      type: string
      enum:
      - pending
      - connected
      - disconnected
      - expired
      title: TunnelStatus
    CreateTunnelRequest:
      properties:
        name:
          anyOf:
          - type: string
            maxLength: 64
            minLength: 1
          - type: 'null'
          title: Name
          description: Optional friendly name for the tunnel
        local_port:
          type: integer
          maximum: 65535.0
          minimum: 1.0
          title: Local Port
          description: Local port the tunnel will forward traffic to
          default: 8765
        teamId:
          anyOf:
          - type: string
          - type: 'null'
          title: Teamid
          description: Team ID for team tunnels
      type: object
      title: CreateTunnelRequest
      description: Request to create a new tunnel.
    DeleteTunnelResponse:
      properties:
        success:
          type: boolean
          title: Success
          description: Whether deletion succeeded
        message:
          type: string
          title: Message
          description: Status message
      type: object
      required:
      - success
      - message
      title: DeleteTunnelResponse
      description: Response for tunnel deletion.
    TunnelListResponse:
      properties:
        tunnels:
          items:
            $ref: '#/components/schemas/TunnelStatusResponse'
          type: array
          title: Tunnels
          description: List of active tunnels
        total:
          type: integer
          title: Total
          description: Total number of tunnels
      type: object
      required:
      - total
      title: TunnelListResponse
      description: Response containing list of tunnels.
    BulkDeleteTunnelRequest:
      properties:
        tunnel_ids:
          items:
            type: string
          type: array
          maxItems: 500
          minItems: 1
          title: Tunnel Ids
          description: List of tunnel IDs to delete
      type: object
      required:
      - tunnel_ids
      title: BulkDeleteTunnelRequest
      description: Request to bulk delete tunnels.
    BulkDeleteTunnelResponse:
      properties:
        succeeded:
          items:
            type: string
          type: array
          title: Succeeded
          description: Successfully deleted tunnel IDs
        failed:
          items:
            additionalProperties:
              type: string
            type: object
          type: array
          title: Failed
          description: Failed deletions with error messages
        message:
          type: string
          title: Message
          description: Summary message
      type: object
      required:
      - message
      title: BulkDeleteTunnelResponse
      description: Response for bulk tunnel deletion.
    ErrorResponse:
      properties:
        errors:
          items:
            $ref: '#/components/schemas/ErrorDetail'
          type: array
          title: Errors
      type: object
      required:
      - errors
      title: ErrorResponse
    ErrorDetail:
      properties:
        param:
          type: string
          title: Param
        details:
          type: string
          title: Details
      type: object
      required:
      - param
      - details
      title: ErrorDetail
    TunnelStatusResponse:
      properties:
        tunnel_id:
          type: string
          title: Tunnel Id
          description: Unique tunnel identifier
        name:
          anyOf:
          - type: string
          - type: 'null'
          title: Name
          description: Friendly name if set
        status:
          $ref: '#/components/schemas/TunnelStatus'
          description: Current tunnel status
        hostname:
          type: string
          title: Hostname
          description: Tunnel hostname
        url:
          type: string
          title: Url
          description: Full HTTPS URL
        created_at:
          type: string
          format: date-time
          title: Created At
          description: Tunnel creation time
        connected_at:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Connected At
          description: When the client connected
        expires_at:
          type: string
          format: date-time
          title: Expires At
          description: Token expiration time
        user_id:
          type: string
          title: User Id
          description: Owner user ID
        team_id:
          anyOf:
          - type: string
          - type: 'null'
          title: Team Id
          description: Team ID if applicable
      type: object
      required:
      - tunnel_id
      - status
      - hostname
      - url
      - created_at
      - expires_at
      - user_id
      title: TunnelStatusResponse
      description: Response containing tunnel status information.
    TunnelResponse:
      properties:
        tunnel_id:
          type: string
          title: Tunnel Id
          description: Unique tunnel identifier
        hostname:
          type: string
          title: Hostname
          description: Full hostname for the tunnel
        url:
          type: string
          title: Url
          description: Full HTTPS URL for accessing the tunnel
        frp_token:
          type: string
          title: Frp Token
          description: Authentication token for frpc client
        binding_secret:
          type: string
          title: Binding Secret
          description: Per-tunnel secret for additional authentication via frpc metadata
        server_host:
          type: string
          title: Server Host
          description: frps server hostname
        server_port:
          type: integer
          title: Server Port
          description: frps server port
          default: 7000
        expires_at:
          type: string
          format: date-time
          title: Expires At
          description: Token expiration timestamp
      type: object
      required:
      - tunnel_id
      - hostname
      - url
      - frp_token
      - binding_secret
      - server_host
      - expires_at
      title: TunnelResponse
      description: Response containing tunnel connection details.
  securitySchemes:
    HTTPBearer:
      type: http
      scheme: bearer