DAM Wiki

MediaBeacon API

Esko (MediaBeacon product line) · Belgium (Esko HQ, Ghent); MediaBeacon originated in Minneapolis, MN (USA) · Founded 1989 · subsidiary of Esko, part of VeraltoVerified 2026-10-01 · 53 sources
  • SaaS
  • On-premise
  • Enterprise
  • REST API
  • No webhooks
  • SAML · LDAP SSO
Complete · 7 of 7 pages
53sources
0API specs
10-01verified 2026
Official website ↗MediaBeacon alternatives →

Scope: the developer surface of MediaBeacon 25.07, the latest version with public documentation (2026-10-01). MediaBeacon has three APIs, documented together. The REST API v2 is called over HTTP by external systems. The Workflow JavaScript API is server-side scripting inside MediaBeacon, also used to build integrations. The Client JS API runs in the user's browser inside the MediaBeacon UI S6 S22. A legacy REST API v1 is still documented in the downloadable bundle S5.

Where the docs live: the 25.07 "API Documentation" PDF on docs.esko.com only points to mediabeacon.com/en/api-documentation S6, and that URL now redirects to the Esko product page S21. The reference itself is still served, without login, from the vendor's S3 documentation bucket (mb-buildstorage.s3.amazonaws.com/{version}/Current/API/…). These are the links the former API page used (last archived 2024-06-25) S22 S45.

At a glance

API styles
REST over HTTP(S), JSON (default) or XML responses S2. Plus two JavaScript APIs: server-side Workflow API (Rhino scripting, Java packages com.brightech.mb.workflow.*) S3 and browser-side Client JS API (window.MBAPI, GWT modules) S4 S13. No GraphQL, no SOAP found
Base URL(s)
Per installation: https://{tenant}/wf/restapi/v2/{endpoint} (admin endpoints under /wf/restapi/v2/admin/…) S1 S2. Legacy v1: /wf/restapi/1/{endpoint}; the v1 examples use the built-in web server on port 55555 S5. {tenant} = the customer's MediaBeacon host (on-premise or MediaBeacon Cloud)
Current version(s) & deprecations
REST v2 is current. REST v1 still ships in the 25.07 doc bundle but is no longer linked online S5 S45. API docs are versioned with the product (YY.MM: 21.03 … 25.07; earlier 2018.1–2020.2 and 7.8/8.x) S23 S25 S7. Deprecated: upload parameter replace (use version) S1. No API deprecation policy published — Not public
Auth methods
Three ways for REST: (1) user + pass request parameters (plain text, for manual tests); (2) HTTP Basic; (3) API key, the usual method, passed as an apikey parameter (URL or body) or as a header S2. Client JS API calls run in the logged-in user's session S22 S4
Token lifetime / refresh
API keys created in the UI or with getApiKey are tied to one user and are permanent unless deleted S2 S1. Workflows can also create expiring keys (lifetime in ms) and workflow-only keys that can run only one named workflow S3. The admin System Status page lists keys with their expiry dates S9. No OAuth, no refresh tokens
Scopes / permission model
No scopes: a key acts as its user. Calls run in the user's default group/ACL unless acl_id is passed (IDs from GET/wf/restapi/v2/groups) S2 S1. Fields are returned only if visible in a form of the ACL (to see all fields, use a key whose group has a high view level) S1 S13
Official spec
None public: no OpenAPI, Swagger, Postman or WSDL file. Reference = JSDoc Toolkit pages (REST) and Javadoc (Workflow, Client JS), plus a zipped bundle per version S1 S3 S4 S5. See API spec downloads for provenance; no file stored
Rate limits
Not public (no throttling documented). Practical limit: GET requests are capped at 2,048 characters and cannot carry files; use POST/PUT for large requests S2
Pagination
pageIndex (0-based) + pageSize (default 100) on search and quickSearch S1; pageNumber + pageSize (default 1,000) on facets S1. Maximum page size: Not public
Webhooks / events
No webhooks. Events are handled inside MediaBeacon by workflows with asset-based triggers (added, modified, moved, renamed, copied, removed, downloaded, checked in, permission changed), scheduled triggers or client-side triggers S3 S9. A workflow can call an external URL with its AJAX object (default timeout 15 s) S3
Official SDKs
None (no npm, PyPI, NuGet or Maven package; no official GitHub organisation) S47. The Workflow and Client JS APIs act as the extension SDK S9
Sandbox / trial access
No public sandbox or trial; the vendor offered API training on request S22 S20. Staging/dev installs are part of self-hosted sizing guidance S10

Authentication

  1. Create a key in the UI: log in as the user the integration should act as, open Manage → System Status → API Keys and choose Create API Key S2. Administrators see all keys, the user who last used each one, and expiry dates S9.
  2. Or by API: GET|POST /wf/restapi/v2/getApiKey?name=… fetches or creates a key for the authenticated user (default name "REST Api Key"); deleteApiKey removes one, subject to permissions S1.
  3. Send it as apikey=<key> in the query string or form body, or in a request header S2. HTTP Basic (Authorization: Basic …) or user/pass parameters also work S2.
  4. Choose the ACL: add acl_id=<id> to run under a specific group/ACL; otherwise the user's default ACL is used S2.
  5. From workflows: apiKeyManager creates permanent, expiring or workflow-restricted keys, e.g. to hand a narrowly scoped key to an external system S3.

