Menu
Documentation
API reference List campaigns

List campaigns

Discover the approved campaigns available to your server key.

List the approved campaigns visible to the authenticated project and key. The endpoint is for reading configured programs, not discovering a public marketplace or creating a new campaign.

Endpoint#

http
GET /v1/campaigns
Authorization: Bearer <your-server-api-key>

Query parameters#

ParameterTypeRequiredMeaning
limitInteger, 1–100NoPage size; default 50.
cursorOpaque string, 1–2048 charactersNoThe previous response's non-null nextCursor.

The v1 list contract does not include asset, status, text-search, or sort query parameters. Inspect returned resources for display, and use the separately approved campaign ID for issuance.

TypeScript#

ts
const page = await slices.campaigns.list({ limit: 50 });
for (const campaign of page.data) {
  console.log(campaign.id, campaign.status, campaign.issuanceMode);
}

HTTP#

bash
curl --silent --show-error --get "$SLICES_BASE_URL/v1/campaigns" \
  --header "Authorization: Bearer $SLICES_API_KEY" \
  --data-urlencode "limit=50"

Response#

200 OK:

json
{
  "data": [
    {
      "id": "cmp_pilot001",
      "name": "Local partner payout example",
      "asset": {
        "chainId": 31337,
        "tokenAddress": "0x0000000000000000000000000000000000002001",
        "symbol": "TST",
        "decimals": 6
      },
      "status": "active",
      "issuanceMode": "canary",
      "budget": {
        "authorizedBaseUnits": "100000000",
        "availableBaseUnits": "99000000",
        "queuedBaseUnits": "1000000",
        "approvedBaseUnits": "0",
        "deliveredBaseUnits": "0"
      },
      "maximumGrantBaseUnits": "10000000",
      "createdAt": "2026-09-11T11:00:00Z"
    }
  ],
  "nextCursor": null
}

All addresses, IDs, amounts, and timestamps in this example are synthetic. TST on chain 31337 is a local test profile, not an available production asset.

Each item uses the full Campaign object. nextCursor: null means there is no further page in the current traversal. There is no total field.

Pagination and access#

Follow a returned cursor unchanged. Cursors are scoped to the caller's project and query, and must not be moved between environments or credentials with different access.

An empty successful response means no campaigns match the accessible scope. An authorization or service error is not an empty list. Check the HTTP status and structured error code.

Choosing a campaign#

Before issuing, verify the exact network, token contract, decimals, issuance mode, and limits against the integration approved for your application. Do not simply select the first campaign in the array.

The pilot begins with one approved campaign configuration; retaining pagination and project-scoped access does not imply that arbitrary assets or self-service creation are available.

Related: Get a campaign, Authentication, and Assets.