editor.fab
Provides access to the user's Fab (fab.com) asset library via EOS authentication and the Fab HTTP API. Enables querying owned assets for intelligent asset selection without requiring them to be imported into the project first.
← API Reference
Note: Programmatic Fab downloads are not supported. There is no public Fab API for downloading assets. Use the Fab browser tab in the editor to download assets manually.
editor.fab.sync
Trigger a full sync of the user's Fab library from the Fab backend. Clears the cached library and starts fetching all owned assets via paginated HTTP requests. Returns immediately with "syncing" status -- use editor.fab.status to poll for completion.
| Name | Type | Required | Description |
batch_size | number | No | Items per HTTP page (1-10000, default 1000) |
Returns
| Field | Type | Description |
status | string | Always "syncing" on success |
Example Request
{
"jsonrpc": "2.0",
"id": 1,
"method": "editor.fab.sync",
"params": {}
}
Example Response
{
"jsonrpc": "2.0",
"id": 1,
"result": { "status": "syncing" }
}
editor.fab.status
Check the current sync status and authentication state.
No parameters.
Returns
| Field | Type | Description |
logged_in | boolean | Whether the user is authenticated with EOS |
status | string | "idle", "syncing", "complete", or "error" |
total_items | number | Number of items currently cached |
synced_pages | number | Number of HTTP pages fetched so far |
error | string | Error message (only present when status is "error") |
Example Request
{
"jsonrpc": "2.0",
"id": 1,
"method": "editor.fab.status"
}
Example Response
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"logged_in": true,
"status": "complete",
"total_items": 347,
"synced_pages": 1
}
}
editor.fab.library
Return the cached Fab library inventory with optional filtering and pagination.
| Name | Type | Required | Description |
offset | number | No | Start index for pagination (default 0) |
limit | number | No | Max items to return (1-500, default 50) |
listing_type | string | No | Filter by listing type (e.g., "megascan_3dmodel") |
seller | string | No | Filter by seller name (substring, case-insensitive) |
search | string | No | Search title and description (substring, case-insensitive) |
Returns
| Field | Type | Description |
total | number | Total items matching filters |
offset | number | Start index used |
count | number | Number of items returned in this page |
items | array | Array of library item objects (title, assetId, listingType, seller, source, url, distributionMethod, description, thumbnail) |
Example Request
{
"jsonrpc": "2.0",
"id": 1,
"method": "editor.fab.library",
"params": { "offset": 0, "limit": 10 }
}
editor.fab.search
Search the cached library by query, listing type, or seller. At least one filter parameter is required. Searches are case-insensitive substring matches against title and description.
| Name | Type | Required | Description |
query | string | No* | Search term for title/description |
listing_type | string | No* | Filter by listing type |
seller | string | No* | Filter by seller name |
offset | number | No | Start index for pagination (default 0) |
limit | number | No | Max items to return (1-500, default 50) |
*At least one of query, listing_type, or seller is required.
Returns
Same format as editor.fab.library.
Example Request
{
"jsonrpc": "2.0",
"id": 1,
"method": "editor.fab.search",
"params": { "query": "forest", "listing_type": "environment" }
}
editor.fab.inventory
Unified inventory view combining Fab library data with import status and role classification. Returns Fab library items enriched with role, imported status, and importPath.
| Name | Type | Required | Description |
role | string | No | Filter by role: environment, prop, vegetation, material, character, vfx, audio, structure, tool |
imported_only | boolean | No | Only return items imported into the project |
not_imported | boolean | No | Only return items not yet imported |
query | string | No | Search title/description (case-insensitive substring) |
listing_type | string | No | Filter by Fab listingType |
offset | number | No | Start index for pagination (default 0) |
limit | number | No | Max items to return (1-500, default 50) |
Returns
| Field | Type | Description |
total | number | Total items matching filters |
offset | number | Start index used |
count | number | Number of items returned in this page |
items | array | Array of inventory entry objects (all library fields plus role, imported, importPath) |
Example Request
{
"jsonrpc": "2.0",
"id": 1,
"method": "editor.fab.inventory",
"params": { "role": "vegetation", "imported_only": true, "limit": 10 }
}
editor.fab.crossref
Cross-reference Fab library items with imported project assets via UFabLocalAssets reflection. Reads Epic's UFabLocalAssets class to determine which library items have been imported and their UE content paths.
| Name | Type | Required | Description |
force | boolean | No | Re-run cross-reference even if already done |
Returns
| Field | Type | Description |
total_library | number | Total items in inventory |
total_imported | number | Number of imported items |
total_not_imported | number | Number of non-imported items |
crossref_source | string | "reflection" (fresh run) or "cached" (previous result) |
Example Request
{
"jsonrpc": "2.0",
"id": 1,
"method": "editor.fab.crossref",
"params": { "force": true }
}
editor.fab.classify
Classify Fab library items into scene-building roles using deterministic heuristics. Assigns a role to each inventory entry based on its listingType (primary signal) and importPath (fallback).
| Name | Type | Required | Description |
force | boolean | No | Re-classify all items even if already done |
Returns
| Field | Type | Description |
classified | number | Number of items classified |
roles | object | Map of role name to count |
Example Request
{
"jsonrpc": "2.0",
"id": 1,
"method": "editor.fab.classify",
"params": {}
}
Example Response
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"classified": 347,
"roles": {
"prop": 120,
"material": 95,
"vegetation": 45,
"environment": 38,
"character": 15,
"vfx": 12,
"audio": 10,
"tool": 8,
"structure": 4
}
}
}
editor.fab.cleanup
Delete imported assets from a content path, clear Fab tracking data, and reset inventory import status. Supports dry-run mode to preview the operation without making changes.
| Name | Type | Required | Description |
path | string | No | UE content path to clean (default "/Game") |
clear_fab_tracking | boolean | No | Clear UFabLocalAssets CDO tracking maps (default true) |
dry_run | boolean | No | Preview only -- report what would be deleted without changing anything (default false) |
Returns (normal)
| Field | Type | Description |
success | boolean | Whether asset deletion succeeded |
path | string | The content path that was cleaned |
assets_deleted | number | Number of assets that were in the directory |
disk_cleaned | boolean | Whether the physical directory was removed |
fab_tracking_entries_cleared | number | Number of tracking entries cleared |
inventory_entries_reset | number | Number of inventory items reset to not-imported |
Returns (dry run)
| Field | Type | Description |
dry_run | boolean | Always true |
path | string | The content path that would be cleaned |
assets_would_delete | number | Number of assets that would be deleted |
Example Request
{
"jsonrpc": "2.0",
"id": 1,
"method": "editor.fab.cleanup",
"params": { "path": "/Game/Megascans", "dry_run": true }
}
Example Response (dry run)
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"dry_run": true,
"path": "/Game/Megascans",
"assets_would_delete": 245
}
}