# Lifecycle

The lifecycle endpoints move a journey between states. Pass the journey's [Journey ID](/developer/api-reference/api-identifiers/#journey-id) as `uuid` in the request body. The call returns the updated [journey object](/developer/api-reference/customer-journey-api/journey-object/).

A journey is always in one of these states:

| Status | Meaning |
|---|---|
| `STATUS_DRAFT` | Being edited. Does not process users. |
| `STATUS_RUNNING` | Active, processing users. |
| `STATUS_PAUSED` | Temporarily halted, can be resumed. |
| `STATUS_FINISHED` | Completed, no longer processing users. |
| `STATUS_ARCHIVED` | Archived for storage. |

## Endpoints

All lifecycle calls use the same request body: [Journey ID](/developer/api-reference/api-identifiers/#journey-id) passed as `uuid`. They differ only in the path:

| Action | Method & path | Resulting state |
|---|---|---|
| Start | `POST /api/v3/journeygateway/start` | `STATUS_RUNNING` |
| Pause | `POST /api/v3/journeygateway/pause` | `STATUS_PAUSED` |
| Finish | `POST /api/v3/journeygateway/finish` | `STATUS_FINISHED` |
| Draft | `POST /api/v3/journeygateway/draft` | `STATUS_DRAFT` |
| Archive | `POST /api/v3/journeygateway/archive` | `STATUS_ARCHIVED` |

## Request

| Field | Required | Type | Description |
|---|---|---|---|
| `uuid` | Yes | string | [Journey ID](/developer/api-reference/api-identifiers/#journey-id) of the journey to transition. |

```json title="Body"
{ "uuid": "11111111-2222-3333-4444-555555555555" }
```

The API validates the current state before transitioning. For example, starting a journey that is already finished, or pausing one that is not running, returns an error.

<Aside type="note">
To start a journey **and** apply pending edits in one call, use [Update and resume](/developer/api-reference/customer-journey-api/create-update/#update-and-resume) instead of `start`.
</Aside>

### Request examples

#### Start a journey

```bash
curl -X POST https://journey.pushwoosh.com/api/v3/journeygateway/start \
  -H "Authorization: Api YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "uuid": "11111111-2222-3333-4444-555555555555" }'
```

#### Pause a journey

```bash
curl -X POST https://journey.pushwoosh.com/api/v3/journeygateway/pause \
  -H "Authorization: Api YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "uuid": "11111111-2222-3333-4444-555555555555" }'
```

## Response

Returns the updated [journey object](/developer/api-reference/customer-journey-api/journey-object/): `info`, `points`, and `comments`. The `info.status` field reflects the new state.

### Response example
```json
{
  "info": {
    "uuid": "11111111-2222-3333-4444-555555555555",
    "title": "Welcome series",
    "status": "STATUS_RUNNING",
    "created_at": "2026-05-01T09:00:00Z",
    "updated_at": "2026-06-17T12:00:00Z",
    "params": { "application_code": "XXXXX-XXXXX" },
    "campaign_type": "TriggerBased"
  },
  "points": [],
  "comments": []
}
```

See the [journey object reference](/developer/api-reference/customer-journey-api/journey-object/) for the full field list.

## Related

<CardGrid>
  <LinkCard title="Create and update" href="/developer/api-reference/customer-journey-api/create-update/" />
  <LinkCard title="Start by API" href="/developer/api-reference/customer-journey-api/start-by-api/" />
  <LinkCard title="Journey object" href="/developer/api-reference/customer-journey-api/journey-object/" />
</CardGrid>