Перейти до змісту

Швидкий старт

Пʼять запитів ведуть від свіжого ключа API до запланованого поста: дізнатися, хто ви, перелічити акаунти, спланувати пост, створити його, прочитати його стан. Кожен запит — https://api.dropslate.top/v1 плюс шлях, із ключем у заголовку Authorization і JSON-тілами. Завантаження файлу — єдиний додатковий крок, описаний у робочому прикладі; ця сторінка планує текстовий пост, щоб потік був коротким.

  • Платний тариф — API починається з Creator — і ключ API зі write: Налаштування → Ключі API → Новий ключ, позначте Дозволити створювати й публікувати пости. Ключ показується раз.
  • Підключена Сторінка Facebook або профіль Threads: обидва беруть пост без файлу. YouTube і Instagram потребують медіа.
  • curl і jq або будь-який HTTP-клієнт.
  1. Задайте ключ. В оболонці, не у файлі, який ви комітите, і ніколи в промпті агенту:

    Terminal window
    export KEY="ds_live_xxxxxxxxxxxxxxxxxxxx"
    export API="https://api.dropslate.top/v1"
  2. Хто я. GET /whoami відповідає workspace, його часовим поясом і тарифом, тим, що може ключ, і використанням за цей місяць.

    Terminal window
    curl -s "$API/whoami" -H "Authorization: Bearer $KEY" | jq
    {
    "workspace": { "id": "ws_3k9d", "slug": "what-we-made", "name": "What We Made", "plan": "creator", "currency": "USD", "tz": "Europe/Kiev" },
    "user": { "id": "usr_a1", "name": "Dmytro", "email": null },
    "credential": { "kind": "api_key", "name": "n8n integration", "scopes": ["read", "write"] },
    "usage": { "plan": "creator", "period": "2026-09", "posts": { "used": 46, "limit": 200 }, "storage": { "usedBytes": 1288490188, "limitBytes": 16106127360 }, "accounts": { "used": 3, "limit": 6 } }
    }

    tz — пояс, у якому читається кожен час; scopes має містити write для двох останніх кроків.

  3. Перелічіть акаунти. Id акаунтів беруться звідси й нізвідки більше.

    Terminal window
    curl -s "$API/accounts" -H "Authorization: Bearer $KEY" | jq '.accounts[] | {id, platform, displayName, status}'
    { "id": "acc_fb_7c2e", "platform": "facebook", "displayName": "What We Made", "status": "ok" }
    { "id": "acc_th_91af", "platform": "threads", "displayName": "@whatwemade", "status": "ok" }

    Публікувати можна лише в акаунт зі status: "ok"; expired або revoked потребує, щоб людина перепідключила його в дашборді.

  4. Сплануйте. POST /posts/plan бере пост і відповідає по рядку на акаунт із перевіркою. Нічого не створює.

    Terminal window
    cat > post.json <<'EOF'
    {
    "targets": { "accountIds": ["acc_fb_7c2e", "acc_th_91af"] },
    "mediaIds": [],
    "text": "Office hours today at 18:00 Kyiv. Bring one question.",
    "when": { "publishAt": "2026-09-29T17:00", "timezone": "Europe/Kiev" },
    "perPlatform": { "facebook": { "contentType": "text", "link": "https://dropslate.top/" }, "threads": { "topicTag": "OfficeHours" } }
    }
    EOF
    curl -s -X POST "$API/posts/plan" -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" -d @post.json | jq
    {
    "ok": true,
    "status": "queued",
    "rows": [
    { "accountId": "acc_fb_7c2e", "platform": "facebook", "publishAt": "2026-09-29T14:00:00.000Z", "ok": true, "issues": [] },
    { "accountId": "acc_th_91af", "platform": "threads", "publishAt": "2026-09-29T14:00:00.000Z", "ok": true, "issues": [] }
    ],
    "quota": { "used": 46, "limit": 200, "requested": 2 },
    "table": "account network time check\nWhat We Made facebook 29 Sep, 17:00 (Kyiv) ok\n@whatwemade threads 29 Sep, 17:00 (Kyiv) ok"
    }

    Рядок з ok: false перелічує issues — кожен {code, message, hint} — і ok згори стає false. table — той самий текст, який MCP-агент показує людині.

  5. Створіть. Те саме тіло з confirm: true. Без нього відповідь — 409 confirm_required, і нічого не створюється.

    Terminal window
    jq '. + {confirm: true}' post.json | curl -s -X POST "$API/posts" -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" -d @- | jq '.posts[] | {id, status, statusLine}'
    { "id": "pst_5e1b", "status": "queued", "statusLine": "Queued. Facebook · What We Made · 29 Sep, 17:00 (Kyiv)." }
    { "id": "pst_5e1c", "status": "queued", "statusLine": "Queued. Threads · @whatwemade · 29 Sep, 17:00 (Kyiv)." }

    По посту на акаунт; кожен queued. when: "now" надсилає одразу; when: "draft" зберігає без часу.

  6. Прочитайте стан. Після часу — GET /posts/{id}:

    Terminal window
    curl -s "$API/posts/pst_5e1b" -H "Authorization: Bearer $KEY" | jq '{status, externalUrl, error, statusLine}'

    live приходить з externalUrl; failed — з error.code, error.message словами самої мережі й error.hint. Це єдині стани після queued.

Два пости є в Черзі й Календарі дашборда, як і будь-які інші, з createdVia: "api" у панелі. Повторити, Скасувати і Перепланувати працюють на них там, і ті самі дії існують як POST /posts/{id}/retry, POST /posts/{id}/cancel і PATCH /posts/{id}.

Помилка Причина Що робити
401 unauthenticated Ключ відсутній, з помилкою або відкликаний. Перевірте Authorization: Bearer ds_live_…; створіть новий ключ, якщо його відкликано.
403 insufficient_scope на POST /posts У ключа лише read. Створіть ключ із Дозволити створювати й публікувати пости.
409 confirm_required Бракує confirm: true. Додайте; нічого не створено.
402 quota_exceeded Пости місяця або доступ тарифу до API. Тіло несе limit, used і upgradeUrl.
404 not_found на id акаунта Id не в цьому workspace. Беріть id з GET /accounts.
429 rate_limited 600 запитів за 10 хвилин з цієї адреси або 60 POST /posts за годину. Зачекайте секунди з Retry-After.