---
title: "Resume publishing for a workspace"
method: POST
path: "/api/v1/workspaces/{workspace_id}/posting/resume"
tags: ["🏢 Workspaces"]
---

# Resume publishing for a workspace

`POST /api/v1/workspaces/{workspace_id}/posting/resume`

## Request

- Base URL: `https://api.contentstudio.io`
- URL: `https://api.contentstudio.io/api/v1/workspaces/{workspace_id}/posting/resume`
- Auth: API key in header `X-API-Key`

Releases the hold on the workspace and returns held posts to the state the product returns them to. `time_type` decides what happens to each held post:
     *
     * - `resume` (default, and the option the web app pre-selects) — a post whose scheduled slot is still in the future goes back to its original status. A post whose slot passed while publishing was paused stays a draft; it is **not** back-published.
     * - `recurring` — every held post goes back to its original status and is re-spread from now, one every `recurring.value` `recurring.type`.
     * - `custom` — the hold is released but every post stays a draft, for you to reschedule yourself.
     *
     * **Automations are not unlocked.** RSS and Evergreen automations locked by the pause stay locked, matching the product: a blanket unlock would also re-enable automations the customer had locked by hand, and some plans do not permit automations at all. Re-enable them individually.

## Path parameters

- `workspace_id` string, required

## Request body

- object
  - `time_type` 'resume' | 'recurring' | 'custom'
  - `recurring` object: Required when time_type is `recurring`.
    - `type` 'hour' | 'day' | 'week'
    - `value` integer

## Response `200`

Posting resumed

- object
  - `status` boolean
  - `message` string
  - `data` object
    - `paused` boolean
    - `time_type` string
    - `posts_released` integer: Posts the hold was lifted from.
    - `posts_restored` integer: Of those, how many are back at the status they held before the pause. A post that was awaiting approval as a draft and returns to draft counts here.
    - `posts_left_as_draft` integer: The remainder: posts not back at their pre-pause status because their slot expired during the pause, or because time_type was `custom`.
    - `resumed_at` string, date-time, nullable
    - `automations_unlocked` boolean: Always false — see the endpoint description.

## Other responses

- `401`: Unauthorized - Invalid or missing API key
- `403`: Forbidden - Requires the save_workspace permission. Workspace access refusals return `error_code` `WORKSPACE_ACCESS_DENIED`, `WORKSPACE_INVITATION_PENDING`, `WORKSPACE_LOCKED`, `PERMISSION_DENIED`.
- `404`: Workspace not found
- `422`: Validation failed (VALIDATION_ERROR — time_type must be resume, recurring or custom; recurring needs type and value), or the resume could not be applied (WORKSPACE_RESUME_FAILED)
- `429`: Too Many Requests - Rate limit exceeded

## Changes

- **2026-09-22** `ad0b687289a3`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/contentstudio/apis/contentstudio-api-v1/changes/api/v1/workspaces/:workspace_id/posting/resume/post.md)

---

[API](https://skmtc.dev/contentstudio/apis/contentstudio-api-v1.md) - [All operations](https://skmtc.dev/contentstudio/apis/contentstudio-api-v1/llms.txt) - [OpenAPI document](https://skmtc.dev/contentstudio/apis/contentstudio-api-v1/revisions/2ce09d50369c?raw)
