Install
openclaw skills install @postlake/postlake-mediaUpload an image or video to PostLake and attach it to a post. Use when a post needs media, or for platforms that require it (Instagram, TikTok, YouTube, Pinterest).
openclaw skills install @postlake/postlake-mediaUpload the file first to get a med_… id, then pass it as media in a publish or
schedule call. Some platforms require media (Instagram, TikTok, YouTube, Pinterest).
Authorization: Bearer $POSTLAKE_API_KEY
Base URL https://api.postlake.dev.
POST the raw bytes with the file's Content-Type. Limits: images ≤20MB
(jpeg/png/webp/gif); videos ≤200MB (mp4/mov/webm).
From a local file:
curl -X POST https://api.postlake.dev/v1/media \
-H "Authorization: Bearer $POSTLAKE_API_KEY" \
-H "Content-Type: image/jpeg" \
--data-binary @photo.jpg
From a URL (download it first, then upload the bytes):
curl -sL "https://example.com/photo.jpg" -o /tmp/m.jpg
curl -X POST https://api.postlake.dev/v1/media \
-H "Authorization: Bearer $POSTLAKE_API_KEY" \
-H "Content-Type: image/jpeg" \
--data-binary @/tmp/m.jpg
Response:
{ "id": "med_47214a…", "url": "https://media.postlake.dev/med_47214a…", "contentType": "image/jpeg", "size": 86487 }
Pass the id(s) as media, with optional alt text for accessibility:
curl -X POST https://api.postlake.dev/v1/posts \
-H "Authorization: Bearer $POSTLAKE_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"text": "New drop 👟",
"accounts": ["acc_54d8…"],
"media": ["med_47214a…"],
"mediaAlt": ["A pair of orange running shoes"]
}'
Content-Type to the real file type. It's how PostLake validates the
upload.platformOptions.youtube.title.med_… id across multiple posts; you don't need to re-upload.