---
title: "POST /apiops/api-products/promote"
method: POST
path: "/apiops/api-products/promote"
tags: ["api-ops-api-product"]
---

# POST /apiops/api-products/promote

`POST /apiops/api-products/promote`

## Request

- Base URL: `http://167.86.118.166:32080`
- URL: `http://167.86.118.166:32080/apiops/api-products/promote`
- Auth: none declared
- TypeScript: <https://skmtc.dev/apinizer/apis/apinizer-management-apis/docs/apiops/api-products/promote/post.ts> (a function with typed inputs; its response is checked against the schema)

## Request body

- ProdProductPromoteRequestDTO
  - `referenceId` string
  - `nameDefault` string
  - `nameSecondary` string
  - `titleDefault` string
  - `titleSecondary` string
  - `descriptionDefault` string
  - `descriptionSecondary` string
  - `proxyRefs` ProxyRefByName[]
    - `type` string
    - `name` string
  - `plans` ApiPlanDTO[]
    - `id` string
    - `referenceId` string
    - `prodPlanRefId` string
    - `productId` string
    - `name` string
    - `rateLimit` integer
    - `quota` integer
    - `rateLimitInterval` 'SECOND' | 'MINUTE'
    - `quotaInterval` 'DAY' | 'WEEK' | 'MONTH'
    - `approvalType` 'AUTO' | 'MANUAL'
    - `state` 'ACTIVE' | 'RETIRED'
    - `pricingType` 'FREE' | 'FLAT' | 'METERED' | 'TIERED'
    - `fee` number, double
    - `currency` 'TURKISH_LIRA' | 'DOLLAR' | 'EURO'
    - `billingPeriod` 'MONTHLY' | 'ANNUALLY'
    - `feePerCall` number, double
    - `tiers` ApiPlanPricingTier[]
      - `upTo` integer
      - `pricePerCall` number, double
    - `exceedBehavior` 'BLOCK' | 'CHARGE'
    - `overageFee` number, double
    - `requestRateLimitRef` LimitProfileRef
      - `mode` 'OFF' | 'PLAN'
      - `planKey` string
    - `aiTokenBudgetRef` LimitProfileRef
      - `mode` 'OFF' | 'PLAN'
      - `planKey` string
    - `createdDate` string, date-time
    - `lastModifiedDate` string, date-time
    - `subscriptionCount` integer
    - `requestRateLimitManaged` boolean
    - `limitsNotEnforced` boolean
    - `aiTokenBudgetName` string
    - `aiTokenBudgetCountsOnly` boolean
  - `prodPortalId` string

## Response `200`

OK

- string

## Changes

- **2026-10-28** `e083046b24cd`: 2 info
  - added the new optional request property `plans/items/aiTokenBudgetCountsOnly`
  - added the new optional request property `plans/items/aiTokenBudgetName`
- **2026-10-20** `d1a546deccf0`: 1 breaking, 7 warning
  - the response's body type changed from `object` to `string` for status `200`
  - removed the request property `name`
  - removed the request property `type`
  - removed the optional property `deploymentResult` from the response with the `200` status
  - …4 more
  - …this revision’s changelog is incomplete
- **2026-08-11** `9ae232e55479`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/apinizer/apis/apinizer-management-apis/changes/apiops/api-products/promote/post.md)

---

[API](https://skmtc.dev/apinizer/apis/apinizer-management-apis.md) - [All operations](https://skmtc.dev/apinizer/apis/apinizer-management-apis/llms.txt) - [OpenAPI document](https://skmtc.dev/apinizer/apis/apinizer-management-apis/revisions/e083046b24cd?raw)
