---
title: "Get a publication build"
method: GET
path: "/publication-builds/{id}"
tags: ["Publication Builds"]
---

# Get a publication build

`GET /publication-builds/{id}`

## Request

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

## Path parameters

- `id` string, required: Publication build ID

## Response `200`

OK

- Build
  - `$schema` string, uri: A URL to the JSON Schema for this object.
  - `assets` BuildAsset[], nullable
    - `may_publish` boolean, required
    - `media_id` string, required
    - `role` string, required
  - `context_urls` string[], nullable
  - `created_at` string, date-time, required
  - `error_code` string
  - `error_message` string
  - `id` string, required
  - `input` BuildInput, required
    - `destination_policy` string, required
    - `destinations` Destination[], nullable, required
      - `account_id` string, required
      - `allowed_output_profiles` OutputProfile[], nullable, required
        - `allowed_mimes` string[], nullable
        - `key` string, required
        - `max_segments` integer, required
        - `media_max_count` integer, required
        - `media_min_count` integer
        - `text_limit` integer, required
      - `label` string, required
      - `platform` string, required
      - `voice` VoiceSnapshot, required
        - `definition` VoiceDefinition, required
          - `avoidances` string[], nullable
          - `examples` VoiceExample[], nullable
            - `body` string, required
            - `platform` string
          - `guidance` string
          - `identity` string
          - `language` string
        - `id` string
        - `name` string
        - `revision` integer
    - `direction` DirectionInput, required
      - `angle` string
      - `audience` string
      - `media_preference` string
      - `outcome` string
      - `tone_adjustment` string
    - `idea` string, required
    - `option_count` 0 | 4: Generate four complete alternatives; zero keeps the single-package workflow
    - `series_count` integer
    - `sources` SourceMaterial[], nullable
      - `id` string, required
      - `kind` string, required
      - `label` string, required
      - `mime_type` string
      - `publishable` boolean: Whether the user allowed this source asset to appear in the post
      - `text` string
  - `phase` string, required
  - `publication_id` string
  - `result` BuildResult
    - `canonical_text` string, required
    - `destinations` DestinationPlan[], nullable, required
      - `account_id` string, required
      - `archetype` string, required
      - `claims` Claim[], nullable, required
        - `source_refs` string[], nullable
        - `status` string, required
        - `text` string, required
      - `follow_up_notes` string[], nullable, required
      - `media` MediaPlan, required
        - `alt_text` string
        - `brief` string, required
        - `document` ScreenshotTemplateDocument
          - `appearance` 'light' | 'dark', required
          - `conversation` ScreenshotTemplateConversation
            - `messages` ScreenshotTemplateMessage[], required
              - …
            - `name` string, required
            - `people` ScreenshotTemplatePerson[], required
              - …
            - `read_receipt` string, required
            - `self_id` string, required
            - `show_header` boolean, required
            - `timestamp` string, required
          - `frame` 'natural' | 'square' | 'portrait', required
          - `meme` ScreenshotTemplateMeme
            - `alt_text` string
            - `captions` string[], required
            - `format` 'png' | 'webp' | 'gif', required
            - `name` string, required
            - `overlay_media_ids` string[], required
            - `overlay_slots` integer, required
            - `parent_media_id` string
            - `template_id` string, required
          - `receipt` ScreenshotTemplateReceipt
            - `address` string, required
            - `business` string, required
            - `currency` 'USD' | 'EUR' | 'GBP' | 'BRL' | 'JPY', required
            - `custom_total` string, required
            - `footer` string, required
            - `items` ScreenshotTemplateReceiptItem[], required
              - …
            - `order` string, required
            - `tax_percent` number, double, required
            - `timestamp` string, required
          - `schema_version` 1, required
          - `status_page` ScreenshotTemplateStatus
            - `headline` string, required
            - `name` string, required
            - `severity` 'operational' | 'degraded' | 'outage', required
            - `updates` ScreenshotTemplateStatusUpdate[], required
              - …
          - `template_id` 'messages' | 'group-chat' | 'receipt' | 'status-page' | 'meme', required
          - `text_size` 'small' | 'normal' | 'large', required
          - `title` string, required
        - `role` string, required
        - `source_ref` string: Exact source ID for source-bound media treatments
        - `template_id` string
        - `treatment` string, required
      - `objective` string, required
      - `output_profile` string, required
      - `platform` string, required
      - `preview` string, required
      - `segments` SegmentPlan[], nullable, required
        - `body` string, required
        - `description` string
        - `title` string
      - `warnings` string[], nullable, required
    - `direction` DirectorPlan, required
      - `angle` string, required
      - `audience` string, required
      - `canonical_text` string, required
      - `claims` Claim[], nullable, required
        - `source_refs` string[], nullable
        - `status` string, required
        - `text` string, required
      - `destinations` DestinationDecision[], nullable, required
        - `account_id` string, required
        - `include` boolean, required
        - `media` MediaPlan
          - `alt_text` string
          - `brief` string, required
          - `document` ScreenshotTemplateDocument
            - `appearance` 'light' | 'dark', required
            - `conversation` ScreenshotTemplateConversation
              - …
            - `frame` 'natural' | 'square' | 'portrait', required
            - `meme` ScreenshotTemplateMeme
              - …
            - `receipt` ScreenshotTemplateReceipt
              - …
            - `schema_version` 1, required
            - `status_page` ScreenshotTemplateStatus
              - …
            - `template_id` 'messages' | 'group-chat' | 'receipt' | 'status-page' | 'meme', required
            - `text_size` 'small' | 'normal' | 'large', required
            - `title` string, required
          - `role` string, required
          - `source_ref` string: Exact source ID for source-bound media treatments
          - `template_id` string
          - `treatment` string, required
        - `reason` string, required
      - `factual_kernel` string[], nullable, required
      - `media` MediaPlan, required
        - `alt_text` string
        - `brief` string, required
        - `document` ScreenshotTemplateDocument
          - `appearance` 'light' | 'dark', required
          - `conversation` ScreenshotTemplateConversation
            - `messages` ScreenshotTemplateMessage[], required
              - …
            - `name` string, required
            - `people` ScreenshotTemplatePerson[], required
              - …
            - `read_receipt` string, required
            - `self_id` string, required
            - `show_header` boolean, required
            - `timestamp` string, required
          - `frame` 'natural' | 'square' | 'portrait', required
          - `meme` ScreenshotTemplateMeme
            - `alt_text` string
            - `captions` string[], required
            - `format` 'png' | 'webp' | 'gif', required
            - `name` string, required
            - `overlay_media_ids` string[], required
            - `overlay_slots` integer, required
            - `parent_media_id` string
            - `template_id` string, required
          - `receipt` ScreenshotTemplateReceipt
            - `address` string, required
            - `business` string, required
            - `currency` 'USD' | 'EUR' | 'GBP' | 'BRL' | 'JPY', required
            - `custom_total` string, required
            - `footer` string, required
            - `items` ScreenshotTemplateReceiptItem[], required
              - …
            - `order` string, required
            - `tax_percent` number, double, required
            - `timestamp` string, required
          - `schema_version` 1, required
          - `status_page` ScreenshotTemplateStatus
            - `headline` string, required
            - `name` string, required
            - `severity` 'operational' | 'degraded' | 'outage', required
            - `updates` ScreenshotTemplateStatusUpdate[], required
              - …
          - `template_id` 'messages' | 'group-chat' | 'receipt' | 'status-page' | 'meme', required
          - `text_size` 'small' | 'normal' | 'large', required
          - `title` string, required
        - `role` string, required
        - `source_ref` string: Exact source ID for source-bound media treatments
        - `template_id` string
        - `treatment` string, required
      - `outcome` string, required
      - `route` string, required
      - `thesis` string, required
    - `options` PostOption[], nullable: Four complete alternatives. Choosing one is an explicit author action
      - `canonical_text` string, required
      - `destinations` DestinationPlan[], nullable, required
        - `account_id` string, required
        - `archetype` string, required
        - `claims` Claim[], nullable, required
          - `source_refs` string[], nullable
          - `status` string, required
          - `text` string, required
        - `follow_up_notes` string[], nullable, required
        - `media` MediaPlan, required
          - `alt_text` string
          - `brief` string, required
          - `document` ScreenshotTemplateDocument
            - `appearance` 'light' | 'dark', required
            - `conversation` ScreenshotTemplateConversation
              - …
            - `frame` 'natural' | 'square' | 'portrait', required
            - `meme` ScreenshotTemplateMeme
              - …
            - `receipt` ScreenshotTemplateReceipt
              - …
            - `schema_version` 1, required
            - `status_page` ScreenshotTemplateStatus
              - …
            - `template_id` 'messages' | 'group-chat' | 'receipt' | 'status-page' | 'meme', required
            - `text_size` 'small' | 'normal' | 'large', required
            - `title` string, required
          - `role` string, required
          - `source_ref` string: Exact source ID for source-bound media treatments
          - `template_id` string
          - `treatment` string, required
        - `objective` string, required
        - `output_profile` string, required
        - `platform` string, required
        - `preview` string, required
        - `segments` SegmentPlan[], nullable, required
          - `body` string, required
          - `description` string
          - `title` string
        - `warnings` string[], nullable, required
      - `direction` DirectorPlan, required
        - `angle` string, required
        - `audience` string, required
        - `canonical_text` string, required
        - `claims` Claim[], nullable, required
          - `source_refs` string[], nullable
          - `status` string, required
          - `text` string, required
        - `destinations` DestinationDecision[], nullable, required
          - `account_id` string, required
          - `include` boolean, required
          - `media` MediaPlan
            - `alt_text` string
            - `brief` string, required
            - `document` ScreenshotTemplateDocument
              - …
            - `role` string, required
            - `source_ref` string: Exact source ID for source-bound media treatments
            - `template_id` string
            - `treatment` string, required
          - `reason` string, required
        - `factual_kernel` string[], nullable, required
        - `media` MediaPlan, required
          - `alt_text` string
          - `brief` string, required
          - `document` ScreenshotTemplateDocument
            - `appearance` 'light' | 'dark', required
            - `conversation` ScreenshotTemplateConversation
              - …
            - `frame` 'natural' | 'square' | 'portrait', required
            - `meme` ScreenshotTemplateMeme
              - …
            - `receipt` ScreenshotTemplateReceipt
              - …
            - `schema_version` 1, required
            - `status_page` ScreenshotTemplateStatus
              - …
            - `template_id` 'messages' | 'group-chat' | 'receipt' | 'status-page' | 'meme', required
            - `text_size` 'small' | 'normal' | 'large', required
            - `title` string, required
          - `role` string, required
          - `source_ref` string: Exact source ID for source-bound media treatments
          - `template_id` string
          - `treatment` string, required
        - `outcome` string, required
        - `route` string, required
        - `thesis` string, required
      - `id` string, required
      - `label` string, required
      - `review_flags` ReviewFlag[], nullable, required
        - `account_id` string
        - `field` string, required
        - `message` string, required
        - `severity` string, required
      - `skipped` SkippedDestination[], nullable, required
        - `account_id` string, required
        - `platform` string, required
        - `reason` string, required
    - `review_flags` ReviewFlag[], nullable, required
      - `account_id` string
      - `field` string, required
      - `message` string, required
      - `severity` string, required
    - `selected_option_id` string
    - `series` SeriesConcept[], nullable
      - `brief` string, required
      - `child_build_id` string
      - `evidence` string, required
      - `id` string, required
      - `revision` integer, required
      - `source_refs` string[], nullable, required
      - `title` string, required
    - `skipped` SkippedDestination[], nullable, required
      - `account_id` string, required
      - `platform` string, required
      - `reason` string, required
    - `sources` ResolvedSource[], nullable
      - `id` string, required
      - `kind` string, required
      - `label` string, required
      - `mime_type` string
      - `publishable` boolean, required
  - `revision` integer, required
  - `series_origin` SeriesOrigin
    - `build_id` string, required
    - `item_id` string, required
    - `item_revision` integer, required
  - `social_set_id` string
  - `state` string, required
  - `updated_at` string, date-time, required
  - `voice_profile_id` string
  - `workspace_id` string, required

## Other responses

- `403`: Forbidden
- `404`: Not Found
- `422`: Unprocessable Entity
- `500`: Internal Server Error
- `503`: Service Unavailable

---

[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)
