---
title: "Resolve publishing capabilities for connected accounts"
method: POST
path: "/capabilities/resolve"
tags: ["Capabilities"]
---

# Resolve publishing capabilities for connected accounts

`POST /capabilities/resolve`

## Request

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

## Request body

- ResolveCapabilitiesInputBody
  - `$schema` string, uri: A URL to the JSON Schema for this object.
  - `account_ids` string[], nullable, required: Connected account IDs
  - `account_segments` object: Effective segments for customized destinations, keyed by selected connected account ID
  - `account_settings` object: Destination settings keyed by connected account ID
  - `creation_preset` 'post' | 'thread' | 'story' | 'short_video' | 'video': Starter preset used only to choose initial destination formats
  - `intent` 'post' | 'thread' | 'story' | 'short_video' | 'video': Deprecated compatibility alias for creation_preset
  - `locale` string: BCP 47 locale for option labels
  - `region` string: ISO 3166-1 alpha-2 region
  - `requested_output_profiles` object: Explicit or saved output profiles keyed by connected account ID
  - `segments` ResolveCapabilitySegmentInput[], nullable, required: Ordered canonical segments
    - `content` string: Canonical segment body
    - `description` string: Canonical segment description
    - `id` string, required: Stable segment ID
    - `media` ResolveCapabilityMediaInput[], nullable: Ordered segment media
      - `alt_text` string: Destination alt-text override
      - `media_id` string, required: Media attachment ID
    - `settings` object: Authored segment settings, including attachment requirements
    - `title` string: Canonical segment title
    - `url` string: Canonical segment URL
  - `source_url` string: Canonical source URL

## Response `200`

OK

