Campaigns

Retrieve a single message campaign by its identifier. Resolves both newsletters and flow campaigns — no type parameter needed. A flow campaign names the flow that sends it in flow; newsletters omit that field.

A /v1/campaigns row already carries this exact shape, so following up per campaign adds nothing — reach for this when the id came from somewhere else, such as a flow node's data.campaign_id or a report row's campaign_id. Performance is /v1/reports/campaigns/{campaign_id}.

Required scope: campaigns_read

get/campaigns/{id}

Request

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

Path parameters

idstring required

The campaign's unique identifier (returned as id in campaign responses). Ids are opaque public strings — a numeric id from a Privy dashboard URL is not a valid API id and will 404; list campaigns and match by title instead.

Headers

Privy-Account-Idstring

Target a subaccount instead of the main connected account. Pass a subaccount id from get_account's subaccounts list. Only direct subaccounts of the connected account are reachable — omit this for the main account itself.

Response

The message campaign.

Example response

{
  "data": {
    "id": "Nw8K2rT5xY",
    "type": "newsletter",
    "title": "June Restock Announcement",
    "channel": "email",
    "status": "sent",
    "subject": "The restock you asked for is here",
    "send_date": "2026-06-18T15:00:00Z",
    "flow": {
      "id": "0Rqw3Z8",
      "title": "Welcome Series"
    },
    "audience": {
      "included_segments": [
        {
          "id": "aBc1234",
          "name": "Engaged 90d"
        }
      ],
      "excluded_segments": [
        {
          "id": "aBc1234",
          "name": "Engaged 90d"
        }
      ]
    },
    "coupon": {
      "id": "Xk2fW9qLpV",
      "title": "Welcome 10%"
    },
    "ab_test": {
      "winning_metric": "click_rate",
      "test_duration_seconds": 86400,
      "versions": [
        {
          "id": "cpv_dkyYZmk",
          "name": "Version A",
          "is_control": true,
          "audience_share": 0.125,
          "subject": "The restock you asked for is here",
          "preheader": "Back in stock and going fast",
          "coupon": {
            "id": "Xk2fW9qLpV",
            "title": "Welcome 10%"
          }
        }
      ]
    },
    "created_at": "2026-06-10T09:00:00Z",
    "updated_at": "2026-06-18T15:05:00Z"
  }
}

Changes

    • warning

      added the new forbidden enum value to the / response property for the response status

    • warning

      added the new forbidden enum value to the / response property for the response status

    • warning

      added the new forbidden enum value to the / response property for the response status

    • warning

      added the new forbidden enum value to the / response property for the response status

    • warning

      added the new segment_builder_required enum value to the / response property for the response status

    • warning

      added the new segment_builder_required enum value to the / response property for the response status

    • warning

      added the new segment_builder_required enum value to the / response property for the response status

    • warning

      added the new segment_builder_required enum value to the / response property for the response status

    • info

      endpoint added