5 min read

Source: Roblox Creator Hub · CC BY 4.0 · View source · Code samples: MIT Imported 2026-10-03. Formatting adapted for this site.

POST /v1/trades/{tradeId}/counter — openapi

Counters a trade.

Endpoint

Method: POST

Path: /v1/trades/{tradeId}/counter

Servers:

Parameters

NameLocationRequiredDescription
tradeIdpathtrueThe trade id.
[
  {
    "in": "path",
    "name": "tradeId",
    "description": "The trade id.",
    "required": true,
    "schema": {
      "type": "integer",
      "format": "int64"
    }
  }
]

Request Body

{
  "$ref": "#/components/requestBodies/Roblox.Trades.Api.TradeRequest"
}

Responses

StatusDescription
200OK
4002: The trade cannot be found or you are not authorized to view it. 4: You are not authorized to modify this trade. 7: The user cannot trade. See field for whether the user who cannot trade is the sender or receiver. 8: The trade request should include offers. 9: Invalid number of trade offers. 10: Invalid trade partner. See field for whether the invalid partner is the sender or receiver. 11: Cannot add negative Robux amounts to a trade. 12: One or more userAssets are invalid. See fieldData for details. 13: Invalid number of userAssets in one side of the trade. 15: The trade is unbalanced. 16: Trade value ratio is not sufficient. 17: You have insufficient Robux to make this offer. 18: Too many Robux in one side of the offer. See field for whether the side is the sender or receiver. 19: Unknown error while processing the trade. 21: Cannot trade with yourself. 22: User's privacy settings are too strict to allow trading. See field for whether the user is the sender or receiver.
4010: Authorization has been denied for this request.
4030: Token Validation Failed
42914: You are sending too many trade requests. Please slow down and try again later.
5020: An unknown error occured.
5035: Trading system is unavailable
{
  "200": {
    "description": "OK",
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/Roblox.Trades.Api.NewTradeResponse"
        }
      },
      "text/json": {
        "schema": {
          "$ref": "#/components/schemas/Roblox.Trades.Api.NewTradeResponse"
        }
      }
    }
  },
  "400": {
    "description": "2: The trade cannot be found or you are not authorized to view it.\r\n4: You are not authorized to modify this trade.\r\n7: The user cannot trade. See field for whether the user who cannot trade is the sender or receiver.\r\n8: The trade request should include offers.\r\n9: Invalid number of trade offers.\r\n10: Invalid trade partner. See field for whether the invalid partner is the sender or receiver.\r\n11: Cannot add negative Robux amounts to a trade.\r\n12: One or more userAssets are invalid. See fieldData for details.\r\n13: Invalid number of userAssets in one side of the trade.\r\n15: The trade is unbalanced.\r\n16: Trade value ratio is not sufficient.\r\n17: You have insufficient Robux to make this offer.\r\n18: Too many Robux in one side of the offer. See field for whether the side is the sender or receiver.\r\n19: Unknown error while processing the trade.\r\n21: Cannot trade with yourself.\r\n22: User's privacy settings are too strict to allow trading. See field for whether the user is the sender or receiver."
  },
  "401": {
    "description": "0: Authorization has been denied for this request."
  },
  "403": {
    "description": "0: Token Validation Failed"
  },
  "429": {
    "description": "14: You are sending too many trade requests. Please slow down and try again later."
  },
  "502": {
    "description": "0: An unknown error occured."
  },
  "503": {
    "description": "5: Trading system is unavailable"
  }
}

Authentication

{
  "security": [
    {
      "roblox-legacy-cookie": []
    }
  ],
  "securitySchemes": {
    "roblox-api-key": {
      "type": "apiKey",
      "description": "A configurable key that allows granular access to Roblox resources. See https://create.roblox.com/docs/cloud/auth/api-keys for more information.",
      "name": "x-api-key",
      "in": "header"
    },
    "roblox-legacy-cookie": {
      "type": "apiKey",
      "description": "A browser cookie that represents the identity of a Roblox user. DO NOT SHARE THIS. Sharing this will allow someone to log in as you and to steal your Robux and items. We do not recommend using cookies to call endpoints. When possible, use API keys with the x-api-key header or OAuth 2.0 instead for authentication.",
      "in": "cookie",
      "name": ".ROBLOSECURITY"
    },
    "roblox-oauth2": {
      "type": "oauth2",
      "description": "Build or authorize apps to access Roblox resources. See https://create.roblox.com/docs/cloud/auth/oauth2-overview for more information.",
      "flows": {
        "authorizationCode": {
          "authorizationUrl": "https://apis.roblox.com/oauth/v1/authorize",
          "tokenUrl": "https://apis.roblox.com/oauth/v1/token",
          "refreshUrl": "https://apis.roblox.com/oauth/v1/token",
          "scopes": {}
        }
      }
    }
  }
}

Complete Operation Definition

{
  "tags": [
    "Trades"
  ],
  "summary": "Counters a trade.",
  "parameters": [
    {
      "in": "path",
      "name": "tradeId",
      "description": "The trade id.",
      "required": true,
      "schema": {
        "type": "integer",
        "format": "int64"
      }
    }
  ],
  "requestBody": {
    "$ref": "#/components/requestBodies/Roblox.Trades.Api.TradeRequest"
  },
  "responses": {
    "200": {
      "description": "OK",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/Roblox.Trades.Api.NewTradeResponse"
          }
        },
        "text/json": {
          "schema": {
            "$ref": "#/components/schemas/Roblox.Trades.Api.NewTradeResponse"
          }
        }
      }
    },
    "400": {
      "description": "2: The trade cannot be found or you are not authorized to view it.\r\n4: You are not authorized to modify this trade.\r\n7: The user cannot trade. See field for whether the user who cannot trade is the sender or receiver.\r\n8: The trade request should include offers.\r\n9: Invalid number of trade offers.\r\n10: Invalid trade partner. See field for whether the invalid partner is the sender or receiver.\r\n11: Cannot add negative Robux amounts to a trade.\r\n12: One or more userAssets are invalid. See fieldData for details.\r\n13: Invalid number of userAssets in one side of the trade.\r\n15: The trade is unbalanced.\r\n16: Trade value ratio is not sufficient.\r\n17: You have insufficient Robux to make this offer.\r\n18: Too many Robux in one side of the offer. See field for whether the side is the sender or receiver.\r\n19: Unknown error while processing the trade.\r\n21: Cannot trade with yourself.\r\n22: User's privacy settings are too strict to allow trading. See field for whether the user is the sender or receiver."
    },
    "401": {
      "description": "0: Authorization has been denied for this request."
    },
    "403": {
      "description": "0: Token Validation Failed"
    },
    "429": {
      "description": "14: You are sending too many trade requests. Please slow down and try again later."
    },
    "502": {
      "description": "0: An unknown error occured."
    },
    "503": {
      "description": "5: Trading system is unavailable"
    }
  },
  "servers": [
    {
      "url": "https://trades.roblox.com"
    }
  ],
  "x-roblox-engine-usability": {
    "apiKeyWithHttpService": false
  },
  "security": [
    {
      "roblox-legacy-cookie": []
    }
  ],
  "externalDocs": {
    "url": "https://create.roblox.com/docs/cloud/reference/features/trades#trades_post_v1_trades__tradeId__counter"
  }
}