- ResolveCapabilitiesOutputBody
  - `$schema` string, uri: A URL to the JSON Schema for this object.
  - `accounts` ResolvedAccountCapability[], nullable, required
    - `account_id` string, required
    - `active_constraints` object, required
    - `available_formats` DestinationFormat[], nullable, required
      - `compatible` boolean, required
      - `label` string, required
      - `output_profile` string, required
      - `profile` string, required
    - `capability_revision` string, required
    - `caveats` string[], nullable
    - `compatible` boolean, required
    - `content` ContentConstraint, required
      - `alt_text` TextConstraint, required
        - `max_length` integer
        - `min_length` integer
        - `recommended_max_length` integer
        - `required` boolean, required
      - `body` TextConstraint, required
        - `max_length` integer
        - `min_length` integer
        - `recommended_max_length` integer
        - `required` boolean, required
      - `description` TextConstraint, required
        - `max_length` integer
        - `min_length` integer
        - `recommended_max_length` integer
        - `required` boolean, required
      - `title` TextConstraint, required
        - `max_length` integer
        - `min_length` integer
        - `recommended_max_length` integer
        - `required` boolean, required
    - `description_required` boolean
    - `dynamic_options` object
    - `expires_at` string
    - `format_selection_required` boolean, required
    - `immediate_readiness` Decision, required
      - `advertisable` boolean, required
      - `analytics_ready` boolean, required
      - `blockers` Blocker[], nullable
        - `code` string, required
        - `detail` string
      - `connectable` boolean, required
      - `contract_digest` string
      - `discoverable` boolean, required
      - `executable` boolean, required
      - `facts` Facts, required
        - `approval` string, required
        - `authorization` string, required
        - `configuration` string, required
        - `control` string, required
        - `live_certification` string, required
        - `local_test` string, required
        - `policy` string, required
      - `observable` boolean, required
      - `publishable` boolean, required
      - `state` string, required
    - `intents` string[], nullable, required
    - `issues` ValidationIssue[], nullable, required
      - `code` string, required
      - `fallback_message` string, required
      - `field` string
      - `media_id` string
      - `message` string, required
      - `output_profile` string
      - `parameters` object
      - `profile` string
      - `provider` string
      - `scope` string
      - `scope_id` string
      - `segment_id` string
      - `severity` string, required
    - `label` string, required
    - `media` MediaConstraint, required
      - `allowed_audio_codecs` string[], nullable
      - `allowed_mimes` string[], nullable, required
      - `allowed_video_codecs` string[], nullable
      - `aspect_ratios` string[], nullable
      - `audio_policy` 'optional' | 'required' | 'forbidden'
      - `max_count` integer, required
      - `max_duration_seconds` integer
      - `max_frame_rate` number, double
      - `max_height` integer
      - `max_image_size_bytes` integer
      - `max_short_side` integer: Maximum image dimension on its shorter side
      - `max_size_bytes` integer
      - `max_video_aspect_ratio` string
      - `max_width` integer
      - `min_count` integer, required
      - `min_height` integer
      - `min_video_aspect_ratio` string
      - `min_width` integer
      - `requires_https_fetchable` boolean, required
      - `requires_public_url` boolean, required
      - `video_exclusive` boolean: A video must be the only attachment in a segment
    - `media_shapes` string[], nullable, required
    - `metadata` object
    - `native_scheduling` boolean, required
    - `openpost_queued` boolean, required
    - `output_profile` string, required
    - `profile` string, required
    - `provider` string, required
    - `requires_app_review` boolean, required
    - `requires_public_media` boolean, required
    - `scheduled_readiness` Decision, required
      - `advertisable` boolean, required
      - `analytics_ready` boolean, required
      - `blockers` Blocker[], nullable
        - `code` string, required
        - `detail` string
      - `connectable` boolean, required
      - `contract_digest` string
      - `discoverable` boolean, required
      - `executable` boolean, required
      - `facts` Facts, required
        - `approval` string, required
        - `authorization` string, required
        - `configuration` string, required
        - `control` string, required
        - `live_certification` string, required
        - `local_test` string, required
        - `policy` string, required
      - `observable` boolean, required
      - `publishable` boolean, required
      - `state` string, required
    - `segment_strategy` 'preserve' | 'join', required
    - `setting_groups` ResolvedSettingGroup[], nullable, required
      - `key` string, required
      - `settings` SettingDefinition[], nullable, required
        - `access_requirements` string[], nullable
        - `capability` string
        - `conflicts` SettingCondition[], nullable
          - `key` string, required
          - `operator` 'equals' | 'not_equals' | 'present' | 'absent' | 'in', required
          - `value` unknown
        - `constraints` SettingConstraint
          - `accept` string[], nullable
          - `date_time` boolean: Value must be an RFC 3339 timestamp with a timezone
          - `local_date_time` boolean
          - `max_items` integer
          - `max_length` integer
          - `maximum` number, double
          - `min_items` integer
          - `min_length` integer
          - `minimum` number, double
          - `pattern` string
          - `unique_items` boolean
        - `control` string, required
        - `default` unknown
        - `dependencies` SettingCondition[], nullable
          - `key` string, required
          - `operator` 'equals' | 'not_equals' | 'present' | 'absent' | 'in', required
          - `value` unknown
        - `group` 'content' | 'conversation' | 'distribution' | 'disclosure' | 'media_accessibility', required
        - `help` string
        - `intents` string[], nullable
        - `key` string, required
        - `label` string, required
        - `media_shapes` string[], nullable
        - `message_key` string, required
        - `options` string[], nullable
        - `options_source` string
        - `output_profiles` string[], nullable
        - `post_only` boolean: Choose this setting on each post, never in reusable Social Set defaults
        - `required` boolean, required
        - `required_policy` 'never' | 'always' | 'when_available'
        - `scope` 'destination' | 'segment' | 'media_item', required
        - `type` string, required
        - `unavailable_reason` string
    - `settings` SettingDefinition[], nullable
      - `access_requirements` string[], nullable
      - `capability` string
      - `conflicts` SettingCondition[], nullable
        - `key` string, required
        - `operator` 'equals' | 'not_equals' | 'present' | 'absent' | 'in', required
        - `value` unknown
      - `constraints` SettingConstraint
        - `accept` string[], nullable
        - `date_time` boolean: Value must be an RFC 3339 timestamp with a timezone
        - `local_date_time` boolean
        - `max_items` integer
        - `max_length` integer
        - `maximum` number, double
        - `min_items` integer
        - `min_length` integer
        - `minimum` number, double
        - `pattern` string
        - `unique_items` boolean
      - `control` string, required
      - `default` unknown
      - `dependencies` SettingCondition[], nullable
        - `key` string, required
        - `operator` 'equals' | 'not_equals' | 'present' | 'absent' | 'in', required
        - `value` unknown
      - `group` 'content' | 'conversation' | 'distribution' | 'disclosure' | 'media_accessibility', required
      - `help` string
      - `intents` string[], nullable
      - `key` string, required
      - `label` string, required
      - `media_shapes` string[], nullable
      - `message_key` string, required
      - `options` string[], nullable
      - `options_source` string
      - `output_profiles` string[], nullable
      - `post_only` boolean: Choose this setting on each post, never in reusable Social Set defaults
      - `required` boolean, required
      - `required_policy` 'never' | 'always' | 'when_available'
      - `scope` 'destination' | 'segment' | 'media_item', required
      - `type` string, required
      - `unavailable_reason` string
    - `text_limit` integer
    - `title_required` boolean
    - `unavailable_reason` string
    - `validation_categories` string[], nullable

## Other responses

- `400`: Bad Request
- `403`: Forbidden
- `404`: Not Found
- `422`: Unprocessable Entity
- `500`: Internal Server Error
- `502`: Bad Gateway

---

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