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_sizenumberNoItems per HTTP page (1-10000, default 1000)

Returns

Field Type Description
statusstringAlways "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_inbooleanWhether the user is authenticated with EOS
statusstring"idle", "syncing", "complete", or "error"
total_itemsnumberNumber of items currently cached
synced_pagesnumberNumber of HTTP pages fetched so far
errorstringError 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
offsetnumberNoStart index for pagination (default 0)
limitnumberNoMax items to return (1-500, default 50)
listing_typestringNoFilter by listing type (e.g., "megascan_3dmodel")
sellerstringNoFilter by seller name (substring, case-insensitive)
searchstringNoSearch title and description (substring, case-insensitive)

Returns

Field Type Description
totalnumberTotal items matching filters
offsetnumberStart index used
countnumberNumber of items returned in this page
itemsarrayArray 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
querystringNo*Search term for title/description
listing_typestringNo*Filter by listing type
sellerstringNo*Filter by seller name
offsetnumberNoStart index for pagination (default 0)
limitnumberNoMax 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
rolestringNoFilter by role: environment, prop, vegetation, material, character, vfx, audio, structure, tool
imported_onlybooleanNoOnly return items imported into the project
not_importedbooleanNoOnly return items not yet imported
querystringNoSearch title/description (case-insensitive substring)
listing_typestringNoFilter by Fab listingType
offsetnumberNoStart index for pagination (default 0)
limitnumberNoMax items to return (1-500, default 50)

Returns

Field Type Description
totalnumberTotal items matching filters
offsetnumberStart index used
countnumberNumber of items returned in this page
itemsarrayArray 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
forcebooleanNoRe-run cross-reference even if already done

Returns

Field Type Description
total_librarynumberTotal items in inventory
total_importednumberNumber of imported items
total_not_importednumberNumber of non-imported items
crossref_sourcestring"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
forcebooleanNoRe-classify all items even if already done

Returns

Field Type Description
classifiednumberNumber of items classified
rolesobjectMap 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
pathstringNoUE content path to clean (default "/Game")
clear_fab_trackingbooleanNoClear UFabLocalAssets CDO tracking maps (default true)
dry_runbooleanNoPreview only -- report what would be deleted without changing anything (default false)

Returns (normal)

Field Type Description
successbooleanWhether asset deletion succeeded
pathstringThe content path that was cleaned
assets_deletednumberNumber of assets that were in the directory
disk_cleanedbooleanWhether the physical directory was removed
fab_tracking_entries_clearednumberNumber of tracking entries cleared
inventory_entries_resetnumberNumber of inventory items reset to not-imported

Returns (dry run)

Field Type Description
dry_runbooleanAlways true
pathstringThe content path that would be cleaned
assets_would_deletenumberNumber 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
  }
}