Boundlexx is an API that provides all kinds of information related to Boundless. I am a backend software engineer professionally and my goal with the project is to do what I do best to provide all of the information the community needs to do what they do best and build the awesome tools they do.
If there is data missing from the API you need or the data that is available does not quite meet your requirements, let’s talk so I can try to meet your needs! If it is in the wrong format, it is too hard to get everything you need quickly, or you just need help figuring something out. Just DM me here on the forums or on Discord (
Special thanks to @Mayumichi, @Simoyd, and @Gorillastomp for helping me figure out all of the related data bits to get this all up and running. Also, thanks to @DreamEvil for setting up the Discord Webhook notifications on the official TNT Discord server and ironing out the kinks in it as well.
To get started using the API, checkout the API docs and the individually endpoints for the browsable API. All of the possible searches, filters and related URLs are directly in the API for easy discovery.
- Rich API docs and API schema generation (OpenAPI 3 schema + ReDoc API Renderer): https://boundlexx.app/api/v1/.
- Full browsable API for all endpoints. Just go to an endpoint and check everything out.
- Full Localization support for in game objects (localization data pulled directly from the game, so it is the same localization as the game)
- A color API: https://boundlexx.app/api/v1/colors/
- Color API has a list of all colors and their color ID, including their real RGB HEX values
- Get all known for a given color
- An item API: https://boundlexx.app/api/v1/items/
- Includes game ID, string ID
- Resource counts for the item on known worlds (if the item is a “resource”)
- Get all known colors for a given block/item
- A world API: https://boundlexx.app/api/v1/worlds/
- List of all of the known (worlds the user that is doing the polling has access to + active)
- All of the data for the world from the game API including name, region, tier, size, atmosphere and water colors
- Full support for Sovereign/Creative worlds from the 245/246 updates
- World Poll data including counts of resources, leader board, total prestige, plots, beacons, etc. for each world
- Get all known block colors for a given world
- Get the distance (in Blinksecs) between any two given worlds
- Ability for players (mostly designed for Exoworld explorers like @Gorillastomp) to be able to upload color data
- “Full text fuzzy search” - I am using the Postgres trigram and btree_gin so for just about all of the endpoints, you can just do
?search=queryand get results related to what you are likely looking for.
- Stats for timeseries data (more below)
- A notification system that allows users to subscribe to specific events (more below)
Everyone love stats! Well, I have a boatload of them for you. Unfortunately I am starting see holes in the auto-generated API docs, so at the moment the API docs do not cover everything you can do with them. So here is a in quick crash course.
For the timeseries data I have, there are three endpoints to retrieve the data related to the data easily:
/latest/- easy shortcut to get the latest result in the timeseries if you do not care about any of the historical data.
/- a listing of all of the items in the timeseries, paged to 50 results at a time.
/stats/- a list of varies stats data for the timeseries
/stats/ you can provide filters to specify the window you want to pull results for. The format for both of these are
YYYY-MM-DD HH:MM. These are based on your local timezone and will automatically be converted properly on the backend so no worries there! The actual filters are
time_after- will only give results after the given time. For example,
time_after=2020-08-02will only give results after August 8th, 2020.
time_before- will only give results before the given time. For example,
time_before=2020-08-05 04:00will only give results before 4 AM, August 5th, 2020
time_before can be combined to select a very specific datetime range you want timeseries data on.
/stats/ also has another specials filter you can provide to split all of the results into “buckets” and give stats on each bucket. The format for the filter is a “human readable time interval”. So
bucket=4 hours will take your results and split them into even buckets of 4 hours each and then run all of the stats on each bucket and give you the results for each one.
If there are any additional stats you would like added to
/stats/, let me know! As a note for implementation, I am using a Timeseries PostgreSQL database for all of the timeseries data, so ideally there should be a PostgreSQL function to calculate the value of whatever stat you want.
Current Timeseries Endpoints:
[world_id]is the ID of the world you want
- Can be used to retrieve current player counts, beacon counts, plot counts, and total world prestige counts.
[item_id]is the ID of the item you want and
[world_id]is the ID of the world you want
- Can be used to retrieve resource counts for an item on a given world
Polling a REST API for new data can be expensive. As a way to get around that, I have added the start of a robust notification system. It is just a start, so right now I only support posting data for new Exoworlds to Discord Webhooks. In the future, I plan to support more notification types and I also plan to allow users to manage their own notification subscriptions. For now, if you would like to get this Webhook set up for a Discord server you manage, just DM me to get it set up. If there are any custom event types/notifications methods you would like support for, let’s start a conversation and work something out!
Discord Webhook - New Exoworlds
There is a lot of data for Exoworlds, so messages are not always in a single message since Discord has a hard limit on message length. Pings will how ever only happen for a single group of messages though.
Data from Exoworlds comes from two sources. So it is not always possible to post all of the data in a single ping. If the color and extra data has not be received yet, a single ping with a group of messages will be posted ASAP with the core Exoworld data and the other message with color/extra data will be posted later. If the other color/extra data exists when the core Exoworld data is received, it will only do a single ping with all of the data.
The “bot” user for the Webhook is controlled by the owner of the Webhook. I do not add a name or image to the user. That is up to you when you create the Webhook
Initial Exoworld found message (but without color/extra data available yet):
Follow up message when color and extra data is available:
What I will need from you:
Uploading Color Data:
Anyone can upload “planet json” files if they want. For security purposes, I do have the endpoint protected by an Auth Token (the Internet is a dangerous place), so just DM me to snag yourself one.
Once you get your auth token and your Planet JSON file, you can us this Python script to upload it:
I have a Metabase instance set up and running on top of the data. If there are any dashboard/graphs you would love to see put together for Boundless data, just shoot me a DM and I can get something set up for you.
- In-game Player Counts over the last week: https://metabase.boundlexx.app/public/dashboard/6778635e-73fc-4b10-9e11-d0a5880f5161
- Resource Counts over the last week: https://metabase.boundlexx.app/public/dashboard/b94da751-80fe-41d2-86b2-d0828feee7f3
- Shop prices for items! The feature is actually already implemented, but I do not have an API key yet to pull the data.
- Improved API docs. The auto-generated docs are starting to show some holes with the more complicated endpoints (like the timeseries related ones). I need to go in and clean them up and make the docs more accurate for how the endpoints work.
- A Discord bot that can query the data and also trigger notifications (see next feature)
- A notification system built on top of the Discord bot
- The notification system will be able allow users to configure what types of events that want to be notified for (or server owners to configure what types of events channels can be notified for).
- Types of notifications would include (just some initial ideas):
- a discovery of a new world (Sovereign, Creative, Exo, or even a new perm world)
- a Shop Stand/Request Basket for a specific price range/item/count
Open Source and Collaboration
I want this tool to be useful to everyone in the community that wants to use it, so please give feedback. I want to collaborate with you all as much as possible to make it as great as possible. I would love to make the project open source so you all can collaborate for real, but right now that is not possible. I am currently using private game APIs to gather World data so I do not want to open source the code until those APIs become public or I get approval from @james, et. al. for me to make the project it public. Until the project is open sourced, please post feedback, bug reports, feature requests here in the topic.
If you want to discuss anything more in depth, feel free to DM me here or on Discord (
I have had a few people say “if you need anything in game, let me know” or “if there is anything I can do to help out, let me know”. While I am not asking anything from anyone for Boundlexx some people really enjoy showing their appreciation. I will not be accepting any real world money donations, but if you really so inclined to donate, you are more than welcome to donate resources (I always love me some nice mining AoE hammers!) or coin in-game. DM me on here or Discord (
Angellus Mortis#1769) to meet up with me in-game.
If you would like to remain anonymous, that is totally cool as well. For those people, I have setup a shop stand at my shop at DK Mall (location: X1). Feel free to “buy” my horribly overpriced rock.