On March 28th, 2025, ScriptBlox has entered a new reality. With growing popularity and increased traffic, there was a limit to how many performance improvements, new features, and bug fixes we can release on the website alone. We understood that in order to meet the new demands, we must also begin updating our API.
From that day on, we are actively looking for ways to optimize our API structure and responses.
For each such change that requires adaptation in services utilizing the API, this page will provide the exact change, release date, the reasoning, and the migration steps for the change.
The script search and fetch endpoints have received a major change in accepted parameters.
The filters parameter has been deprecated in favor of more explicit, separate parameters.
Having separate top level parameters for filters provides more explicit context for the request. It avoids ambiguity between filters and sorts and makes it easier to expand and provide more thorough and fine-tuned filtering capabilities.
Remove all filters and replace each with their respective top level parameter.
filters=paid/filters=free has been removed entirely due to the existence of the mode parameter (mode=paid/mode=free)- https://scriptblox.com/api/script/fetch?filters=free
+ https://scriptblox.com/api/script/fetch?mode=free
filters=verified/filters=unverified should be replaced with the verified parameter (verified=1/verified=0)- https://scriptblox.com/api/script/fetch?filters=unverified
+ https://scriptblox.com/api/script/fetch?verified=0
filters=newest/filters=oldest/filters=mostviewed/filters=leastviewed should be replaced with the order parameter along with the sortBy parameter (sortBy=createdAt&order=desc/sortBy=createdAt&order=asc/sortBy=views&order=desc/sortBy=views&order=asc)- https://scriptblox.com/api/script/fetch?filters=mostviewed
+ https://scriptblox.com/api/script/fetch?sortBy=views&order=desc
filters=hot should be replaced with a request to the dedicated endpoint. More information here.- https://scriptblox.com/api/script/fetch?filters=hot
+ https://scriptblox.com/api/script/trending
If migration isn't possible immediately, a grace period is provided during which you must add the legacy_filters parameter to the request (legacy_filters=true).
- https://scriptblox.com/api/script/fetch?filters=verified
+ https://scriptblox.com/api/script/fetch?filters=verified&legacy_filters=true
Without this parameter, your queries will result in an error.
This is done to ensure you have adequate time to migrate safely and without long term disruptions.
However, once the grace period expires, this parameter will be sunset and lose all effect, and you will be met with an error response if the filters key is kept in use.
The tags have had a change in structure.
The tags are now a plain array of strings, as opposed to an array of objects.
The previous approach did not have much benefit, as it was contributing to more clutter and payload size, and have not had any effect on the overall behavior. The new approach simplifies it, and brings some performance improvements to our end.
Remove all references to _id and id in tags, as these have been removed.
Remove all references to name, as the tag is now the value.
tag["name"] -> tag
If migration isn't possible immediately, a grace period is provided during which you can add the legacy_tags parameter to the request (legacy_tags=true), that will return the tags to the previous state (albeit with randomized ID's).
- https://scriptblox.com/api/script/[slug]
+ https://scriptblox.com/api/script/[slug]?legacy_tags=true
The images of scripts have been slightly changed in structure.
The images of the scripts have been moved into the direct image property.
The new approach heavily simplifies game handling on our end. It brings major performance improvements and allows us to better handle fallback images if a custom image is unavailable. Additionally, it brings us the future capabilities to further expand the script filtering system by game.
All references of game.imageUrl should be replaced with image.
game["imageUrl"] -> image
If migration isn't possible immediately, a grace period is provided during which you can add the legacy_img parameter to the request (legacy_img=true), that will return the image in the game.imageUrl, as it was previously.
- https://scriptblox.com/api/script/[slug]
+ https://scriptblox.com/api/script/[slug]?legacy_img=true