Skip to content

Publish v1

Reference for the Publish v1 endpoints on Roblox.

Base URL: https://publish.roblox.com

MethodPathName
GET/v1/asset-quotasgetAssetQuotas
POST/v1/audiopostAudio
POST/v1/audio/verifypostAudioVerify
POST/v1/badges/:badgeId/iconpostBadgesBadgeidIcon
POST/v1/games/:gameId/thumbnail/imagepostGamesGameidThumbnailImage
POST/v1/plugins/:pluginId/iconpostPluginsPluginidIcon

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? */
});
NameTypeRequiredDescription
resourceTypestringYesResource type of the asset quota
assetTypestringYesAsset type of the asset quota
useDummyDataboolean?NoUse dummy data for testing. This is for internal use only
FieldTypeDescription
quotasobject[]See below

quotas[] item fields:

FieldTypeDescription
durationstring
usagenumber
capacitynumber
expirationTimestring
StatusDescription
4007: The asset type is not appropriate for this request.
8: The resource type is not appropriate for this request.
4010: Authorization has been denied for this request.
5000: Reserved for base level errors. Do not use in your endpoint directly, do not document.

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: { /* ... */ }
});
FieldTypeDescription
namestring
filestring
groupIdnumber
paymentSourcestring
estimatedFileSizenumber
estimatedDurationnumber
assetPrivacy`12`
FieldTypeDescription
Idnumber
Namestring
StatusDescription
4003: 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.
4010: Authorization has been denied for this request.
1: The request did not include an authorization.
4030: Token Validation Failed
5007: Failed to parse the file.
19: Asset creation was unavailable. Please try again.

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: { /* ... */ }
});
FieldTypeDescription
namestring
filestring
groupIdnumber
paymentSourcestring
fileSizenumber
durationnumber
FieldTypeDescription
namestring
pricenumber
balancenumber
canAffordboolean
StatusDescription
4003: 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.
4010: Authorization has been denied for this request.
1: The request did not include an authorization.
4030: Token Validation Failed
5007: Failed to parse the file.

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: { /* ... */ }
});
NameTypeRequiredDescription
badgeIdintegerYesThe badge Id.
FieldTypeDescription
FilesFile
FieldTypeDescription
targetIdnumber
StatusDescription
4002: File not present in request.
12: Name or description is moderated.
4010: Authorization has been denied for this request.
4030: Token Validation Failed
5: You do not have permission to manage this item.
4044: Target item is invalid or does not exist.
4293: You’re uploading too much, please wait and try again later.

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: { /* ... */ }
});
NameTypeRequiredDescription
gameIdintegerYesThe universe Id.
FieldTypeDescription
FilesFile
FieldTypeDescription
targetIdnumber
StatusDescription
4001: File uploaded does not match known image format. Try converting to png.
2: File not present in request.
4010: Authorization has been denied for this request.
4030: Token Validation Failed
5: You do not have permission to manage this item.
4044: Target item is invalid or does not exist.
4293: You’re uploading too much, please wait and try again later.

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: { /* ... */ }
});
NameTypeRequiredDescription
pluginIdintegerYesThe plugin Id.
FieldTypeDescription
FilesFile
FieldTypeDescription
targetIdnumber
StatusDescription
4002: File not present in request.
4010: Authorization has been denied for this request.
4030: Token Validation Failed
5: You do not have permission to manage this item.
4044: Target item is invalid or does not exist.
4293: You’re uploading too much, please wait and try again later.