Skip to content

Media library

The media library holds every image and video available to your workspace. Assets can be uploaded directly through the API or created automatically when content is generated.

GET /api/v1/media_assets

Query parameters:

NameTypeNotes
kindstringimage or video.
tagstringRepeat for AND.
limit, cursor-Standard pagination.
GET /api/v1/media_assets/{id}
{
"object": "media_asset",
"id": "med_1e7b8a2c9d3f",
"kind": "video",
"url": "https://res.cloudinary.com/nativpost/video/upload/v1234/example.mp4",
"thumbnail_url": "https://res.cloudinary.com/nativpost/image/upload/v1234/example.jpg",
"duration": 12.5,
"width": 1080,
"height": 1920,
"tags": ["office", "founder"],
"created_at": "2026-07-14T08:22:00Z"
}
POST /api/v1/media_assets

Send multipart/form-data with a single file field:

Terminal window
curl -X POST https://app.nativpost.com/api/v1/media_assets \
-H "Authorization: Bearer $NATIVPOST_API_KEY" \
-F "file=@/path/to/video.mp4" \
-F "tags=office" \
-F "tags=founder"

Maximum file sizes: images 20 MB, videos 500 MB. Uploads over the limit return 413.

Every upload is scanned by the moderation pipeline. Assets appear in the list only after moderation approves them. See the workspace moderation queue in Settings → Content for pending items.

Attach an asset to a content object by id:

{
"content_type": "photo",
"platforms": ["instagram"],
"media_asset_ids": ["med_1e7b8a2c9d3f"]
}
DELETE /api/v1/media_assets/{id}

Deleting an asset that is referenced by scheduled or published content returns 409 conflict.