Selections

ReferenceUpdated June 14, 2026

Selections

Read a campaign's chosen assets (social proof, lead magnets, risk reversal, value propositions) and its target audience. Requires the campaigns:read scope.


Get campaign selections

GET /api/v1/campaigns/:id/selections · scope campaigns:read

Returns the campaign's asset selections with any draft-format entries fully resolved (hydrated from the workspace's asset library), plus the campaign's target audience.

Path parameters

ParameterTypeDescription
idstring (UUID)Campaign ID.

Example request

curl -X GET "https://app.machfive.io/api/v1/campaigns/CAMPAIGN_ID/selections" \
  -H "Authorization: Bearer YOUR_API_KEY"

Response (200 OK)

{
  "campaign_id": "uuid",
  "target_audience": {
    "id": "uuid",
    "segment_name": "Mid-market SaaS",
    "industry_vertical": "Software",
    "company_size": "50-200",
    "decision_makers": ["VP Marketing", "Head of Growth"]
  },
  "selections": [
    {
      "asset_type": "value_proposition",
      "selected_items": [
        { "id": "uuid", "name": "Faster onboarding", "description": "..." }
      ],
      "additional_details": null,
      "submitted_at": "2025-01-15T12:00:00.000Z"
    }
  ]
}
FieldTypeDescription
campaign_idstring (UUID)The campaign.
target_audienceobject | nullThe campaign's target audience record (or null if none).
selections[].asset_typestringOne of social_proof, lead_magnet, risk_reversal, value_proposition. (The target audience is returned separately in the top-level target_audience field, not as a selections[] entry.)
selections[].selected_itemsarrayResolved selected items (id, name, description). May be an empty array when the asset type was satisfied with free-text only (see note below).
selections[].additional_detailsstring | nullFree-text notes for this asset type.
selections[].submitted_atstring | nullWhen the selection was finalized (ISO 8601), or null if still a draft.

Free-text-only selections are valid. An asset type can be submitted with an empty selected_items array and only additional_details populated — this is a finalized selection, not an incomplete one (submitted_at will be set). This is common for risk_reversal, where a campaign may carry a custom free-text guarantee instead of picking from generated options.

Error responses

StatusErrorDescription
401UNAUTHORIZEDMissing or invalid API key.
403FORBIDDENKey missing the campaigns:read scope.
404NOT_FOUNDCampaign not found or not in this workspace.
500INTERNAL_ERRORServer error.