Bright Data Proxy Manager API

Local self-hosted REST control plane (port 22999) for the Bright Data Proxy Manager. Programmatically create and configure proxy ports (`/api/proxies`, `/api/proxies/{PORT}`), ban offending IPs (`/api/proxies/{PORT}/banip`), refresh IP pools (`/api/refresh_ips`), and read zone configuration (`/api/zones`). Supports SSL, logging, statistics, and remote upgrade/restart endpoints.

Bright Data Proxy Manager API is one of 11 APIs that Bright Data publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

This API exposes 1 machine-runnable capability that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko.

Tagged areas include Proxy Manager, Local API, and Self-Hosted. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, and 1 Naftiko capability spec.

OpenAPI Specification

bright-data-proxy-manager-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Bright Data Proxy Manager API
  description: |
    Local self-hosted REST control plane for the Bright Data Proxy Manager. The Proxy Manager runs
    on `localhost:22999` by default and exposes endpoints to create and configure proxy ports, ban
    misbehaving IPs, refresh pools, read zone configuration, and manage SSL/logging/statistics.
  version: '1.0'
  contact:
    name: Bright Data
    url: https://docs.brightdata.com/proxy-networks/proxy-manager/api
servers:
  - url: http://localhost:22999
    description: Local Proxy Manager
tags:
  - name: Proxies
  - name: Zones
  - name: Tokens
paths:
  /api/proxies:
    get:
      summary: List Proxy Ports
      operationId: listProxies
      tags: [Proxies]
      responses:
        "200":
          description: Configured ports.
          content:
            application/json:
              schema:
                type: array
                items: { $ref: '#/components/schemas/ProxyPort' }
    post:
      summary: Create Proxy Port
      operationId: createProxy
      tags: [Proxies]
      requestBody:
        required: true
        content:
          application/json:
            schema: { $ref: '#/components/schemas/ProxyPort' }
      responses:
        "200":
          description: Port created.
          content:
            application/json: { schema: { $ref: '#/components/schemas/ProxyPort' } }
  /api/proxies/{port}:
    parameters:
      - { name: port, in: path, required: true, schema: { type: integer } }
    get:
      summary: Get Proxy Port
      operationId: getProxy
      tags: [Proxies]
      responses:
        "200":
          description: Port detail.
          content:
            application/json: { schema: { $ref: '#/components/schemas/ProxyPort' } }
    put:
      summary: Update Proxy Port
      operationId: updateProxy
      tags: [Proxies]
      requestBody:
        required: true
        content:
          application/json:
            schema: { $ref: '#/components/schemas/ProxyPort' }
      responses:
        "200":
          description: Updated.
          content:
            application/json: { schema: { $ref: '#/components/schemas/ProxyPort' } }
    delete:
      summary: Delete Proxy Port
      operationId: deleteProxy
      tags: [Proxies]
      responses:
        "200":
          description: Deleted.
          content:
            application/json: { schema: { type: object } }
  /api/proxies/{port}/banip:
    parameters:
      - { name: port, in: path, required: true, schema: { type: integer } }
    post:
      summary: Ban an IP for Port
      operationId: banIp
      tags: [Proxies]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [ip]
              properties:
                ip: { type: string }
                ttl_ms: { type: integer }
      responses:
        "200":
          description: Banned.
          content:
            application/json: { schema: { type: object } }
  /api/refresh_ips:
    post:
      summary: Refresh IPs
      operationId: refreshIps
      tags: [Proxies]
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                zone: { type: string }
                ips: { type: integer }
      responses:
        "200":
          description: Refresh started.
          content:
            application/json: { schema: { type: object } }
  /api/zones:
    get:
      summary: List Zones
      operationId: listZones
      tags: [Zones]
      responses:
        "200":
          description: Zones configured in the Proxy Manager.
          content:
            application/json:
              schema:
                type: array
                items: { type: object, additionalProperties: true }
  /api/gen_token:
    get:
      summary: Generate Proxy Manager Token
      operationId: genToken
      tags: [Tokens]
      responses:
        "200":
          description: New token.
          content:
            application/json:
              schema:
                type: object
                properties:
                  token: { type: string }
components:
  schemas:
    ProxyPort:
      type: object
      properties:
        port: { type: integer }
        zone: { type: string }
        country: { type: string }
        city: { type: string }
        session: { type: string, enum: [rand, sticky, round-robin] }
        sticky_ip: { type: boolean }
        rotate_session: { type: integer }
        max_requests: { type: integer }
        allow_proxy_auth: { type: boolean }
        log: { type: string, enum: [none, error, warn, info, debug] }