Posts
A post is a single video with a caption, targeted at one or more platforms. Every platform attempt lives in a platformResults subdocument so you can see per-platform outcomes independently.
Create a post
POST /v1/posts
curl https://api.letspost.app/v1/posts \
-H "Authorization: Bearer $SOCIALHUB_KEY" \
-H "Content-Type: application/json" \
-d '{
"profileId": "prof_abc",
"title": "Launch day",
"description": "Our biggest drop yet.",
"mediaUrl": "uploads/u_1/xyz/xyz.mp4",
"platforms": ["tiktok","instagram","youtube"]
}'Fields
profileId— required.title,description— required. 200 / 5000 chars.mediaUrl— Firebase Storage path underuploads/<uid>/…, or the value returned by /media/presign-upload.platforms— non-empty subset oftiktok,instagram,youtube,facebook.scheduledAt— optional ISO-8601. Omit for immediate publish.
Schedule a post
curl https://api.letspost.app/v1/posts \
-H "Authorization: Bearer $SOCIALHUB_KEY" \
-H "Content-Type: application/json" \
-d '{
"profileId": "prof_abc",
"title": "Scheduled drop",
"description": "",
"mediaUrl": "uploads/u_1/xyz/xyz.mp4",
"platforms": ["youtube"],
"scheduledAt": "2026-05-01T14:00:00.000Z"
}'Get, list & update
GET /v1/posts/{id}, GET /v1/posts?profileId=…, PATCH /v1/posts/{id} (only while status is draft or scheduled).
Delete a post (cascade)
curl -X DELETE https://api.letspost.app/v1/posts/pst_123 \
-H "Authorization: Bearer $SOCIALHUB_KEY"DELETE removes the local record, deletes the uploaded video from storage, and cascades to the platforms:
- YouTube — video is deleted via the Data API.
- Instagram / Facebook — media is deleted via the Graph API.
- TikTok — not supported. The Content Posting API has no delete endpoint; you must remove the video from the TikTok app.
The response includes a platformErrors array describing any per-platform failure. The local post is still removed even if a cascade fails.
Status lifecycle
draft → queued → publishing → published | partial | failedpartial means at least one platform succeeded and at least one failed. Failed platforms retry up to three times via Cloud Tasks before being marked terminal. Subscribe to webhooks to react to these transitions.
Something unclear? Email us — we read every message.