PlunkPlunk
API ReferenceCampaigns

List campaigns

Get a paginated list of email campaigns.

This endpoint uses offset pagination (page / pageSize), not the cursor pagination used by GET /contacts.

GET
/campaigns

Authorization

ApiKeyAuth

AuthorizationBearer <token>

API Key authentication. The project is automatically derived from the key.

/v1/track requires a public key (pk_*) — it is the one endpoint intended for client-side use, and a secret key is rejected there with 401.

Every other endpoint requires a secret key (sk_*) and rejects public keys with 401.

So the two key types are not interchangeable in either direction: pick the key that matches the endpoint you are calling.

In: header

Query Parameters

page?integer

1-based page number.

Default1
Range1 <= value
pageSize?integer

Items per page.

Default20
Range1 <= value
status?string

Filter by campaign status. An unrecognised value returns 400.

Value in"DRAFT" | "SCHEDULED" | "SENDING" | "SENT" | "CANCELLED"
search?string

Case-insensitive match on name, subject, or sender address.

sort?string

Column to sort by. Unrecognised values fall back to createdAt.

Default"createdAt"
Value in"name" | "createdAt" | "updatedAt"
dir?string

Sort direction. Unrecognised values fall back to the default.

Default"desc"
Value in"asc" | "desc"

Response Body

application/json

application/json

application/json

curl -X GET "https://api.plunk.jimster.dev/campaigns"
{
  "data": [
    {
      "id": "string",
      "name": "string",
      "description": "string",
      "subject": "string",
      "body": "string",
      "from": "user@example.com",
      "fromName": "string",
      "replyTo": "user@example.com",
      "type": "TRANSACTIONAL",
      "status": "DRAFT",
      "audienceType": "ALL",
      "audienceCondition": {
        "logic": "AND",
        "groups": [
          {
            "filters": [
              {
                "field": "string",
                "operator": "equals",
                "value": null,
                "unit": "days"
              }
            ],
            "conditions": {
              "logic": "AND",
              "groups": []
            }
          }
        ]
      },
      "segmentId": "string",
      "scheduledFor": "2019-08-24T14:15:22Z",
      "totalRecipients": 0,
      "sentCount": 0,
      "deliveredCount": 0,
      "openedCount": 0,
      "clickedCount": 0,
      "bouncedCount": 0,
      "projectId": "string",
      "sentAt": "2019-08-24T14:15:22Z",
      "createdAt": "2019-08-24T14:15:22Z",
      "updatedAt": "2019-08-24T14:15:22Z"
    }
  ],
  "page": 0,
  "pageSize": 0,
  "total": 0,
  "totalPages": 0
}
{
  "success": false,
  "error": {
    "code": "string",
    "message": "string",
    "statusCode": 0,
    "requestId": "string",
    "errors": [
      {
        "field": "string",
        "message": "string",
        "code": "string",
        "received": null
      }
    ],
    "details": {},
    "suggestion": "string"
  },
  "timestamp": "2019-08-24T14:15:22Z"
}
{
  "success": false,
  "error": {
    "code": "INVALID_API_KEY",
    "message": "Invalid secret API key. This endpoint requires a secret key (sk_*), not a public key.",
    "statusCode": 401,
    "requestId": "8f14e45f-ceea-467a-9575-1f0f38e0b1c2"
  },
  "timestamp": "2025-01-15T10:30:00.000Z"
}