> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sequenzy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Launch an In-App Campaign

> Launch an in-app campaign now or schedule it

Launches a draft or scheduled in-app campaign now, or schedules it when `scheduledAt` is a future ISO 8601 time. The campaign needs a message, an audience with at least one include rule, and an end time (if any) after the start. Requires the `campaigns:send` scope.

Launching writes nothing per contact. While the campaign is live, each contact in the audience gets the message the first time their app fetches its feed (the SDK feed, the browser feed or [List In-App Messages](https://docs.sequenzy.com/api-reference/in-app/list-messages.md)). So contacts who join the audience after launch get it, and so do contacts who first open your app days later, until the campaign ends or you stop it. An app version that can't draw the message (its format or a button action) doesn't use it up: the contact gets it when an app version that can asks.

## Request

**campaignId** `string` *required*

The in-app campaign ID.

**scheduledAt** `string | null`

Future ISO 8601 time to go live. Omit or pass `null` to launch now.

```bash theme={null}
curl -X POST "https://api.sequenzy.com/api/v1/in-app/campaigns/cmp_abc123/send" \
  --header "Authorization: Bearer $SEQUENZY_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{}'
```

## Responses

```json 200 theme={null}
{
  "success": true,
  "campaign": {
    "id": "cmp_abc123",
    "name": "New dashboards",
    "type": "in_app",
    "status": "sent",
    "state": "live",
    "message": {
      "label": "",
      "kind": "message",
      "format": "modal",
      "title": "Hi {{firstName}}, dashboards are here",
      "body": "See every campaign at a glance.",
      "buttons": [
        {
          "label": "Take a look",
          "action": "open_url",
          "url": "myapp://dashboards"
        }
      ]
    },
    "priority": "high",
    "endsAt": "2026-12-01T00:00:00.000Z",
    "targetLists": {
      "type": "segment",
      "segmentId": "seg_123"
    },
    "scheduledAt": null,
    "sentAt": "2026-11-08T09:00:00.000Z",
    "estimatedRecipientCount": 1200,
    "labelIds": [],
    "createdAt": "2026-11-07T12:00:00.000Z",
    "updatedAt": "2026-11-08T09:00:00.000Z"
  },
  "message": "In-app campaign is live. 1200 contacts currently match the audience; each gets it the next time their app fetches its feed."
}
```

```json 400 theme={null}
{
  "error": "Add a title or message before launching this in-app campaign."
}
```

```json 401 theme={null}
{
  "error": "Invalid API key"
}
```

```json 403 theme={null}
{
  "error": "API key is missing required scope: campaigns:send"
}
```

```json 404 theme={null}
{
  "error": "Campaign not found."
}
```

```json 409 theme={null}
{
  "error": "Only draft or scheduled in-app campaigns can be launched or rescheduled."
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.