---
title: "Apply one action to existing posts"
method: POST
path: "/posts/bulk"
tags: ["Posts"]
---

# Apply one action to existing posts

`POST /posts/bulk`

## Request

- Base URL: `https://www.sociahive.com/api/v1`
- URL: `https://www.sociahive.com/api/v1/posts/bulk`
- Auth: one of:
  - API key in header `X-API-Key`
  - OAuth 2 (authorization code, authorization URL `/api/oauth/authorize`, token URL `/api/oauth/token`, scopes: `posts:write`)

Schedule, delete or set the status of up to 50 existing posts. `schedule` needs `scheduled_for`; `update_status` needs `status`. It does not create posts: create each one with `POST /posts`.

## Request body

- BulkPostActionRequest
  - `action` 'schedule' | 'delete' | 'update_status', required
  - `post_ids` string[], required
  - `scheduled_for` string, date-time: ISO 8601. Required for `schedule`.
  - `timezone` string: IANA zone for `schedule`. Defaults to UTC.
  - `status` 'draft' | 'scheduled': Required for `update_status`.

## Response `200`

Bulk action result

- BulkOperationResultEnvelope
  - `data` BulkOperationResult, required
    - `total` number, required
    - `succeeded` number, required
    - `failed` number, required
    - `errors` object[], required
      - `post_id` string, required
      - `error` string, required

## Other responses

- `400`: Bad request — invalid parameters
- `401`: Authentication required — provide X-API-Key or Bearer token
- `403`: Insufficient scope for this operation
- `429`: Rate limit exceeded
- `500`: Internal server error

---

[API](https://skmtc.dev/sociahive/apis/sociahive-api.md) · [All operations](https://skmtc.dev/sociahive/apis/sociahive-api/llms.txt) · [OpenAPI document](https://skmtc.dev/sociahive/apis/sociahive-api/revisions/791b8548d288?raw)
