Assets
Search, read, update, and delete individual assets. Hybrid full-text plus semantic search out of the box.

Developers · REST API & SDK
Versioned at the URL. JSON in, JSON out. Token auth with granular scopes. A typed TypeScript SDK on npm with full coverage of every endpoint.
Everything in the product is reachable through the API, with the same JSON envelope, the same pagination, the same error format.
Search, read, update, and delete individual assets. Hybrid full-text plus semantic search out of the box.
Create, organize, and curate sets. Add and remove assets in bulk.
Batch ingestion with virus scanning, format checks, and AI enrichment running on the platform side.
Generate signed share links with expirations, watermarking, resolution caps, and access controls.
Read field schemas, vocabularies, and term lists for your tenant. Drive your own UI off the same definitions.
Run long-lived bulk actions and poll their progress. Cancel them if you need to back out.
Manage webhook endpoints and view delivery history through the same API.
Provision, list, and revoke API tokens programmatically. Each token carries the abilities you assign.
Every API token carries an explicit list of abilities. A token built for an upload automation cannot read your share log. A token that powers a public catalog cannot delete an asset. Least privilege is the default, not the upgrade.
Authenticate with a standard Authorization: Bearer header. Provision tokens through the API or the in-product Settings page. Rate limit: sixty requests per minute per token.
curl -X GET https://{workspace}.freedam.io/api/v1/assets \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json"Fourteen abilities to mix and match
Combine only the ones each integration actually needs.
Assets
assets:readList, search, and read assetsassets:writeCreate and update asset recordsassets:deleteSoft- and hard-delete assetsassets:downloadFetch original or rendered filesCollections
collections:readList and read collectionscollections:writeCreate, update, add or remove memberscollections:deleteDelete collectionsUploads & metadata
uploads:manageCreate batches and add files to themmetadata:readRead vocabularies, terms, and field definitionsmetadata:writeUpdate metadata field valuesSharing & analytics
shares:readRead share links and access logsshares:manageCreate, update, revoke share linksanalytics:readRead usage and engagement metricsconsents:readRead consent records for individualsimport { createClient } from '@freedam/sdk';
const client = createClient({
baseUrl: 'https://{workspace}.freedam.io',
token: process.env.FREEDAM_TOKEN!,
});
// List recent assets
const { data } = await client.GET('/api/v1/assets', {
params: { query: { per_page: 24 } },
});The first-party @freedam/sdk package gives you a typed client with autocomplete on every endpoint, every parameter, every response shape. Ships ESM and CJS, runs on Node and modern browsers, and tracks the API release-by-release.
Working in another language? The OpenAPI document is yours to use with whichever codegen tooling fits your team. The spec is the contract.
Right now the only first-party SDK is the TypeScript one. The OpenAPI document gives you a complete, machine-readable contract to build against in Python, Go, Ruby, PHP, C#, Java, and beyond. If you'd like a first-party SDK in another language, tell us.
Developers · REST API
The reference at /docs/api lets you call endpoints from inside the page, with your own token, against the live tenant.