---
title: "Create a wallet campaign"
method: POST
path: "/companies/{company_key}/campaigns/wallet"
tags: ["Wallet Campaign API"]
---

# Create a wallet campaign

`POST /companies/{company_key}/campaigns/wallet`

## Request

- Base URL: `https://public-api.vibescm.com`
- URL: `https://public-api.vibescm.com/companies/{company_key}/campaigns/wallet`
- Auth: HTTP basic

Create a new mobile wallet campaign. The campaign `type` determines the kind of pass it issues (`offer`, `loyalty`, or `event_ticket`) and cannot be changed after creation.

## Path parameters

- `company_key` string, required

## Headers

- `X-API-Version` string
- `Content-Type` string, required

## Request body

- WalletCampaignRequest
  - `campaign` object, required
    - `name` string, required: Descriptive name of the mobile wallet campaign.
    - `description` string: Optional longer description of the campaign.
    - `type` 'offer' | 'loyalty' | 'event_ticket', required: The kind of pass this campaign issues. One of `offer` (coupon), `loyalty` (store/loyalty card), or `event_ticket`. Immutable after the campaign is created.
    - `expiration_date` string: When the campaign expires, in ISO-8601 format. Required for `offer` and `event_ticket` campaigns; optional for `loyalty`.
    - `redirect_link` string: Optional URL that end users are redirected to after the campaign has expired.
    - `ignore_unsecure_params` boolean: When `true`, only values from a signed (JWT) payload are trusted when personalizing passes; unsigned query parameters are ignored.
    - `security_configuration` object: Optional JWT signing configuration used to verify personalization payloads sent on the SmartLink.
      - `public_key` string: Public key used to verify the JWT signature.
      - `jwt_algorithm` 'RS256' | 'HS256': Algorithm used to verify the JWT signature. Defaults to `RS256` (asymmetric); `HS256` is symmetric.

## Response `201`

The wallet campaign was created.

- WalletCampaignResponse
  - `wallet_id` string: The `wallet_id` is the SmartLink token for the campaign. Use it to identify the campaign in all other Wallet API calls.
  - `name` string: Descriptive name of the mobile wallet campaign.
  - `description` string: Optional longer description of the campaign. Returned only when set.
  - `type` 'offer' | 'loyalty' | 'event_ticket': The kind of pass this campaign issues. One of `offer` (coupon), `loyalty` (store/loyalty card), or `event_ticket`.
  - `smartlink_url` string: Public SmartLink URL used to distribute the pass to end users (the "Add to Wallet" link).
  - `url` string: REST API reference to this wallet campaign, as a relative URL on the API domain.
  - `redirect_link` string: URL that end users are redirected to after the campaign has expired. Returned only when set.
  - `expiration_date` string: When the campaign expires, in ISO-8601 format. Returned only when set.
  - `ignore_unsecure_params` boolean: When `true`, only values from a signed (JWT) payload are trusted when personalizing passes. Returned only when configured.
  - `security_configuration` object: JWT signing configuration used to verify personalization payloads. Returned only when configured.
    - `public_key` string: Public key used to verify the JWT signature. Redacted in responses.
    - `jwt_algorithm` 'RS256' | 'HS256': Algorithm used to verify the JWT signature. `RS256` (asymmetric) is the default; `HS256` is symmetric.
  - `created_at` string: When the campaign was created, in ISO-8601 format.
  - `updated_at` string: When the campaign was last updated, in ISO-8601 format.

---

[API](https://skmtc.dev/vibes/apis/vibes-platform-api.md) - [All operations](https://skmtc.dev/vibes/apis/vibes-platform-api/llms.txt) - [OpenAPI document](https://skmtc.dev/vibes/apis/vibes-platform-api/revisions/e235838f2e50?raw)
