Maps

On this page

BloxMaps API and Studio commands

Make maps without the website: from your own server or tools with an API key, or from Roblox Studio's command bar with one line. Both use the same credits as your account, and nothing is spent without your say-so.

What it costs#

Making a map counts toward your plan's maps a day, the same as on the website. Exporting it (getting the models into Studio) spends credits from your account by the map's size:

Map sizeCredits to export
Small1
Medium2
Large4
Huge8
Extra Huge12
Ultra Huge16
Insanely Huge24
  • The size that counts is the size the generator really made (a map can come out bigger than you asked; the export tells you, and the Studio command asks again).
  • Exporting a map you exported before is free.
  • An export that fails on our side gives its credits back.
  • API exports always use credits (they don't use a plan's monthly exports). Buy credits on the pricing page.

Studio commands (the command bar)#

With the BloxMaps Cloud plugin installed and signed in (see Export a map to Roblox Studio), open View > Command Bar and run:

Command bar
_G.BloxMaps:GenerateMap("a snowy village with a castle", { size = "medium" })

The BloxMaps panel opens with a confirm card: your prompt, what exporting it costs and your balance. Press Generate and the plugin makes the map, exports it and builds it in Workspace. Press Cancel and nothing is made or spent. The import and the build are each one undo step (Ctrl+Z).

From another plugin or a script you run in Studio, require the module the plugin keeps in CoreGui:

Another plugin or script (Studio, Edit mode)
local BloxMaps = require(game:GetService("CoreGui"):WaitForChild("BloxMaps"))

local result = BloxMaps:GenerateMap("a desert canyon with a bandit camp", {
	size = "large",                       -- small, medium (the default), large, huge (your plan decides)
	theme = "western",                    -- optional: theme, time ("day", "sunset", "dawn", "night"), layout, seed
	mustHaves = { "a river", "a bridge" },-- optional, up to 6
	uploadModels = true,                  -- false: build the layout with stand-ins, fill them in later
})

if result.ok then
	print("Built", result.name, "for", result.creditsSpent, "credits; balance", result.balance)
	print(result.model:GetFullName())     -- the map's folder in Workspace
else
	warn(result.error, result.message)    -- cancelled, sign_in, edit_only, busy, bad_request, failed...
end

print(BloxMaps:GetBalance().balance)      -- credits left
print(BloxMaps:GetOptions().sizes)        -- what your plan can make
  • GenerateMap waits until the map is built (or cancelled) and never throws: check result.ok.
  • It only works in Edit mode. During Play, and in live games, it answers edit_only.
  • Your sign-in stays in the plugin's own settings. Nothing about it is put in the place, so sharing a place file never shares your account.
  • One job at a time: a second call while one runs answers busy.

API keys (your own server or tools)#

  1. Open your account page and find API keys.
  2. Give the key a name, pick its scopes, a daily credit cap (default 50, at most 1000) and a rate limit (default 30 requests a minute, at most 120), and press Create key.
  3. Copy the key (bm_live_...). It is shown once: we only keep a fingerprint of it. Lost it? Revoke it and make a new one.

Scopes: generate:map (start maps and read their status and previews), export:map (export maps to studio (spends credits) and download their models). You can have 10 active keys. A key works only on /api/v1; revoking it stops it at once.

Endpoints#

Base URL https://bloxmaps.com/api/v1. Send Authorization: Bearer bm_live_... on every call. Bodies and answers are JSON.

CallWhat it does
GET /optionsSizes, themes, times, layouts (with what your plan can use), must-have ideas and the credit cost of each size.
POST /mapsStarts a map. Body: prompt (required, up to 300 characters with its must-haves) and optional size, theme, time, layout, seed, must_haves (a list), public. Answers 202 with the map's id and export_cost. Scope generate:map.
GET /maps/{id}Status (queued, running, done, failed), name, previews (picture URLs), export_size and export_cost. Poll every few seconds.
GET /maps/{id}/preview/{kind}A preview picture (JPEG): hero, top and more when they were made.
POST /maps/{id}/exportExports a finished map and spends its credits. Needs an Idempotency-Key header (8 to 80 letters, digits, _ . : -); the same key never charges twice. Optional body {"max_credits": n} refuses a dearer export. Answers 200 with credits_spent, balance and manifest (the plan and the model list the plugin builds from), or 202 while it packs: call again with the same key, or poll GET /exports/{export_id}. Scope export:map.
GET /exports/{id}The same answer for an export (follow a 202).
GET /balanceYour credits, the cost table, and this key's cap, spent today and left today.
GET /usageThis key's history, newest first: maps started, exports charged, refunds (?limit=, ?before=).

The models a manifest lists download from the URLs in it (/api/models/...) with the same key. As on the website, an export only ships models your account hasn't received before.

Example#

Shell (curl)
KEY=bm_live_your_key_here
curl -s -X POST https://bloxmaps.com/api/v1/maps -H "Authorization: Bearer $KEY" \
     -H "Content-Type: application/json" \
     -d '{"prompt": "a snowy village with a castle", "size": "medium", "must_haves": ["a frozen lake"]}'
# -> {"id": "k3J9xQ2mLp", "status": "queued", "export_cost": 2, ...}

curl -s https://bloxmaps.com/api/v1/maps/k3J9xQ2mLp -H "Authorization: Bearer $KEY"
# poll until "status": "done", then:

curl -s -X POST https://bloxmaps.com/api/v1/maps/k3J9xQ2mLp/export -H "Authorization: Bearer $KEY" \
     -H "Idempotency-Key: village-2026-10-10-001" -H "Content-Type: application/json" -d '{"max_credits": 2}'
# -> {"export_id": "...", "status": "done", "credits_spent": 2, "balance": 18, "manifest": {...}}

Errors#

Every error is JSON: {"error": "code", "message": "what happened"} plus fields that help.

StatusCodeMeaning
400bad_prompt, bad_option, idempotency_key_requiredFix the request.
401invalid_api_key, api_key_requiredThe key is wrong, revoked or missing.
402not_enough_creditscost, balance, need and cheapest_pack (the smallest credit pack that covers it). Nothing was charged.
402upgrade_requiredYour plan can't make that size or layout.
403missing_scope, api_key_not_allowedThe key lacks the scope, or the path isn't part of the API.
409not_ready, cost_changed, idempotency_conflictThe map isn't finished; it costs more than max_credits; or that Idempotency-Key was used for another map.
422prompt_rejectedThe prompt didn't pass moderation.
429rate_limited, limit, busy, spend_capToo many requests, your maps for today are used, too many maps at once, or the key's daily credit cap is reached. Wait the Retry-After seconds.
503billing_unavailablePaid calls aren't available on this server right now.

© 2026 BloxMaps · bloxmaps.com · Terms · Privacy · Contact

BloxMaps is not affiliated with, endorsed by or sponsored by Roblox Corporation. Roblox and Roblox Studio are trademarks of Roblox Corporation.