SSO (SAML/IdP) covers interactive log-in only. No token-based federated API authentication is documented S9 S12.

Core resources

REST v2 reference 25.07: 48 documented endpoint pages (some endpoints have one page per HTTP method) S1. The API accepts GET, POST and PUT interchangeably for most endpoints; the admin managers distinguish GET/POST/PUT/DELETE S2 S1. All paths are relative to https://{tenant}.

ResourceEndpointsNotes
Assets/wf/restapi/v2/assets (by ids or resolver URL), /AssetsByPathverbose=true adds name, path, size, dimensions, MIME type, preview URLs; fields=[…] adds metadata S1 S2
Metadata (fields schema)/fields, /setFields, /getXmp, /setXmpField IDs are XMP namespace + name, e.g. http://purl.org/dc/elements/1.1/ subject S1 S2
Controlled vocabularies/dictionary, /wordList dictionaries with words; create or update terms S1
Search/search (JSON criteria or savedSearchId), /quickSearch, /typeAhead, /facets, /savedSearchesSee Search & querying S1
Folders (directories)/directories (tree, depth, children), /create, /move, /rename, /deletePaths or directory IDs S1
Collections/savedSelectionsSaved selections (shared collections) with their assets S1
Uploads & versions/upload (multipart form, dest or destId), /import, /checkIn, /checkOut (checkout or cancel), /getCompletedAssetsSee Uploads & binaries S1
Renditions / derivatives/conversion (format, colour space, scale, resolution → file in a target directory), /download (ZIP + 302 redirect), /compressFiles, /decompressFilesPreview and download URLs come in verbose asset data S1
Relationships/getLinks, /setLinksAsset link groups S1
Comments/getDiscussion, /setDiscussionPer-asset discussion thread S1
Users / groups / ACLs/userInfo, /groups; admin: /admin/userManager, /admin/groupManager, /admin/aclManager (GET, POST, PUT, DELETE)Create, update and remove users, groups and ACL objects in bulk S1
API keys/getApiKey, /deleteApiKey S1
RightsNo dedicated endpoint; rights are metadata fields plus ACL rules (Conditional Download) S8 Unverified (inferred from the absence of a rights endpoint)
WorkflowsNo REST endpoint to manage workflows; client-triggerable workflows get a Workflow ID that can be triggered through the API S9 Unverified (exact HTTP call not documented in the REST reference)

Legacy REST v1 (/wf/restapi/1/…, 29 documented operations such as search, info, getPreviews, generateContactSheet, pathToAssetId, submitAssets, upload) S5. The doc source paths show that the REST endpoints are themselves packaged as JavaScript workflows ("RESTWorkflows") S5 Unverified (inferred from file names).

Workflow JavaScript API (server-side): 148 class pages, including managers exposed as globals in a workflow context. Documented globals include fileManager, searchManager, fieldManager, dictionaryManager, userManager, groupManager, apiKeyManager, pluginManager, s3Manager, linkManager, versionManager, previewManager, mailManager, notificationManager, savedSelectionManager, loadingDockManager. Other classes cover external sharing, video, metrics and workflow control. Also trigger event/configuration classes, AJAX for outbound HTTP, SQL access to external data sources, and PDF/contact-sheet helpers S3.

Client JS API (browser): publishers for search, selection, metadata (MBAPI.md.batchSetField), download, upload, permissions, notifications, M3TA forms and menus, plus UI events (selection, view, workspace change) S4 S13 S15.

