---
title: "Get a campaign's status"
method: GET
path: "/business/campaigns/{campaignId}"
tags: ["Campaigns"]
---

# Get a campaign's status

`GET /business/campaigns/{campaignId}`

## Request

- Base URL: `https://api.tryfuse.ai/api/v1`
- URL: `https://api.tryfuse.ai/api/v1/business/campaigns/{campaignId}`
- Auth: HTTP basic

Returns one campaign's state. This is the poll an `ai-generated` campaign needs: creation returns immediately and the topic plan is written in the background, so watch `initializationStatus` reach `completed` before authoring steps or approving; `failed` puts the reason in `initializationError`. A `manual` campaign is `completed` from the start. Only the token owner's own campaigns resolve here (a delegated or team-visible campaign answers 404), and a deleted campaign answers 404. Rate limit: 30 requests/minute and 1,000/day per token owner, shared by every campaign, scheduled-send, campaign-template and knowledge-hub endpoint.

Errors:
- `404` `CAMPAIGN_NOT_FOUND` — No campaign with this id exists, it belongs to another account (including a campaign delegated to you or shared by your team's visibility settings), or it has been deleted.
- `422` `VALIDATION_FAILED` — campaignId is not a 24-character hex id.
- `429` `RATE_LIMITED` — More than 30 campaign requests in a minute, or 1,000 in a day, for this token owner (the bucket is shared by every /business/campaigns, /business/scheduled-sends, /business/campaign-templates and /business/knowledge-hubs call).
- `500` `UNEXPECTED_ERROR` — An unhandled failure; the detail stays in our logs and is never returned.

Requires one of the following token scopes: campaigns.

## Path parameters

- `campaignId` string, required: The campaign's id (24-character hex ObjectId), as returned by POST /business/campaigns or as the campaignId of a GET /business/campaigns row.

## Response `200`

Success

- object
  - `campaign` object, required
    - `id` string, required: The campaign's id.
    - `name` string, nullable, required: Display name.
    - `type` 'manual' | 'ai-generated' | 'null', nullable, required: Which creation flow the campaign uses.
    - `status` 'initializing' | 'active' | 'stopped' | 'paused_manual' | 'initialization_failed' | 'null', nullable, required: Lifecycle status.
    - `initializationStatus` 'processing' | 'completed' | 'failed' | 'null', nullable, required: Draft-preparation state. A manual campaign is completed from the start; an ai-generated one reaches completed when background topic generation finishes.
    - `initializationError` string, nullable, required: Our own status text when initializationStatus is failed; null otherwise.
    - `listIds` string[], required: Ids of the lists the campaign sources contacts from.

## Other responses

- `400`: Error
- `401`: Error
- `402`: Error
- `403`: Error
- `404`: Error
- `409`: Error
- `422`: Error
- `429`: Error
- `500`: Error

---

[API](https://skmtc.dev/fuseai/apis/fuse-business-api.md) · [All operations](https://skmtc.dev/fuseai/apis/fuse-business-api/llms.txt) · [OpenAPI document](https://skmtc.dev/fuseai/apis/fuse-business-api/revisions/50d95e0536f4?raw)
