Create API Proxy Group

Overview

Creates a new API Proxy Group. API Proxy Groups allow you to group multiple API Proxies together and manage them as a single unit with shared client routes, CORS settings, and cache settings.

Endpoint

POST /apiops/projects/{projectName}/apiProxyGroups/

Authentication

Requires a Personal API Access Token.

Authorization: Bearer YOUR_TOKEN

Request

Headers

Header Value Required
Authorization Bearer {token} Yes
Content-Type application/json Yes

Path Parameters

Parameter Type Required Description
projectName string Yes Project name

Request Body

Full JSON Body Example - Basic API Proxy Group

{
  "name": "PaymentAPIGroup",
  "description": "Payment API Group",
  "clientRoute": {
    "relativePathList": [
      "/api/v1/payment"
    ],
    "methodList": ["GET", "POST", "PUT", "DELETE"],
    "hostList": null,
    "headerList": null,
    "bufferRequest": true,
    "bufferResponse": true
  }
}

Full JSON Body Example - API Proxy Group with Host Filtering

{
  "name": "RestrictedAPIGroup",
  "description": "Restricted API Group",
  "clientRoute": {
    "relativePathList": [
      "/api/v1/restricted"
    ],
    "methodList": ["GET", "POST"],
    "hostList": [
      "api.example.com",
      "api-staging.example.com"
    ],
    "headerList": null,
    "bufferRequest": true,
    "bufferResponse": true
  }
}

Full JSON Body Example - API Proxy Group with Header-Based Routing

{
  "name": "VersionedAPIGroup",
  "description": "Versioned API Group",
  "clientRoute": {
    "relativePathList": [
      "/api/v1"
    ],
    "methodList": ["ALL"],
    "hostList": null,
    "headerList": [
      {
        "name": "X-API-Version",
        "value": "v1"
      }
    ],
    "bufferRequest": true,
    "bufferResponse": true
  }
}

Request Body Fields

Field Type Required Default Description
name string Yes - API Proxy Group name (unique identifier)
description string No - API Proxy Group description
clientRoute object Yes - Client route configuration. See Client Route Object

Client Route Object (clientRoute)

Field Type Required Default Description
relativePathList array[string] Yes - List of relative paths to match. Must have at least one path, and first path must not be empty
methodList array[string] No null List of HTTP methods to match. See EnumHttpRequestMethod
hostList array[string] No null List of host names to match
headerList array[object] No null List of headers to match. See Header Object
bufferRequest boolean No true Buffer request body
bufferResponse boolean No true Buffer response body

EnumHttpRequestMethod (methodList)

  • GET - HTTP GET method
  • POST - HTTP POST method
  • PUT - HTTP PUT method
  • HEAD - HTTP HEAD method
  • OPTIONS - HTTP OPTIONS method
  • DELETE - HTTP DELETE method
  • PATCH - HTTP PATCH method
  • TRACE - HTTP TRACE method
  • ALL - All HTTP methods

Header Object (headerList)

Field Type Required Description
name string Yes Header name (case-insensitive)
value string Yes Header value to match

Notes

  • name must be unique within the project
  • clientRoute.relativePathList must have at least one path
  • First path in relativePathList must not be empty
  • At least one route configuration (path, host, header, or method) must be provided
  • Paths must be at least 2 characters long

Response

Success Response (200 OK)

{
  "success": true
}

Error Response (400 Bad Request)

{
  "error": "bad_request",
  "error_description": "name value can not be empty!"
}

or

{
  "error": "bad_request",
  "error_description": "clientRoute value can not be empty!"
}

or

{
  "error": "bad_request",
  "error_description": "clientRoute value needs at least one relativePath!"
}

or

{
  "error": "bad_request",
  "error_description": "relativePath value in clientRoute object can not be empty!"
}

or

{
  "error": "bad_request",
  "error_description": "ApiProxyGroup: (PaymentAPIGroup) is already created! If you want to udate it use update endpoint!"
}

Common Causes

  • Missing required fields (name, clientRoute)
  • Empty relativePathList or empty first path
  • API Proxy Group name already exists
  • Invalid client route configuration

cURL Example

Example 1: Create Basic API Proxy Group

curl -X POST \
  "https://demo.apinizer.com/apiops/projects/MyProject/apiProxyGroups/" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "PaymentAPIGroup",
    "description": "Payment API Group",
    "clientRoute": {
      "relativePathList": [
        "/api/v1/payment"
      ],
      "methodList": ["GET", "POST", "PUT", "DELETE"],
      "bufferRequest": true,
      "bufferResponse": true
    }
  }'

Example 2: Create API Proxy Group with Host Filtering

curl -X POST \
  "https://demo.apinizer.com/apiops/projects/MyProject/apiProxyGroups/" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "RestrictedAPIGroup",
    "description": "Restricted API Group",
    "clientRoute": {
      "relativePathList": [
        "/api/v1/restricted"
      ],
      "methodList": ["GET", "POST"],
      "hostList": [
        "api.example.com"
      ],
      "bufferRequest": true,
      "bufferResponse": true
    }
  }'

Notes and Warnings

  • Name Uniqueness:
    • API Proxy Group name must be unique within the project
    • If name already exists, creation will fail
  • Client Route:
    • Client route is required
    • Must have at least one relative path
    • First path must not be empty
    • Paths must be at least 2 characters long
  • Route Matching:
    • Route matching uses AND logic
    • All specified conditions must match
  • Permissions:
    • Requires ROLE_MANAGE_PROXY_GROUPS permission
    • User must have access to the project
  • Default Settings:
    • CORS settings, cache settings, and error templates are created with defaults
    • Can be configured after creation