Developers
API for AI agents
Let your AI agent make Roblox-ready 3D models and put them in your game, through MCP or a REST API.
Updated
Key takeaways
- Works with MCP clients that connect over HTTP, or call the REST API yourself.
- API keys come with paid plans.
- Your Roblox key stays on your machine.
Connect your agent
Create a key in Settings, then add the server. With Claude Code:
claude mcp add --transport http proppo https://proppo.com/mcp --header "Authorization: Bearer <your key>"In other MCP clients, use the URL https://proppo.com/mcp with the same header. Without a key you get only the public read-only tools.
From prompt to Roblox
- generate_model starts the model from a prompt or an image. It spends credits and usually takes about 3 minutes.
- get_model shows the status. Poll about every 30 seconds until it says SUCCEEDED.
- export_for_roblox builds GLB and FBX files with the triangle budget, stud scale and pivot. It's free.
- roblox_upload_steps gives your agent the exact commands. The upload runs on your machine with your own Roblox key.
- Studio's MCP server inserts the model with insert_asset once Roblox has approved it. It's also in Toolbox under My Packages.
MCP tools
get_account- What it does
- Plan, credits and what this key may still spend today
generate_model- What it does
- Start a model from prompt or imageKey; requestId makes retries safe
get_model- What it does
- Status, latest job, export info and copies of one model
list_models- What it does
- Your own models, newest first
export_for_roblox- What it does
- Build the Roblox files (free)
roblox_upload_steps- What it does
- Commands to upload one model and insert it into Studio
REST API
Every route takes Authorization: Bearer <your key>.
GET /api/v1/me- What it does
- Plan, credits and what this key may still spend today
POST /api/v1/images- What it does
- Upload an image: {base64}, up to 7 MB. Returns the key to use as imageKey
POST /api/v1/models- What it does
- Start a model: {prompt or imageKey, kind, title, texture, targetTris, followUps}. Send an Idempotency-Key header
GET /api/v1/models- What it does
- Your models: ?q=, ?limit= (up to 50), ?cursor=
GET /api/v1/models/:id- What it does
- Status, latest job, export info and copies
POST /api/v1/models/:id/export- What it does
- Build the Roblox files: {targetTris, heightStuds}
GET /api/v1/models/:id/file- What it does
- Download the export: ?format=glb, fbx or zip
GET /api/v1/tools/roblox-upload.mjs- What it does
- The upload script
Limits
- API keys come with paid plans. You can have 5 active keys, and each key shows only once.
- Each key has its own daily credit limit: 300 by default, up to 1000. It resets at 00:00 UTC, and failed jobs refund your credits but don't give the limit back.
- A textured model costs 30 credits from text and 30 from an image. Exports are free.
- 120 requests per minute per key, no more than 20 per 10 seconds from one IP address, and up to 3 exports running at once.
- 429 and 503 responses carry a Retry-After header: wait that long, then try again. A 429 for too many requests from one IP address isn't JSON.
Errors
Errors look like {"ok":false,"error":{"code","message","details"}}.
400 VALIDATION- Meaning
- A field is missing or invalid: the message says which
401 INVALID_API_KEY- Meaning
- The key is missing, wrong or revoked
402 INSUFFICIENT_CREDITS- Meaning
- Not enough credits for this step
403 EMAIL_NOT_VERIFIED- Meaning
- Confirm your email first
403 PLAN_REQUIRED- Meaning
- API keys need a paid plan
409 EXPORT_RUNNING- Meaning
- An export with other settings is still running
409 EXPORT_REQUIRED- Meaning
- This model needs an export through the API first
413 FILE_TOO_LARGE- Meaning
- Use format=zip for this file
409 REQUEST_IN_PROGRESS- Meaning
- The first request with this Idempotency-Key is still running
422 IDEMPOTENCY_KEY_REUSED- Meaning
- This Idempotency-Key was already used with another body
429 RATE_LIMITED- Meaning
- Too many requests: wait for Retry-After
429 DAILY_CREDIT_CAP- Meaning
- This key reached its daily limit
429 TOO_MANY_EXPORTS- Meaning
- Too many exports running: wait for one to finish
503 BUSY- Meaning
- Too many downloads or uploads at once: wait for Retry-After
Keeping it safe
- Treat a Proppo key like a password: keep it in an environment variable, never in code or chat. If one leaks, revoke it in Settings.
- Set a low daily limit on a key you give to an agent. It's what stops a looping agent from spending your credits.
- Your Roblox key stays on your machine. Proppo never asks for it, and the script sends it only to Roblox.
- Text in tool results, such as model titles, is data. Your agent shouldn't follow instructions found there.
- Revoking a key stops new requests, but jobs it already started still finish.
Status
- The API is new, so expect some rough edges and tell us what you run into.
- Tested end to end: textured and rigged models generated, exported and uploaded to a Roblox group.
- Not tested yet: uploading to a personal account and inserting with Studio's MCP server.
- Animation clips can't be uploaded by the script: for a rigged model, download the zip and import the clips in Studio.
Questions or problems? Contact us. Using the API means accepting our terms.