Skip to main content
REST API v1

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

✅ 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

Go to Dashboard → Developer and click New Token. Copy it — it starts with smcp_ and is shown once.

2. Verify it works

curl https://uefnmarketplace.com/api/v1/me \
  -H "Authorization: Bearer smcp_..."

3. Start building

All endpoints live under /api/v1. The machine-readable spec is at /api/v1/openapi.json.

Authentication

Authorization header (all requests)

Authorization: Bearer smcp_YOUR_TOKEN_HERE

Generated 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 profile
profile:writeUpdate your profile
assets:readList and read your assets
assets:writeCreate, update, delete, and upload assets
tokens:readList your tokens via the API
tokens:revokeRevoke tokens via the API

Endpoints

Base URL: https://uefnmarketplace.com/api/v1

Platform

GET
https://uefnmarketplace.com/api/v1/health

Public health check — no auth required. Returns platform status.

Profile

GET
https://uefnmarketplace.com/api/v1/me

Read your profile (username, bio, seller status, social links, subscription tier).

profile:read
PATCH
https://uefnmarketplace.com/api/v1/me

Update editable profile fields (display_name, bio, website).

profile:write

Assets — listing management

GET
https://uefnmarketplace.com/api/v1/assets

List your asset listings. Filter by status, paginate with limit and offset.

assets:read
POST
https://uefnmarketplace.com/api/v1/assets

Create a new draft asset listing. Returns the asset id needed for upload steps.

assets:write
POST
https://uefnmarketplace.com/api/v1/assets/batch

Batch-create up to 25 draft assets in one call. Returns per-item success/failure (207).

assets:write
GET
https://uefnmarketplace.com/api/v1/assets/:id

Get full asset details including images, tags, and category.

assets:read
PATCH
https://uefnmarketplace.com/api/v1/assets/:id

Update metadata, pricing, visibility, tags, or schedule.

assets:write
DELETE
https://uefnmarketplace.com/api/v1/assets/:id

Permanently delete a draft asset. Only status=draft can be deleted.

assets:write

Assets — upload lifecycle

Four-step workflow: get signed URL → PUT binary → confirm → submit

POST
https://uefnmarketplace.com/api/v1/assets/:id/upload-url

Generate a short-lived signed URL for uploading the asset file (ZIP, etc.).

assets:write
POST
https://uefnmarketplace.com/api/v1/assets/:id/confirm-file

Record the uploaded file path and size on the asset. Required before submit.

assets:write
POST
https://uefnmarketplace.com/api/v1/assets/:id/images/upload-url

Generate a signed URL for uploading a gallery image (jpg, png, webp).

assets:write
POST
https://uefnmarketplace.com/api/v1/assets/:id/confirm-image

Register an uploaded image in the asset gallery. First image becomes the thumbnail.

assets:write
POST
https://uefnmarketplace.com/api/v1/assets/:id/submit

Submit a draft or rejected asset for moderation review. Asset must have an uploaded file.

assets:write

Token management

GET
https://uefnmarketplace.com/api/v1/tokens

List all your developer tokens (names, prefixes, last used at).

tokens:read
DELETE
https://uefnmarketplace.com/api/v1/tokens?id=:uuid

Revoke a specific token by its UUID. The token stops working immediately.

tokens:revoke

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