---
title: "Get portfolios"
method: GET
path: "/api/v1/campaigns/portfolios/{id}"
tags: ["campaigns"]
---

# Get portfolios

`GET /api/v1/campaigns/portfolios/{id}`

## Request

- Base URL: `https://point11.ai`
- URL: `https://point11.ai/api/v1/campaigns/portfolios/{id}`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://auth.point11.ai/oauth2/authorize`, token URL `https://auth.point11.ai/oauth2/token`)

Read the organization's campaign portfolio (id "organization"): which products it has run, every listed campaign by name, the current campaign (the preferred one while it is listed, else the newest listed), and the campaign that opens as current (the preferred one while it has results to show, else the newest that does).

## Path parameters

- `id` 'organization', required: Always "organization".

## Query parameters

- `preferredCampaignId` string, uuid: The campaign the caller has selected; current and openable name it while they may.

## Headers

- `Point11-Organization` string, uuid

## Response `200`

Success.

- CampaignsPortfoliosGetResponse
  - `products` object, required: Which products the organization has run.
    - `discovery` boolean, required
    - `experience` boolean, required
    - `research` boolean, required
  - `campaigns` object[], required: Every campaign the list shows, in name order.
    - `id` string, required
    - `name` string, required
    - `product` 'discovery' | 'research' | 'experience', required
    - `targetKind` 'profile' | 'physical_locations', nullable, required: What a Discovery campaign measures; null for any other campaign.
    - `forecastAudience` boolean, required: Whether a Discovery campaign's customers are its forecast's alone (forecast mode, as Bootup's Forecast campaign); false for any other campaign.
    - `businessProfileId` string, nullable, required: The business profile the campaign is linked to; null for a Discovery or Research campaign not linked to one.
  - `current` object, nullable, required: The preferred campaign while it is listed, else the newest listed.
    - `id` string, required
    - `product` 'discovery' | 'research' | 'experience', required
  - `openable` object, nullable, required: The campaign that opens as current: the preferred one while it has results to show, else the newest that does.
    - `id` string, required
    - `type` string, required: "Discovery" or the Research playbook's label.

## Other responses

- `400`: The input, query, or Idempotency-Key is invalid.
- `401`: The bearer is missing, expired, or not accepted.
- `403`: The credential lacks the operation's scope or role, or the operation needs a different door.
- `404`: The resource or organization does not exist for this caller.
- `405`: This path takes another HTTP method, named in `Allow`.
- `409`: The request conflicts with current state or with prior use of its Idempotency-Key.
- `413`: The request, or the answer it asks for, is too large; narrow it.
- `429`: The credential's rate budget is spent; retry after `Retry-After` seconds.
- `500`: An unexpected server failure; retry later. Only `request_id` identifies it.
- `503`: A dependency is temporarily unavailable; retry after `Retry-After` seconds.
- `default`: Another status a product answers for its own refusal (for example `415` for an unsupported attachment); branch on `code`.

---

[API](https://skmtc.dev/point11/apis/point11-api.md) · [All operations](https://skmtc.dev/point11/apis/point11-api/llms.txt) · [OpenAPI document](https://skmtc.dev/point11/apis/point11-api/revisions/36a84c7aca11?raw)
