Кроспостинг одного файлу
Найпоширеніша задача: одне готове відео, кожна мережа, правильний текст і налаштування для кожної. Один POST /posts із кількома цілями робить це — сервер розгортає запит в один пост на акаунт, застосовує власні поля мережі з perPlatform і власний текст мережі з overrides та перевіряє кожен проти лімітів цієї мережі в плані.
Що знадобиться
Section titled “Що знадобиться”- Платний тариф і ключ API зі
write. - По одному підключеному акаунту на кожну потрібну мережу; id з
GET /accounts. TikTok приєднається до списку, коли вийде його коннектор. - Вертикальне відео (9:16), якщо серед цілей Instagram Reels або Facebook Reels — горизонтальне відео покажеться там зі смугами, що план позначає як попередження, а не відмову.
GET /accounts→ чотири id акаунтів.- Завантажити файл один раз →
mediaId. - Один
POST /posts/planз усіма чотирма цілями,overridesіperPlatform. - Прочитати чотири рядки; виправити будь-який
ok: false;POST /postsізconfirm: true. GET /posts/{id}для кожного повернутого поста, доки неliveабоfailed.
export KEY="ds_live_xxxxxxxxxxxxxxxxxxxx"export API="https://api.dropslate.top/v1"AUTH="Authorization: Bearer $KEY"
# 1) Account ids by network - never typed by handACCOUNTS=$(curl -s "$API/accounts" -H "$AUTH")ID_YT=$(echo "$ACCOUNTS" | jq -r '.accounts[] | select(.platform=="youtube") | .id')ID_IG=$(echo "$ACCOUNTS" | jq -r '.accounts[] | select(.platform=="instagram") | .id')ID_FB=$(echo "$ACCOUNTS" | jq -r '.accounts[] | select(.platform=="facebook") | .id')ID_TH=$(echo "$ACCOUNTS" | jq -r '.accounts[] | select(.platform=="threads") | .id')
# 2) Upload once (see the weekly recipe for the upload function)MEDIA_ID=$(upload ./launch.mp4)
# 3) One body for every networkcat > body.json <<EOF{ "targets": { "accountIds": ["$ID_YT", "$ID_IG", "$ID_FB", "$ID_TH"] }, "mediaIds": ["$MEDIA_ID"], "title": "How we schedule a week of posts in ten minutes", "text": "Full description with timestamps.\n0:00 Intro\n1:20 Upload\n3:05 Plan and confirm", "tags": ["scheduling", "dropslate"], "when": { "publishAt": "2026-09-29T18:00", "timezone": "Europe/Kiev" }, "overrides": { "threads": { "text": "A week of posts in ten minutes. New video." }, "facebook": { "text": "New video: a week of posts in ten minutes." } }, "perPlatform": { "youtube": { "visibility": "public", "category": "27", "notifySubscribers": true }, "instagram": { "contentType": "reel", "coverMs": 2500, "shareToFeed": true }, "facebook": { "contentType": "reel" }, "threads": { "topicTag": "Scheduling" } }}EOF
curl -s -X POST "$API/posts/plan" -H "$AUTH" -H "Content-Type: application/json" -d @body.json | jq -r .tableПлан друкує по рядку на акаунт:
account network time checkWhat We Made youtube 29 Sep, 18:00 (Kyiv) ok@whatwemade instagram 29 Sep, 18:00 (Kyiv) okWhat We Made Page facebook 29 Sep, 18:00 (Kyiv) ok@whatwemade threads 29 Sep, 18:00 (Kyiv) okКожен рядок ok? Створюйте:
jq '. + {confirm:true}' body.json | curl -s -X POST "$API/posts" -H "$AUTH" -H "Content-Type: application/json" -d @- | jq -r '.posts[] | "\(.id) \(.statusLine)"'Перевірка
Section titled “Перевірка”Опитуйте кожен id, доки він не вийде з queued:
curl -s "$API/posts/$POST_ID" -H "$AUTH" | jq '{status, externalUrl, error}'live пости несуть externalUrl; failed несе error.code, error.message (слова мережі) і error.hint.
Варіації
Section titled “Варіації”- Лише текст у Facebook і Threads поруч із відео деінде — це два запити:
mediaIdsстосується кожної цілі в одному запиті. - Група замість id.
"targets":{"groupId":"grp_…"}— те саме розгортання, на рядок коротше. - Різний час на мережу. В одному запиті один
when; надсилайте по запиту на час. - Через MCP. Скажіть Claude, чого хочете; він виконає ті самі виклики й покаже ту саму таблицю до того, як щось створити — Сценарії.
Повʼязане
Section titled “Повʼязане”- Редактор — ті самі поля як вкладки.
- Вимоги до медіа — що приймає кожна мережа.
- Робочий приклад