Skip to content
FUNKYOUSHIFT.Support the tools

BUILD WITH THE COMMUNITY

One library. Your interface.

Bring approved Borderlands 4 item collections into your website, desktop app, bot, or SDK mod. Public reads need no account or API key. Keep your own design and decide how users import items.

Download integration kitOpenAPI specificationJavaScript clientPython client

Start with two requests

Base URL: https://msbt-community-library.screename53.workers.dev/api/v1

RequestWhat you get
GET /folders?q=Vex&offset=0Search titles and creators. Up to 25 results and a next offset.
GET /folders/{id}The approved collection, its ordered items, relative folder paths, and SHA-256 digest.

Read the returned next value for pagination; stop when it is null. Collections may change while paging. Public browser requests work from any origin without cookies. Administrative and submission routes are separate.

JavaScript: browser or Node 20+

Copy the downloaded client into your project. In a browser, load it with a script tag. In Node, use const CommunityLibrary = require('./community-library.js').

<script src="community-library.js"></script>
<script>
async function loadCollection() {
  const library = new CommunityLibrary();
  const page = await library.list({ query: 'Vex' });
  if (!page.folders.length) return;
  const result = await library.get(page.folders[0].id);
  // result.folder.items: { name, folder, serial }[]
  // Render text with textContent; import only after user confirmation.
  console.log(result.folder, library.shareLink(result.id));
}
loadCollection().catch(console.error);
</script>

The client verifies the digest before returning a folder, caps downloads, sets a timeout, and rejects redirects. Errors include a status property when there is an HTTP response.

Python: no dependencies

Copy community_library.py next to your code. In a game mod, fetch on a background thread and pass results to the game thread before touching UI or Unreal objects.

import community_library as library

page = library.list_folders('Vex')
if page['folders']:
    result = library.get_folder(page['folders'][0]['id'])
    for item in result['folder']['items']:
        print(item['name'], item['folder'], item['serial'])

Item titles and screenshots

Folder responses include item_details, keyed by the SHA-256 hash of the complete, case-sensitive item code. Use the GZO title when present, otherwise keep the saved item name. Display image_url for the uploaded screenshot or exact-match GZO image. Keep title_source and image_source visible as credit. These optional details are separate from the original folder and its integrity digest.

Missing or conflicting matches stay blank. Imported image links can become unavailable if their source is withdrawn.

Integration rules

Admin access

Sign in to the admin portal with your individual account. The owner assigns access: reviewers approve or reject; editors also edit; admins also delete; the owner manages the team. A new account has no team permissions.

Password changes are available. Email verification and forgotten-password recovery are not configured yet.