---
title: "Resume lifecycles"
method: POST
path: "/api/v1/campaigns/lifecycles/resume"
tags: ["campaigns"]
---

# Resume lifecycles

`POST /api/v1/campaigns/lifecycles/resume`

## Request

- Base URL: `https://point11.ai`
- URL: `https://point11.ai/api/v1/campaigns/lifecycles/resume`
- Auth: OAuth 2 (authorization code, authorization URL `https://auth.point11.ai/oauth2/authorize`, token URL `https://auth.point11.ai/oauth2/token`)

Resume paused campaigns so their scheduled work starts again against the organization's allowance. The user must approve. Refused while the organization's Analytics subscription does not admit new work. Returns each campaign's outcome.

## Headers

- `Point11-Organization` string, uuid
- `Idempotency-Key` string, uuid, required
- `Point11-Confirm` 'true', required

## Request body

- CampaignsLifecyclesResumeRequest
  - `targets` object[], required: Campaigns to change, at most 100; a campaign named twice is changed once.
    - `id` string, uuid, required: The campaign's id.
    - `product` 'discovery' | 'research' | 'experience', required: The product that owns the campaign.

## Response `200`

Success.

- CampaignsLifecyclesResumeResponse
  - `requestedCount` integer, required: Distinct campaigns the command named.
  - `changedCount` integer, required
  - `unchangedCount` integer, required: Campaigns already in the requested state.
  - `blockedCount` integer, required: Campaigns the command cannot change from their current state.
  - `pendingCount` integer, required: Campaigns whose deletion waits for running work to stop; it completes without another call.
  - `missingCount` integer, required: Named campaigns that do not exist for that product here.
  - `targetResults` object[], required: One entry per distinct campaign, in the order named.
    - `id` string, required
    - `product` 'discovery' | 'research' | 'experience', required
    - `outcome` 'changed' | 'unchanged' | 'blocked' | 'missing' | 'pending', required
    - `reason` 'active_paused' | 'paused_resumed' | 'active_deleted' | 'paused_archived' | 'archived_restored' | 'paused_deleted' | 'archived_deleted' | 'already_active' | 'already_paused' | 'already_archived' | 'already_deleted' | 'active_archive_requires_pause' | 'archived_requires_restore' | 'deleted_is_backup_only' | 'invalid_source_state' | 'active_execution' | 'execution_stopping' | 'not_found', required
    - `priorState` 'active' | 'paused' | 'archived' | 'deleted', nullable, required: Null when the campaign is missing.
    - `resultingState` 'active' | 'paused' | 'archived' | 'deleted', nullable, required: Null when the campaign is missing.
    - `blockingRunId` string, nullable, required: The run a pending deletion waits on, otherwise null.

## Other responses

- `400`: The input, query, or Idempotency-Key is invalid.
- `401`: The bearer is missing, expired, or not accepted.
- `402`: Billing refused the write: the code names the reason and `details.reason` carries it.
- `403`: The credential lacks the operation's scope or role, or the operation needs a different door.
- `404`: The resource or organization does not exist for this caller.
- `405`: This path takes another HTTP method, named in `Allow`.
- `409`: The request conflicts with current state or with prior use of its Idempotency-Key.
- `413`: The request, or the answer it asks for, is too large; narrow it.
- `429`: The credential's rate budget is spent; retry after `Retry-After` seconds.
- `500`: An unexpected server failure; retry later. Only `request_id` identifies it.
- `503`: A dependency is temporarily unavailable; retry after `Retry-After` seconds.
- `default`: Another status a product answers for its own refusal (for example `415` for an unsupported attachment); branch on `code`.

---

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