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
| Parameter | Type | Description |
|---|---|---|
id | string (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"
}
]
}| Field | Type | Description |
|---|---|---|
campaign_id | string (UUID) | The campaign. |
target_audience | object | null | The campaign's target audience record (or null if none). |
selections[].asset_type | string | One 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_items | array | Resolved 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_details | string | null | Free-text notes for this asset type. |
selections[].submitted_at | string | null | When 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_itemsarray and onlyadditional_detailspopulated — this is a finalized selection, not an incomplete one (submitted_atwill be set). This is common forrisk_reversal, where a campaign may carry a custom free-text guarantee instead of picking from generated options.
Error responses
| Status | Error | Description |
|---|---|---|
| 401 | UNAUTHORIZED | Missing or invalid API key. |
| 403 | FORBIDDEN | Key missing the campaigns:read scope. |
| 404 | NOT_FOUND | Campaign not found or not in this workspace. |
| 500 | INTERNAL_ERROR | Server error. |