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/lib/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/lib/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. 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 | 7: Failed to parse the file. 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/lib/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. 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 |
| 500 | 7: Failed to parse the file. |
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/lib/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/lib/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/lib/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. |