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.

PATCH /developer-products/v2/universes/{universeId}/developer-products/{productId} — openapi

Update developer product

Updates a developer product with the provided configuration details. Note that only fields provided in the request will be updated.

Endpoint

Method: PATCH

Path: /developer-products/v2/universes/{universeId}/developer-products/{productId}

Servers:

Parameters

NameLocationRequiredDescription
universeIdpathtrueThe universe ID.
productIdpathtrueThe product ID of the developer product.
[
  {
    "name": "universeId",
    "in": "path",
    "description": "The universe ID.",
    "required": true,
    "schema": {
      "type": "integer",
      "format": "int64"
    }
  },
  {
    "name": "productId",
    "in": "path",
    "description": "The product ID of the developer product.",
    "required": true,
    "schema": {
      "type": "integer",
      "format": "int64"
    }
  }
]

Request Body

{
  "content": {
    "multipart/form-data": {
      "schema": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the developer product.",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "The description of the developer product.",
            "nullable": true
          },
          "isForSale": {
            "type": "boolean",
            "description": "Whether the developer product should be on sale.",
            "nullable": true
          },
          "price": {
            "type": "integer",
            "description": "The default price of the developer product.",
            "format": "int64",
            "nullable": true
          },
          "imageFile": {
            "type": "string",
            "description": "The thumbnail image file to be uploaded.",
            "format": "binary",
            "nullable": true
          },
          "isRegionalPricingEnabled": {
            "type": "boolean",
            "description": "Whether regional pricing should be enabled for the developer product.\r\nShould not be used when setting isManagedPricingEnabled.",
            "nullable": true,
            "deprecated": true
          },
          "storePageEnabled": {
            "type": "boolean",
            "description": "Whether the developer product should be available for purchase on the external store page.",
            "nullable": true,
            "deprecated": true
          },
          "isManagedPricingEnabled": {
            "type": "boolean",
            "description": "Whether managed pricing should be enabled for the developer product.",
            "nullable": true
          }
        }
      },
      "encoding": {
        "name": {
          "style": "form"
        },
        "description": {
          "style": "form"
        },
        "isForSale": {
          "style": "form"
        },
        "price": {
          "style": "form"
        },
        "imageFile": {
          "style": "form"
        },
        "isRegionalPricingEnabled": {
          "style": "form"
        },
        "storePageEnabled": {
          "style": "form"
        },
        "isManagedPricingEnabled": {
          "style": "form"
        }
      }
    }
  }
}

Responses

StatusDescription
204No Content
400Bad Request
401Unauthorized
403Forbidden
404Not Found
409Conflict
{
  "204": {
    "description": "No Content"
  },
  "400": {
    "description": "Bad Request",
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/ErrorResponse"
        }
      }
    }
  },
  "401": {
    "description": "Unauthorized",
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/ErrorResponse"
        }
      }
    }
  },
  "403": {
    "description": "Forbidden",
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/ErrorResponse"
        }
      }
    }
  },
  "404": {
    "description": "Not Found",
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/ErrorResponse"
        }
      }
    }
  },
  "409": {
    "description": "Conflict",
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/ErrorResponse"
        }
      }
    }
  }
}

Authentication

{
  "security": [
    {
      "roblox-legacy-cookie": []
    },
    {
      "roblox-api-key": []
    },
    {
      "roblox-oauth2": [
        "developer-product:write"
      ]
    }
  ],
  "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": [
    "Developer products"
  ],
  "summary": "Update developer product",
  "description": "Updates a developer product with the provided configuration details. \r\nNote that only fields provided in the request will be updated.",
  "operationId": "DeveloperProducts_UpdateDeveloperProductV2",
  "parameters": [
    {
      "name": "universeId",
      "in": "path",
      "description": "The universe ID.",
      "required": true,
      "schema": {
        "type": "integer",
        "format": "int64"
      }
    },
    {
      "name": "productId",
      "in": "path",
      "description": "The product ID of the developer product.",
      "required": true,
      "schema": {
        "type": "integer",
        "format": "int64"
      }
    }
  ],
  "requestBody": {
    "content": {
      "multipart/form-data": {
        "schema": {
          "type": "object",
          "properties": {
            "name": {
              "type": "string",
              "description": "The name of the developer product.",
              "nullable": true
            },
            "description": {
              "type": "string",
              "description": "The description of the developer product.",
              "nullable": true
            },
            "isForSale": {
              "type": "boolean",
              "description": "Whether the developer product should be on sale.",
              "nullable": true
            },
            "price": {
              "type": "integer",
              "description": "The default price of the developer product.",
              "format": "int64",
              "nullable": true
            },
            "imageFile": {
              "type": "string",
              "description": "The thumbnail image file to be uploaded.",
              "format": "binary",
              "nullable": true
            },
            "isRegionalPricingEnabled": {
              "type": "boolean",
              "description": "Whether regional pricing should be enabled for the developer product.\r\nShould not be used when setting isManagedPricingEnabled.",
              "nullable": true,
              "deprecated": true
            },
            "storePageEnabled": {
              "type": "boolean",
              "description": "Whether the developer product should be available for purchase on the external store page.",
              "nullable": true,
              "deprecated": true
            },
            "isManagedPricingEnabled": {
              "type": "boolean",
              "description": "Whether managed pricing should be enabled for the developer product.",
              "nullable": true
            }
          }
        },
        "encoding": {
          "name": {
            "style": "form"
          },
          "description": {
            "style": "form"
          },
          "isForSale": {
            "style": "form"
          },
          "price": {
            "style": "form"
          },
          "imageFile": {
            "style": "form"
          },
          "isRegionalPricingEnabled": {
            "style": "form"
          },
          "storePageEnabled": {
            "style": "form"
          },
          "isManagedPricingEnabled": {
            "style": "form"
          }
        }
      }
    }
  },
  "responses": {
    "204": {
      "description": "No Content"
    },
    "400": {
      "description": "Bad Request",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/ErrorResponse"
          }
        }
      }
    },
    "401": {
      "description": "Unauthorized",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/ErrorResponse"
          }
        }
      }
    },
    "403": {
      "description": "Forbidden",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/ErrorResponse"
          }
        }
      }
    },
    "404": {
      "description": "Not Found",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/ErrorResponse"
          }
        }
      }
    },
    "409": {
      "description": "Conflict",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/ErrorResponse"
          }
        }
      }
    }
  },
  "x-roblox-stability": "BETA",
  "x-roblox-rate-limits": {
    "perApiKeyOwner": {
      "period": "SECOND",
      "maxInPeriod": 3
    },
    "perOauth2Authorization": {
      "period": "SECOND",
      "maxInPeriod": 3
    }
  },
  "x-roblox-scopes": [
    {
      "name": "developer-product:write",
      "targetResourceSpecifier": "universes"
    }
  ],
  "x-roblox-engine-usability": {
    "apiKeyWithHttpService": true
  },
  "security": [
    {
      "roblox-legacy-cookie": []
    },
    {
      "roblox-api-key": []
    },
    {
      "roblox-oauth2": [
        "developer-product:write"
      ]
    }
  ],
  "externalDocs": {
    "url": "https://create.roblox.com/docs/cloud/reference/features/developer-products#DeveloperProducts_UpdateDeveloperProductV2"
  }
}