---
title: "Discover current content opportunities"
method: POST
path: "/publication-opportunities/discover"
tags: ["Publication Discovery"]
---

# Discover current content opportunities

`POST /publication-opportunities/discover`

## Request

- Base URL: `https://app.openpo.st/api/v1`
- URL: `https://app.openpo.st/api/v1/publication-opportunities/discover`
- Auth: one of:
  - HTTP bearer
  - API key in cookie `openpost_session`

Returns tailored idea cards with selectable angles and platform treatments. It never drafts or publishes a post.

## Request body

- DiscoverPublicationOpportunitiesInputBody
  - `$schema` string, uri: A URL to the JSON Schema for this object.
  - `audience` string: People the opportunities should matter to
  - `focus` string: Optional subject, project, niche, or current objective
  - `limit` integer: Maximum opportunity cards to return
  - `platforms` string[], nullable, required: Selected native destination platforms
  - `recent_publications` RecentPublicationSummary[], nullable: Recent Publications used only to avoid repetition
    - `platforms` string[], nullable: Platforms that received the Publication
    - `published_at` string, date-time, required: When this recent Publication was published or created
    - `summary` string, required: Short factual summary of what the Publication said
    - `topics` string[], nullable: Topics already covered
  - `voice_profile_id` string: Optional Workspace Voice Profile; defaults to the Workspace identity
  - `workspace_id` string, required: Workspace whose editor is requesting opportunities

## Response `200`

OK

- DiscoveryResult
  - `$schema` string, uri: A URL to the JSON Schema for this object.
  - `generated_at` string, date-time, required
  - `model` string, required
  - `opportunities` Opportunity[], nullable, required
    - `angles` Angle[], nullable, required
      - `approach` string, required
      - `id` string, required
      - `label` string, required
      - `thesis` string, required
    - `hook` string, required
    - `id` string, required
    - `platform_treatments` PlatformTreatment[], nullable, required
      - `format` string, required
      - `media` string, required
      - `objective` string, required
      - `platform` string, required
      - `rationale` string, required
    - `signal_date` string, required
    - `title` string, required
    - `why_it_fits` string, required
    - `why_now` string, required

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `422`: Unprocessable Entity
- `429`: Too Many Requests
- `500`: Internal Server Error
- `502`: Bad Gateway
- `503`: Service Unavailable
- `504`: Gateway Timeout

---

[API](https://skmtc.dev/openpo/apis/openpost-api.md) · [All operations](https://skmtc.dev/openpo/apis/openpost-api/llms.txt) · [OpenAPI document](https://skmtc.dev/openpo/apis/openpost-api/revisions/67d3964458a7?raw)
