Skip to content

Publish v1

Reference for the Publish v1 endpoints on Roblox.

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

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

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? */
});
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
Field Type Description
quotas object[] See below

quotas[] item fields:

Field Type Description
duration string
usage number
capacity number
expirationTime string
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.

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: { /* ... */ }
});
Field Type Description
name string
file string
groupId number
paymentSource string
estimatedFileSize number
estimatedDuration number
assetPrivacy `1 2`
Field Type Description
Id number
Name string
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.

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: { /* ... */ }
});
Field Type Description
name string
file string
groupId number
paymentSource string
fileSize number
duration number
Field Type Description
name string
price number
balance number
canAfford boolean
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

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: { /* ... */ }
});
Name Type Required Description
badgeId integer Yes The badge Id.
Field Type Description
Files File
Field Type Description
targetId number
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.

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: { /* ... */ }
});
Name Type Required Description
gameId integer Yes The universe Id.
Field Type Description
Files File
Field Type Description
targetId number
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.

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: { /* ... */ }
});
Name Type Required Description
pluginId integer Yes The plugin Id.
Field Type Description
Files File
Field Type Description
targetId number
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.