Campaigns

Create a playbook or campaign draft

Prefer mode:"always_on" (a playbook) with no recipients: limits default from the gift (budgetCents 100,000,000, perPersonCents the gift and shipping, maxSends 2,000). Batch and single campaigns also need budgetCents, perPersonCents and maxSends (at most 500 people). Saves a draft; a signed-in person turns it on at https://gtmswag.com/campaigns/{id}?review=1. Keys cannot set status:"active" (403 HUMAN_APPROVAL_REQUIRED) or autoApprove. Idempotent with idempotencyKey: the same key and body return the same campaign (201); the same key with a different body returns 409 IDEMPOTENCY_CONFLICT.

post/campaigns

Request

  • Base URL: https://gtmswag.com/api/v1
  • URL: https://gtmswag.com/api/v1/campaigns
  • Auth: HTTP bearer

Request body

recipientSource'manual' | 'workflow'

Manual roster or external workflow.

mode'always_on' | 'batch' | 'single'

always_on keeps sending; batch is one roster; single is one gift.

monthlyBudgetCentsinteger

Monthly spend limit in USD cents for always-on campaigns.

customizationCustomization

displayText: lettering; logoAssetId: artwork; giftLinkContactEmail: public sender contact; giftLinkWelcome: private-link welcome (400 chars, {{firstName}}/{{company}}), separate from the printed note.

namestring required

Campaign name for review and lookup.

descriptionstring

Internal campaign description.

productIdstring required

Current catalog gift ID; never invented.

status'draft' | 'active' | 'paused' | 'completed'

Campaign state; connectors prepare drafts.

budgetCentsinteger

Campaign limit in USD cents.

perPersonCentsinteger

Per-person USD cents, within budget.

maxSendsinteger

Maximum campaign recipient count.

senderNamestring required

Gift sender's name.

senderCompanystring required

Gift sender's company.

messagestring

Printed note and recipient fallback.

idempotencyKeystring

Same key for identical retries only.

Response

Success: {"data": Campaign}.

Changes

No recorded changes to this operation across all 1 revision of this API.