Publish v1
Reference for the Publish v1 endpoints on Roblox.
Base URL: https://publish.roblox.com
Endpoints
Section titled “Endpoints”| Method | Path | Name |
|---|---|---|
GET |
/v1/asset-quotas |
getAssetQuotas |
POST |
/v1/audio |
postAudio |
POST |
/v1/audio/verify |
postAudioVerify |
POST |
/v1/badges/:badgeId/icon |
postBadgesBadgeidIcon |
POST |
/v1/games/:gameId/thumbnail/image |
postGamesGameidThumbnailImage |
POST |
/v1/plugins/:pluginId/icon |
postPluginsPluginidIcon |
getAssetQuotas
Section titled “getAssetQuotas”GET /v1/asset-quotas
List asset quotas of the given resource type and asset type.
Usage
import { fetchApi } from 'rozod';import { getAssetQuotas } from 'rozod/endpoints/publishv1';
const data = await fetchApi(getAssetQuotas, { resourceType: /* string */, assetType: /* string */, useDummyData: /* boolean? */});Parameters
Section titled “Parameters”| Name | Type | Required | Description |
|---|---|---|---|
resourceType |
string |
Yes | Resource type of the asset quota |
assetType |
string |
Yes | Asset type of the asset quota |
useDummyData |
boolean? |
No | Use dummy data for testing. This is for internal use only |
Response
Section titled “Response”| Field | Type | Description |
|---|---|---|
quotas |
object[] |
See below |
quotas[] item fields:
| Field | Type | Description |
|---|---|---|
duration |
string |
|
usage |
number |
|
capacity |
number |
|
expirationTime |
string |
Errors
Section titled “Errors”| Status | Description |
|---|---|
| 400 | 7: The asset type is not appropriate for this request. 8: The resource type is not appropriate for this request. |
| 401 | 0: Authorization has been denied for this request. |
| 500 | 0: Reserved for base level errors. Do not use in your endpoint directly, do not document. |
postAudio
Section titled “postAudio”POST /v1/audio
Published an audio file and returns the new asset info.
Usage
import { fetchApi } from 'rozod';import { postAudio } from 'rozod/endpoints/publishv1';
const data = await fetchApi(postAudio, { body: { /* ... */ }});Request Body
Section titled “Request Body”| Field | Type | Description |
|---|---|---|
name |
string |
|
file |
string |
|
groupId |
number |
|
paymentSource |
string |
|
estimatedFileSize |
number |
|
estimatedDuration |
number |
|
assetPrivacy |
`1 | 2` |
Response
Section titled “Response”| Field | Type | Description |
|---|---|---|
Id |
number |
|
Name |
string |
Errors
Section titled “Errors”| Status | Description |
|---|---|
| 400 | 3: The request did not contain a file to be uploaded. 4: The file in the request is too large. 5: The duration of the audio file is too long. 7: Failed to parse the file. 8: The file type is not supported. 9: The file is corrupted 11: Missing permissions to spend group funds. 14: The user/group does not have suffiecient funds to publish. 14: The user/group does not have suffiecient funds to publish. 15: The audio file has already been reviewed and rejected. 18: Too many requests. Try again later. 20: Error while trying to purchase the product. 22: The file size estimation error was greater than the acceptable margin of error. 23: The duration estimation error was greater than the acceptable margin of error. 24: Asset privacy is invalid. 29: Invalid argument in the request. |
| 401 | 0: Authorization has been denied for this request. 1: The request did not include an authorization. |
| 403 | 0: Token Validation Failed |
| 500 | 19: Asset creation was unavailable. Please try again. |
postAudioVerify
Section titled “postAudioVerify”POST /v1/audio/verify
Verifies an audio file and returns a product that you can purchase to publish the audio file.
Usage
import { fetchApi } from 'rozod';import { postAudioVerify } from 'rozod/endpoints/publishv1';
const data = await fetchApi(postAudioVerify, { body: { /* ... */ }});Request Body
Section titled “Request Body”| Field | Type | Description |
|---|---|---|
name |
string |
|
file |
string |
|
groupId |
number |
|
paymentSource |
string |
|
fileSize |
number |
|
duration |
number |
Response
Section titled “Response”| Field | Type | Description |
|---|---|---|
name |
string |
|
price |
number |
|
balance |
number |
|
canAfford |
boolean |
Errors
Section titled “Errors”| Status | Description |
|---|---|
| 400 | 3: The request did not contain a file to be uploaded. 4: The file in the request is too large. 5: The duration of the audio file is too long. 7: Failed to parse the file. 8: The file type is not supported. 9: The file is corrupted 18: Too many requests. Try again later. |
| 401 | 0: Authorization has been denied for this request. 1: The request did not include an authorization. |
| 403 | 0: Token Validation Failed |
postBadgesBadgeidIcon
Section titled “postBadgesBadgeidIcon”POST /v1/badges/:badgeId/icon
Overwrites a badge icon with a new one.
Usage
import { fetchApi } from 'rozod';import { postBadgesBadgeidIcon } from 'rozod/endpoints/publishv1';
const data = await fetchApi(postBadgesBadgeidIcon, { badgeId: /* integer */, body: { /* ... */ }});Parameters
Section titled “Parameters”| Name | Type | Required | Description |
|---|---|---|---|
badgeId |
integer |
Yes | The badge Id. |
Request Body
Section titled “Request Body”| Field | Type | Description |
|---|---|---|
Files |
File |
Response
Section titled “Response”| Field | Type | Description |
|---|---|---|
targetId |
number |
Errors
Section titled “Errors”| Status | Description |
|---|---|
| 400 | 2: File not present in request. 12: Name or description is moderated. |
| 401 | 0: Authorization has been denied for this request. |
| 403 | 0: Token Validation Failed 5: You do not have permission to manage this item. |
| 404 | 4: Target item is invalid or does not exist. |
| 429 | 3: You're uploading too much, please wait and try again later. |
postGamesGameidThumbnailImage
Section titled “postGamesGameidThumbnailImage”POST /v1/games/:gameId/thumbnail/image
Uploads a game thumbnail.
Usage
import { fetchApi } from 'rozod';import { postGamesGameidThumbnailImage } from 'rozod/endpoints/publishv1';
const data = await fetchApi(postGamesGameidThumbnailImage, { gameId: /* integer */, body: { /* ... */ }});Parameters
Section titled “Parameters”| Name | Type | Required | Description |
|---|---|---|---|
gameId |
integer |
Yes | The universe Id. |
Request Body
Section titled “Request Body”| Field | Type | Description |
|---|---|---|
Files |
File |
Response
Section titled “Response”| Field | Type | Description |
|---|---|---|
targetId |
number |
Errors
Section titled “Errors”| Status | Description |
|---|---|
| 400 | 1: File uploaded does not match known image format. Try converting to png. 2: File not present in request. |
| 401 | 0: Authorization has been denied for this request. |
| 403 | 0: Token Validation Failed 5: You do not have permission to manage this item. |
| 404 | 4: Target item is invalid or does not exist. |
| 429 | 3: You're uploading too much, please wait and try again later. |
postPluginsPluginidIcon
Section titled “postPluginsPluginidIcon”POST /v1/plugins/:pluginId/icon
Overwrites a plugin icon with a new one.
Usage
import { fetchApi } from 'rozod';import { postPluginsPluginidIcon } from 'rozod/endpoints/publishv1';
const data = await fetchApi(postPluginsPluginidIcon, { pluginId: /* integer */, body: { /* ... */ }});Parameters
Section titled “Parameters”| Name | Type | Required | Description |
|---|---|---|---|
pluginId |
integer |
Yes | The plugin Id. |
Request Body
Section titled “Request Body”| Field | Type | Description |
|---|---|---|
Files |
File |
Response
Section titled “Response”| Field | Type | Description |
|---|---|---|
targetId |
number |
Errors
Section titled “Errors”| Status | Description |
|---|---|
| 400 | 2: File not present in request. |
| 401 | 0: Authorization has been denied for this request. |
| 403 | 0: Token Validation Failed 5: You do not have permission to manage this item. |
| 404 | 4: Target item is invalid or does not exist. |
| 429 | 3: You're uploading too much, please wait and try again later. |