Public Search
Model discovery remains public. Use browse for listings, search for ranked results, and filters for UI controls.
/api-embeddings/browse/api-embeddings//api-embeddings/filters开发者工具
公共搜索保持开放,用户令牌代理工作流和浏览器批准的插件授权可用,每次文件下载通过直接文件清单解析。
Downloads no longer hit a prepare endpoint. The main-site authenticates the caller, records the transaction, resolves the exact inventory entry by `format` + `lod` + `relativePath`, and returns the final worker `directUrl`.
Model discovery remains public. Use browse for listings, search for ranked results, and filters for UI controls.
/api-embeddings/browse/api-embeddings//api-embeddings/filtersUse the user-token agent flow for AI agents and automation. Register or log in, store the token, then use it on account and download routes.
/api/auth/register/api/auth/login{
"email": "agent@example.com",
"password": "choose-a-strong-password",
"name": "Agent Account"
}
First discover exact files for a model, then call the direct route with the exact file descriptor. This matters because one model can expose the same extension across multiple topology folders.
/api/download/formats/{guid}/api/download/direct{
"guid": "product-guid",
"format": "fbx",
"lod": "100k",
"relativePath": "uploads_files_6372157_100k/example.fbx"
}
{
"ok": true,
"guid": "product-guid",
"format": "fbx",
"lod": "100k",
"downloadUrl": "https://worker-0001.free3d.online/data/.../example.fbx",
"fileName": "example.fbx",
"contentType": "application/octet-stream",
"relativePath": "uploads_files_6372157_100k/example.fbx",
"chargedUsd": 1,
"balanceRemainingUsd": 99
}
Plugins stay on the browser-approved auth flow. Search is public, but account-aware downloads require a plugin token.
/api/apps/auth/start/api/apps/auth/poll/{session_id}?pollToken=...{
"appSlug": "free3d-3dsmax",
"appName": "Free3D 3ds Max Plugin",
"appVersion": "0.1.0",
"pluginFamily": "3dsmax",
"deviceName": "artist-workstation",
"requestedScopes": ["account:read", "balance:read", "entitlements:read", "download:direct", "scene:import"]
}
The plugin reads `fbxVariants` and `maxVariants` from the formats route, then calls the direct route for the exact scene file and support files. Plugins should treat the formats response as authoritative and never guess paths.
/api/plugin/download/formats/{guid}/api/plugin/download/direct{
"guid": "product-guid",
"format": "fbx",
"lod": "100k",
"variant": "static",
"relativePath": "uploads_files_6372157_100k/example.fbx"
}
{
"ok": true,
"downloadUrl": "https://worker-0001.free3d.online/data/.../example.fbx",
"supportFilesCount": 4,
"supportFiles": [
{
"relativePath": "uploads_files_6372157_100k/textures/example_basecolor.png",
"url": "https://worker-0001.free3d.online/data/.../example_basecolor.png"
}
],
"import": {
"dcc": "3dsmax",
"mode": "import",
"target": "current_scene",
"sceneFileUrl": "https://worker-0001.free3d.online/data/.../example.fbx",
"sceneRelativePath": "uploads_files_6372157_100k/example.fbx",
"assetsRootUrl": "https://worker-0001.free3d.online/data/.../uploads_files_6372157_100k",
"searchPaths": ["uploads_files_6372157_100k", "uploads_files_6372157_100k/textures"]
}
}
The model page follows the same topology-first contract. Signed-in browser users first choose topology, then format, and the UI resolves either an exact direct file or a short-lived generated archive.
/download/{guid}/format/{ext}?lod={lod}&relativePath={relativePath}/download/{guid}/textures?ext={ext}&lod={lod}&relativePath={relativePath}/download/{guid}/all?ext={ext}&lod={lod}&relativePath={relativePath}Main-site sync stays transactional and async-indexed, and the worker contract uses direct static files, rendered posters, and `files[]` inventory as the single download source of truth.
https://worker-0001.free3d.online/api-sync/status.jsonhttps://worker-0001.free3d.online/api-sync/changes?since=0&limit=50https://worker-0001.free3d.online/api-sync/product/{guid}The public 3ds Max starter uses the same browser-approved plugin auth flow and resolves downloads through the topology-first direct-file contract, using exact `fbxVariants` metadata returned by the API.
/assets/plugins/3dsmax/free3d_installer.ms/assets/plugins/3dsmax/update-feed.jsonThe public Unity starter is a single-file editor script. It uses the same browser-approved plugin auth flow, the same public search APIs, and the same direct-file plugin download contract, while checking the published update feed on editor startup.
/assets/plugins/unity/free3d_online.cs/assets/plugins/unity/update-feed.json/api/manifest.yaml
Worker
worker-manifest.yaml
/assets/manifests/worker-manifest.yaml
Worker guide
worker-guide.md
/assets/manifests/worker-guide.md
Plugin
plugin-manifest.yaml
/assets/manifests/plugin-manifest.yaml
Plugin guide
plugin-guide.md
/assets/manifests/plugin-guide.md
curl -H "Authorization: Bearer $API_TOKEN" \
"/api/download/formats/PRODUCT_GUID"
curl -X POST \
-H "Authorization: Bearer $API_TOKEN" \
-H "Content-Type: application/json" \
"/api/download/direct" \
-d '{"guid":"PRODUCT_GUID","format":"fbx","lod":"100k","relativePath":"uploads_files_6372157_100k/example.fbx"}'
curl -X POST \
-H "Authorization: Bearer $APP_TOKEN" \
-H "Content-Type: application/json" \
"/api/plugin/download/direct" \
-d '{"guid":"PRODUCT_GUID","format":"fbx","lod":"100k","variant":"static","relativePath":"uploads_files_6372157_100k/example.fbx"}'
curl -I \
"/download/PRODUCT_GUID/format/fbx?lod=100k&relativePath=uploads_files_6372157_100k/example.fbx"