UEFN Marketplace REST API
A standard HTTP/JSON API for building custom tools, automating asset uploads, and integrating UEFN Marketplace into your own scripts and workflows.
REST API vs MCP — which should I use?
Both are powered by the same developer token. They serve different use cases.
REST API — this page
✅ Build custom scripts and automations
✅ Batch-upload asset packs from CI/CD pipelines
✅ Integrate with external tools (Make, Zapier, etc.)
✅ Manage listings programmatically
✅ Standard HTTP — works in any language
MCP — see the MCP guide
✅ Let AI assistants (Claude, Cursor, etc.) act on your behalf
✅ Manage Creator Studio: boards, cards, sprints, wiki, Verse
✅ No HTTP requests — AI calls tools via structured protocol
✅ Hosted (always-on) or local process — your choice
✅ Upload assets by describing what you want in chat
Shared token: Generate one token at Dashboard → Developer. It works for both the REST API (Authorization: Bearer smcp_...) and the MCP server (UEFN_API_TOKEN=smcp_...). The two integrations are independent — you don't need to use both.
Quick start
1. Generate a token
smcp_ and is shown once.2. Verify it works
curl https://uefnmarketplace.com/api/v1/me \
-H "Authorization: Bearer smcp_..."3. Start building
/api/v1. The machine-readable spec is at /api/v1/openapi.json.Authentication
Authorization header (all requests)
Authorization: Bearer smcp_YOUR_TOKEN_HEREGenerated in Dashboard → Developer. Scoped, revocable at any time.
Full example
curl https://uefnmarketplace.com/api/v1/me \
-H "Authorization: Bearer smcp_YOUR_TOKEN_HERE"
# → 200 OK
{
"id": "...",
"username": "your-username",
"is_seller": true,
...
}Token scopes
All new tokens receive the full default scope set below. You can revoke tokens at any time from Dashboard → Developer.
profile:readRead your profileprofile:writeUpdate your profileassets:readList and read your assetsassets:writeCreate, update, delete, and upload assetstokens:readList your tokens via the APItokens:revokeRevoke tokens via the APIEndpoints
Base URL: https://uefnmarketplace.com/api/v1
Platform
https://uefnmarketplace.com/api/v1/healthPublic health check — no auth required. Returns platform status.
Profile
https://uefnmarketplace.com/api/v1/meRead your profile (username, bio, seller status, social links, subscription tier).
https://uefnmarketplace.com/api/v1/meUpdate editable profile fields (display_name, bio, website).
Assets — listing management
https://uefnmarketplace.com/api/v1/assetsList your asset listings. Filter by status, paginate with limit and offset.
https://uefnmarketplace.com/api/v1/assetsCreate a new draft asset listing. Returns the asset id needed for upload steps.
https://uefnmarketplace.com/api/v1/assets/batchBatch-create up to 25 draft assets in one call. Returns per-item success/failure (207).
https://uefnmarketplace.com/api/v1/assets/:idGet full asset details including images, tags, and category.
https://uefnmarketplace.com/api/v1/assets/:idUpdate metadata, pricing, visibility, tags, or schedule.
https://uefnmarketplace.com/api/v1/assets/:idPermanently delete a draft asset. Only status=draft can be deleted.
Assets — upload lifecycle
Four-step workflow: get signed URL → PUT binary → confirm → submit
https://uefnmarketplace.com/api/v1/assets/:id/upload-urlGenerate a short-lived signed URL for uploading the asset file (ZIP, etc.).
https://uefnmarketplace.com/api/v1/assets/:id/confirm-fileRecord the uploaded file path and size on the asset. Required before submit.
https://uefnmarketplace.com/api/v1/assets/:id/images/upload-urlGenerate a signed URL for uploading a gallery image (jpg, png, webp).
https://uefnmarketplace.com/api/v1/assets/:id/confirm-imageRegister an uploaded image in the asset gallery. First image becomes the thumbnail.
https://uefnmarketplace.com/api/v1/assets/:id/submitSubmit a draft or rejected asset for moderation review. Asset must have an uploaded file.
Token management
https://uefnmarketplace.com/api/v1/tokensList all your developer tokens (names, prefixes, last used at).
https://uefnmarketplace.com/api/v1/tokens?id=:uuidRevoke a specific token by its UUID. The token stops working immediately.
Full upload walkthrough
Complete workflow for creating an asset listing and uploading its file and cover image. All four upload steps are required before submitting for review.
Step 1 — Create the draft listing
POST https://uefnmarketplace.com/api/v1/assets
Authorization: Bearer smcp_YOUR_TOKEN
{
"title": "Epic Forest Pack",
"slug": "epic-forest-pack",
"description": "High-quality forest assets for UEFN maps.",
"pricing_type": "fixed",
"price": 9.99,
"visibility": "public",
"tags": ["nature", "forest", "UEFN"]
}
# → 201 Created
{ "id": "asset-uuid", "status": "draft", ... }Step 2 — Upload the asset file
Get a signed URL, PUT the file, then confirm
# 2a. Get a signed upload URL (valid for ~1 hour)
POST https://uefnmarketplace.com/api/v1/assets/asset-uuid/upload-url
{ "filename": "epic-forest-pack-v1.zip" }
# Response: { "signed_url": "https://...", "storage_path": "..." }
# 2b. PUT the file binary directly to storage (no Authorization header)
curl -X PUT "<signed_url>" \
--upload-file epic-forest-pack-v1.zip \
-H "Content-Type: application/zip"
# 2c. Record the file on the asset
POST https://uefnmarketplace.com/api/v1/assets/asset-uuid/confirm-file
{ "storage_path": "...", "file_size": 4294967 }
# → { "success": true }Step 3 — Upload gallery images (optional but recommended)
Repeat for each image. The first image becomes the primary thumbnail.
# 3a. Get a signed URL for the image
POST https://uefnmarketplace.com/api/v1/assets/asset-uuid/images/upload-url
{ "filename": "preview.jpg" }
# Response: { "signed_url": "...", "storage_path": "...", "public_url": "https://..." }
# 3b. PUT the image binary
curl -X PUT "<signed_url>" \
--upload-file preview.jpg \
-H "Content-Type: image/jpeg"
# 3c. Register the image in the gallery
POST https://uefnmarketplace.com/api/v1/assets/asset-uuid/confirm-image
{ "public_url": "https://..." }
# → { "id": "img-uuid", "is_primary": true, ... }Step 4 — Submit for review
POST https://uefnmarketplace.com/api/v1/assets/asset-uuid/submit
# → 200 OK
{ "success": true, "status": "pending" }
# Asset is now in the moderation queue.Error codes
401 UNAUTHORIZEDMissing, invalid, expired, or revoked token.403 FORBIDDENToken does not have the required scope.404 NOT_FOUNDResource does not exist or does not belong to you.409 CONFLICTSlug already taken (create) or status prevents the action (submit requires draft/rejected, delete requires draft).422 NO_FILETried to submit an asset that has no uploaded file.429 RATE_LIMITEDToo many requests — back off and retry.500 SERVER_ERRORInternal error — retry or contact support at uefnmarketplace.com/contact.Want to use an AI assistant instead of writing HTTP requests?
The MCP server lets Claude, Cursor, VS Code Copilot, and any MCP-compatible AI assistant call tools on your behalf — no HTTP required. It uses the same developer token and supports asset uploads plus the full Creator Studio (boards, Verse snippets, sprints, wiki, and more).
MCP setup guide