Data model

  • Asset: numeric asset ID (also called record ID), file name, managed path, directory ID, width/height, bytes, lastModified (epoch ms), MIME type, previews (thumbnail, viewex preview, downloadUrl servlet links), and optional publishedRenditions (preset name → public S3 URL, renditions licence required) S1 S2.
  • Resolver URLs address sets of assets or directories (e.g. directory://182) and can replace an ids array S1 S2.
  • Metadata: XMP properties keyed by "<namespace URI> <name>". Values are strings or arrays (multi-value). Repeating data blocks are structured values S1 S9. MediaBeacon-specific namespaces include http://ns.mediabeacon.com/… and a metrics schema S9 S1.
  • Directories: {name, path, id, resolver, hasChildren, assets[]} S1.
  • Security: users → groups → ACLs. ACL IDs are strings (e.g. 0_6_<GUID>) S2 S9.

Search & querying

  • Structured search (/search): a JSON object {conjunction: "and"|"or", criteria: [{fieldId, condition, value}]}. Conditions depend on field type: eq, ne, lt, le, gt, ge, between (dates), cont, not_cont, beg, end, null, not, cont_part, all, any, phrase, wo (without word), anyval, notchanged… S1. A special directory pseudo-field restricts by path S1.
  • Saved searches run by savedSearchId S1. Quick search takes a string, optionally limited to a directory S1. Type-ahead returns R3Search suggestions S1.
  • Sorting: sortField (field ID or record_id) + sortDirection ASC/DESC S1.
  • Facets: /facets?fieldId=… with paging and hierarchyLevel for hierarchical fields S1. Empty / not-empty conditions on asset-link fields arrived in 25.03 S13.
  • Post-filters: with verbose=true, responses can be filtered on id, name, path, height, width, bytes, lastModified, mimeType, resolver, using wildcards (test*) and comparisons (bytes=>4095). Filters apply after the operation, so for paging the docs recommend search criteria instead S2 S1.
  • Deep pagination: page index only; no cursor or scroll documented; total-count field Unknown.

Uploads & binaries

  • Upload: POST/wf/restapi/v2/upload as multipart form data, with the file in field file and a destination dest (path) or destId (directory ID). Options: unzip, version (create a new version if the name exists), message, replaceMetadata, replaceName, metadata (JSON field→value stamped on the new asset), asyncImport, and triggerAssetBasedWorkflow=false to skip "asset added" workflows S1.
  • New version: POST/checkIn with id + file. Use /checkOut to lock first S1.
  • Server-side import: /import registers files already present in managed storage (paths or IDs) S1.
  • Chunked / large files: no chunked REST upload documented. S3-integrated environments use multipart upload internally S15 S13, and the Workflow API AJAX.addBinaryChunk and s3Manager (presigned-URL copy, S3 upload with placeholder asset) cover server-side transfers S3.
  • Download: /download?ids=[…] builds a ZIP and answers 302 to the file S1. Per-asset downloadUrl / preview servlet links are in verbose asset data S1. Public S3 rendition URLs appear when renditions are published S1. External share links (expiring, download-counted) are created from workflows with the JSExternalSharingManager class S3.

Events & webhooks

  • No outbound webhook subscription API exists in the REST reference S1.
  • Equivalent mechanism: server-side workflows with trigger configurations: AssetAdded, AssetModified, AssetMoved, AssetRenamed, AssetCopied, AssetRemoved, AssetDownloaded, AssetCheckin, Permission, Scheduled, UserTriggered S3. They are configured in the Workflow Manager (enable, schedule, client-side triggering, thread count) S9. A workflow can then push to an external endpoint with AJAX; retries and signing are left to the script S3 Unverified (no built-in retry or signature).
  • REST uploads can suppress these triggers (triggerAssetBasedWorkflow=false) S1.

Limits & quirks

  • GET length 2,048 characters, no files on GET S2.
  • Tomcat and brackets: JSON arrays in query strings (ids=[…]) can cause HTTP 400 on Tomcat unless relaxedQueryChars / relaxedPathChars are set on the connector S2.
  • Defaults are minimal: without verbose=true, assets come back as IDs only (directories as paths) S2.
  • Filters run post-operation and can yield short pages S2.
  • Field visibility is form-driven: fields missing from the ACL's forms are silently absent from responses (documented after a 25.03 support case) S13.
  • Regression example: a REST le search on metadataModifyTime broke and was fixed in 25.07 S12.
  • Workflow defaults: AJAX request timeout 15 s S3.
  • Documentation location drift: the official PDF links to a redirected page S21 S6; use the S3-hosted reference (Resources).

SDKs, tools & code samples

Library / toolLanguageMaintainerStatus
Workflow JavaScript API (server-side scripting, Visual Workflow Editor)JavaScript on Rhino / JavaEsko (official)Current, 25.07 S3 S9
Client JS API (window.MBAPI)JavaScript (browser)Esko (official)Current, 25.07 S4
Zipped API docs bundle per versionHTMLEsko (official)25.07 bundle rebuilt 2026-05-18 S5 S45
0HugoHu/ECE564-AssetMgmt (cloud file browser on the MediaBeacon API)—Community (student project)Last push 2023-12 S44
api-evangelist/mediabeacon (third-party API profile)YAMLAPI EvangelistNot affiliated with Esko S43

No official REST client library, CLI or Postman collection was found S47.

Changelog of the API

DateChangeSource
2026-05-1825.07 API documentation bundle regenerated (same version number) S45 S1
2025-0725.07: REST le condition on metadataModifyTime fixed S12
2025-0325.03: empty / not-empty search conditions for asset-link fields via REST; Client JS MetadataApiPublisher doc corrected; REST/workflow docs clarify form-based field visibility S13
2024-1124.11: metadata stamping in REST upload; field-specific search in MBAPI.search.createQuickSearch; multipart S3 upload S15
2024-0724.07: S3 rendition URLs via Visual Workflow smart names S14
2021Version scheme switches to YY.MM (21.03 onward) S23
≤ 2018REST v2 introduced alongside v1 (v2 examples date from 2017) S1 Unverified (inferred from timestamps in the examples)
2016API offered as REST, client-side and server-side (version 7.8 docs) S25

Stored API specs

No public machine-readable spec storedSpecs README & provenance
Search the wiki