---
title: "Final step of setup wizard — flips lifecycle to active and kicks discovery"
method: POST
path: "/api/me/setup/activate"
tags: ["me"]
---

# Final step of setup wizard — flips lifecycle to active and kicks discovery

`POST /api/me/setup/activate`

## Request

- Base URL: `https://api.signalraven.ai`
- URL: `https://api.signalraven.ai/api/me/setup/activate`
- Auth: none declared

Validates ≥1 active source + ICP profile exists. Destinations are NOT a prerequisite — customers configure them post-activation from /destinations; signals accumulate undelivered until then. Sets self-serve defaults (autoHarvest=true, dailyBudgetCapCents=$50). Enqueues immediate DISCOVERY for each active source. Audit: lifecycle.activated.

## Response `200`

Activated

- ActivateResponse
  - `ok` true, required
  - `lifecyclePhase` 'active', required
  - `discoveryKickedFor` integer, required: Number of sources for which an immediate discovery job was enqueued

## Other responses

- `400`: Missing prerequisite (NoActiveSources/NoIcp)
- `409`: Already activated (wrong lifecyclePhase)

---

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