Introduction
LucidLink client version 3.7.8703 introduces support for HTTP file linking, which lets you link external files into a filespace by supplying a URL as part of the link request. These entries are called "HTTP Link Files" to distinguish them from the "Single Object Files" used with LucidLink-managed data stores.
HTTP file linking can be used with many providers that expose an HTTP method for retrieving files. Frame.io is one such provider: its public API can return a direct, time-limited download URL for each asset in a project. This article describes an example workflow that links Frame.io project content into a LucidLink filespace as HTTP Link Files, and the LucidLink APIs used to build it. The workflow fits alongside your existing Frame.io processes - content can be linked on demand from the Frame.io interface or automatically as it changes, without users leaving Frame.io. Because it uses Frame.io's public API independently, you are responsible for Frame.io authentication and for following Frame.io's documentation and terms - see Compliance and best practices and the Disclaimer below.
No Data Store required
Unlike SingleObjectFile entries, HTTP Link Files do not use a Data Store, so there is no LucidLink-managed credential store authenticating or refreshing URLs on your behalf. In practice, this means:
- You do not need to create or configure a Data Store to link Frame.io files.
- LucidLink does not receive your Frame.io credentials and does not store or proxy the file content - only the link is stored in the filespace.
- Your workflow owns the URL lifecycle. Frame.io download URLs are time-limited, and LucidLink does not renew them, so the workflow must rotate them before they expire (see Keeping links current). If a URL lapses, the linked file is unreadable until the entry is updated.
How the example workflow works
Customer-operated middleware such as an n8n workflow or a custom script sits between Frame.io and LucidLink. Frame.io remains the system of record and the source of the file bytes; the LucidLink filespace holds only encrypted links to those files. When a user opens a linked file, the bytes stream directly from Frame.io to that user, subject to the filespace's permissions.
Across the diagrams in this article, indigo denotes Frame.io, orange the customer-operated orchestrator, and green the LucidLink API steps.
The example workflow can be deployed in three complementary ways - an initial bootstrap to bring existing content over, a webhook for linking newly added assets just-in-time and responding to project changes, and a Frame.io Custom Action for on-demand linking (described in Deployment scenarios below).
LucidLink APIs used
The example workflow is built entirely from existing LucidLink APIs. No Frame.io credentials pass through LucidLink.
| LucidLink capability | Role in the workflow |
|---|---|
Connect / HTTP file linking (external entries, HttpLinkFile) |
The core primitive. Creates a file entry that points at a Frame.io download URL, updates the URL as it rotates, and removes the entry when no longer needed. |
| Entries endpoint (create / resolve directories) | Builds and maintains the folder structure so the filespace matches the Frame.io project tree ("mkdir -p" style: create missing directories, tolerate existing ones). |
| Permissions endpoint (grant, and optionally update / revoke) | Assigns read or write access on the linked content to the appropriate groups or members. The reference workflow grants read on the mirror root. |
| Filespaces, Groups & Members (lookup) | Resolves the target filespace and the principals (for example, the "Everyone" group) that permissions are granted to. |
HTTP Link Files - API reference (Connect API v1.4.3 and up)
The HttpLinkFile external entry kind is used with the existing External Entries endpoints:
| Method | Endpoint | Description |
|---|---|---|
| POST | /filespaces/:filespaceId/external/entries |
Create an HTTP file entry (path, kind: "HttpLinkFile", httpFileParams.url) |
| PATCH | /filespaces/:filespaceId/external/entries/:entryId |
Update the URL of an existing HTTP file entry (rotate the link) |
| DELETE | /filespaces/:filespaceId/external/entries/:entryId |
Remove an external entry |
A linked URL must directly serve the asset - returning Content-Length and Range headers - rather than a webpage that embeds it; consult Frame.io's API documentation to obtain the correct direct-download URL. For the full request and response detail, and the folder and permission operations, see the HTTP File Linking reference.
Deployment scenarios
The example workflow can run on demand from the Frame.io interface, automatically in the background, or as a one-time backfill. The three scenarios may be used together or in isolation: bootstrap the existing content once, with a webhook to capture new events, or offer a Custom Action for selective linking.
1. Initial bootstrap (one-time backfill)
Run once at setup to bring an existing Frame.io project across. The workflow creates the mirror root, grants access, then walks the whole project - creating a matching folder for each Frame.io folder and an HTTP Link File for each asset. It can also be re-run periodically as a backstop. When the walk completes, the webhook and refresh scenarios take over for steady state.
2. Webhook (continuous, event-driven sync)
Frame.io emits events when content changes. The orchestrator receives each event, verifies it, computes the matching filespace path, ensures the folders exist, and creates the HTTP Link File - so new uploads appear in the filespace shortly after they land in Frame.io. A scheduled refresh runs alongside it to keep the time-limited URLs current (see Keeping links current).
3. Custom Action (on-demand, user-triggered)
Frame.io's Custom Actions feature can present a right-click menu option in the Frame.io interface; your workflow's endpoint handles it. A user selects one or more assets, triggers the action, and the orchestrator links the selection into the filespace - creating any needed folders, optionally granting access, and returning a confirmation to Frame.io.
Keeping links current (URL lifecycle)
Frame.io download URLs are time-limited and expire relatively quickly. Because LucidLink does not renew URLs, the workflow must re-fetch a fresh URL from Frame.io and update the corresponding HTTP Link File with a PATCH before the current URL expires. A scheduled refresh that runs well within the URL's lifetime keeps the links readable; if refresh is disabled, links break once the URLs lapse. This refresh is what the bootstrap and webhook scenarios above rely on for steady state.
Security
With HTTP Link Files, only a URL is stored in the filespace, and that URL is encrypted with keys held by the filespace owner and its users, in line with the filespace's permissions. LucidLink does not receive credentials for your storage or tools and does not control the lifecycle of the links you provide, so you determine what is shared, with whom, and for how long, within the filespace's permissions model.
Because webhook and Custom Action endpoints receive inbound requests, verify the signature on every request as described in Frame.io's documentation, and protect any signing secrets as you would any credential.
Compliance and best practices
The workflow described above is provided as an example. Implementation is the responisbility of the user. Always follow Frame.io's API documentation, terms, and best practices - including its authentication requirements, rate limits, and pagination rules.
Frame.io developer documentation:
- https://next.developer.frame.io/platform/welcome
- https://next.developer.frame.io/platform/docs/getting-started
- https://developer.adobe.com/frameio/guides/
Disclaimer
LucidLink is not affiliated with Frame.io. This integration uses Frame.io's public API independently and is not endorsed by Frame.io. Frame.io is a trademark of Adobe Inc. and is used solely to identify the product for which this integration is compatible.
References
This example workflow relies on two independently documented systems. For anything specific to each product, follow that product's own documentation, terms, and best practices:
- Frame.io - authentication, endpoints, events, rate limits, and pagination: Developer overview, Getting started, and Adobe Frame.io guides.
- LucidLink - HTTP file linking, external entries, folder, and permission operations: the HTTP File Linking reference and lucidlink.com.