Amba

Media

Media assets and folders — register an upload, browse, organize, delete.

Media assets register a filename + storage path and return a signed-style upload URL the client can PUT the file body to. Folders are a simple parent/child tree.

Source: apps/api/src/routes/admin/media.ts.

Endpoints

MethodPathDescription
POST/admin/projects/:projectId/mediaRegister an asset, get an upload_url.
GET/admin/projects/:projectId/mediaPaginated list; optional ?folder_id=.
DELETE/admin/projects/:projectId/media/:assetIdDelete an asset row.
POST/admin/projects/:projectId/media/foldersCreate a folder.
GET/admin/projects/:projectId/media/foldersList folders (optional ?parent_id=).
DELETE/admin/projects/:projectId/media/folders/:folderIdDelete a folder.

POST /admin/projects/:projectId/media

Register a media asset. The storage path is <projectId>/<ms>_<filename>.

Request (CreateMediaAssetInput)

FieldTypeRequiredDefault
filenamestringyes
mime_typestringyes
size_bytesnumbernonull
folder_iduuidnonull
alt_textstringnonull
metadataobjectno{}

Response 201

{
  "data": {
    "id": "…",
    "filename": "…",
    "storage_url": "https://storage.amba.dev/…",
    "uploaded_by": "admin"
  },
  "upload_url": "https://storage.amba.dev/…?upload=true"
}

Try it:

POST/admin/projects/%7B%7BprojectId%7D%7D/media
developer auth
curl -X POST 'https://api.amba.dev/admin/projects/%7B%7BprojectId%7D%7D/media'
Loading auth… Configure auth in the settings drawer (top-right) to run this request.

Curl:

curl -X POST '${BASE_URL}/admin/projects/{projectId}/media' \
  -H 'Authorization: Bearer ${DEV_TOKEN}' \
  -H 'Content-Type: application/json' \
  -d '{}'

GET /admin/projects/:projectId/media

Query

ParamDefaultDescription
limit50
offset0
folder_idRestrict to a folder.

Response 200

{
  "data": [{ "id": "…", "filename": "…", "mime_type": "image/png" }],
  "total": 100,
  "offset": 0,
  "limit": 50
}

Try it:

GET/admin/projects/%7B%7BprojectId%7D%7D/media
developer auth
curl -X GET 'https://api.amba.dev/admin/projects/%7B%7BprojectId%7D%7D/media'
Loading auth… Configure auth in the settings drawer (top-right) to run this request.

Curl:

curl -X GET '${BASE_URL}/admin/projects/{projectId}/media' \
  -H 'Authorization: Bearer ${DEV_TOKEN}'

DELETE /admin/projects/:projectId/media/:assetId

{ "data": { "deleted": true } }

Try it:

DELETE/admin/projects/%7B%7BprojectId%7D%7D/media/%7B%7BassetId%7D%7D
developer auth
curl -X DELETE 'https://api.amba.dev/admin/projects/%7B%7BprojectId%7D%7D/media/%7B%7BassetId%7D%7D'
Loading auth… Configure auth in the settings drawer (top-right) to run this request.

Curl:

curl -X DELETE '${BASE_URL}/admin/projects/{projectId}/media/{assetId}' \
  -H 'Authorization: Bearer ${DEV_TOKEN}'

POST /admin/projects/:projectId/media/folders

Request (CreateMediaFolderInput)

FieldTypeRequired
namestringyes
parent_iduuidno

Response 201

{ "data": { "id": "…", "name": "…", "parent_id": null } }

Try it:

POST/admin/projects/%7B%7BprojectId%7D%7D/media/folders
developer auth
curl -X POST 'https://api.amba.dev/admin/projects/%7B%7BprojectId%7D%7D/media/folders'
Loading auth… Configure auth in the settings drawer (top-right) to run this request.

Curl:

curl -X POST '${BASE_URL}/admin/projects/{projectId}/media/folders' \
  -H 'Authorization: Bearer ${DEV_TOKEN}' \
  -H 'Content-Type: application/json' \
  -d '{}'

GET /admin/projects/:projectId/media/folders

Query

ParamDescription
parent_idIf omitted, returns only root folders (parent_id IS NULL).

Try it:

GET/admin/projects/%7B%7BprojectId%7D%7D/media/folders
developer auth
curl -X GET 'https://api.amba.dev/admin/projects/%7B%7BprojectId%7D%7D/media/folders'
Loading auth… Configure auth in the settings drawer (top-right) to run this request.

Curl:

curl -X GET '${BASE_URL}/admin/projects/{projectId}/media/folders' \
  -H 'Authorization: Bearer ${DEV_TOKEN}'

DELETE /admin/projects/:projectId/media/folders/:folderId

{ "data": { "deleted": true } }

Try it:

DELETE/admin/projects/%7B%7BprojectId%7D%7D/media/folders/%7B%7BfolderId%7D%7D
developer auth
curl -X DELETE 'https://api.amba.dev/admin/projects/%7B%7BprojectId%7D%7D/media/folders/%7B%7BfolderId%7D%7D'
Loading auth… Configure auth in the settings drawer (top-right) to run this request.

Curl:

curl -X DELETE '${BASE_URL}/admin/projects/{projectId}/media/folders/{folderId}' \
  -H 'Authorization: Bearer ${DEV_TOKEN}'