Pomo Earned Media API

The earned-media API from Pomo — 17 operation(s) for earned-media.

Business capability
Media Relations Management BC-850.40

Operations 20

GET /api/earned-media/projects List Earned Media Projects #
POST /api/earned-media/projects Create Earned Media Project #
GET /api/earned-media/projects/{project_id} Get Earned Media Project #
PATCH /api/earned-media/projects/{project_id} Update Earned Media Project #
POST /api/earned-media/projects/{project_id}/archive Archive Earned Media Project #
POST /api/earned-media/projects/{project_id}/generate Generate Earned Media Project #
POST /api/earned-media/projects/{project_id}/refresh-research Refresh Earned Media Research #
PUT /api/earned-media/projects/{project_id}/drafts/{draft_id} Save Earned Media Draft #
GET /api/earned-media/projects/{project_id}/drafts/{draft_id}/export Export Earned Media Draft #
POST /api/earned-media/projects/{project_id}/drafts/{draft_id}/rewrite Rewrite Earned Media Draft #
GET /api/earned-media/projects/{project_id}/drafts/{draft_id}/versions List Earned Media Draft Versions #
POST /api/earned-media/projects/{project_id}/drafts/{draft_id}/versions/{version_number}/restore Restore Earned Media Draft Version #
POST /api/earned-media/projects/{project_id}/targets/{target_id}/enrich-contact Enrich Earned Media Target Contact #
POST /api/earned-media/projects/{project_id}/targets/{target_id}/pitch Draft Earned Media Target Pitch #
PATCH /api/earned-media/projects/{project_id}/targets/{target_id} Update Earned Media Target #
GET /api/earned-media/press-room Get Earned Media Press Room #
PUT /api/earned-media/press-room Save Earned Media Press Room #
POST /api/earned-media/press-room/generate Generate Earned Media Press Room #
POST /api/earned-media/press-room/coverage Discover Earned Media Press Coverage #
POST /api/earned-media/press-room/coverage/url Add Earned Media Press Coverage Url #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/pomo-earned-media-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

pomo-earned-media-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: GPT Backend Earned Media API
  version: 0.1.0
servers:
- url: https://api.usepomo.ai
  description: Base URL declared by the provider in apis.yml (roadmap#122).
tags:
- name: earned-media
paths:
  /api/earned-media/projects:
    get:
      tags:
      - earned-media
      summary: List Earned Media Projects
      operationId: list_earned_media_projects_api_earned_media_projects_get
      security:
      - HTTPBearer: []
      parameters:
      - name: status
        in: query
        required: false
        schema:
          anyOf:
          - enum:
            - draft
            - generating
            - ready
            - needs_review
            - failed
            - archived
            type: string
          - type: 'null'
          title: Status
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          maximum: 100
          minimum: 1
          default: 50
          title: Limit
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response List Earned Media Projects Api Earned Media Projects Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    post:
      tags:
      - earned-media
      summary: Create Earned Media Project
      operationId: create_earned_media_project_api_earned_media_projects_post
      security:
      - HTTPBearer: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EarnedMediaProjectCreateRequest'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response Create Earned Media Project Api Earned Media Projects Post
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/earned-media/projects/{project_id}:
    get:
      tags:
      - earned-media
      summary: Get Earned Media Project
      operationId: get_earned_media_project_api_earned_media_projects__project_id__get
      security:
      - HTTPBearer: []
      parameters:
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          title: Project Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response Get Earned Media Project Api Earned Media Projects  Project Id  Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    patch:
      tags:
      - earned-media
      summary: Update Earned Media Project
      operationId: update_earned_media_project_api_earned_media_projects__project_id__patch
      security:
      - HTTPBearer: []
      parameters:
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          title: Project Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EarnedMediaProjectUpdateRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response Update Earned Media Project Api Earned Media Projects  Project Id  Patch
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/earned-media/projects/{project_id}/archive:
    post:
      tags:
      - earned-media
      summary: Archive Earned Media Project
      description: Retire a story. Idempotent; refused while a generation lease is live.
      operationId: archive_earned_media_project_api_earned_media_projects__project_id__archive_post
      security:
      - HTTPBearer: []
      parameters:
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          title: Project Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response Archive Earned Media Project Api Earned Media Projects  Project Id  Archive Post
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/earned-media/projects/{project_id}/generate:
    post:
      tags:
      - earned-media
      summary: Generate Earned Media Project
      operationId: generate_earned_media_project_api_earned_media_projects__project_id__generate_post
      security:
      - HTTPBearer: []
      parameters:
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          title: Project Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EarnedMediaGenerateRequest'
      responses:
        '202':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response Generate Earned Media Project Api Earned Media Projects  Project Id  Generate Post
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/earned-media/projects/{project_id}/refresh-research:
    post:
      tags:
      - earned-media
      summary: Refresh Earned Media Research
      operationId: refresh_earned_media_research_api_earned_media_projects__project_id__refresh_research_post
      security:
      - HTTPBearer: []
      parameters:
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          title: Project Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EarnedMediaRefreshResearchRequest'
      responses:
        '202':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response Refresh Earned Media Research Api Earned Media Projects  Project Id  Refresh Research Post
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/earned-media/projects/{project_id}/drafts/{draft_id}:
    put:
      tags:
      - earned-media
      summary: Save Earned Media Draft
      operationId: save_earned_media_draft_api_earned_media_projects__project_id__drafts__draft_id__put
      security:
      - HTTPBearer: []
      parameters:
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          title: Project Id
      - name: draft_id
        in: path
        required: true
        schema:
          type: string
          title: Draft Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EarnedMediaDraftSaveRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response Save Earned Media Draft Api Earned Media Projects  Project Id  Drafts  Draft Id  Put
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/earned-media/projects/{project_id}/drafts/{draft_id}/export:
    get:
      tags:
      - earned-media
      summary: Export Earned Media Draft
      description: Download the current saved draft as a recipient-ready PDF or HTML file.
      operationId: export_earned_media_draft_api_earned_media_projects__project_id__drafts__draft_id__export_get
      security:
      - HTTPBearer: []
      parameters:
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          title: Project Id
      - name: draft_id
        in: path
        required: true
        schema:
          type: string
          title: Draft Id
      - name: format
        in: query
        required: false
        schema:
          enum:
          - pdf
          - html
          type: string
          default: pdf
          title: Format
      - name: timezone
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            maxLength: 64
          - type: 'null'
          title: Timezone
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/earned-media/projects/{project_id}/drafts/{draft_id}/rewrite:
    post:
      tags:
      - earned-media
      summary: Rewrite Earned Media Draft
      description: 'Claim the project for a rewrite, then hand the model call to the worker.


        The rewrite waits on one model call with nothing to stream, so the request

        is idle for its whole duration and the proxy closes it before the model

        answers. The client then sees a gateway error for work the server went on

        to finish. The project row carries the run the studio already polls, so the

        claim happens here and the call happens there.'
      operationId: rewrite_earned_media_draft_api_earned_media_projects__project_id__drafts__draft_id__rewrite_post
      security:
      - HTTPBearer: []
      parameters:
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          title: Project Id
      - name: draft_id
        in: path
        required: true
        schema:
          type: string
          title: Draft Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EarnedMediaDraftRewriteRequest'
      responses:
        '202':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response Rewrite Earned Media Draft Api Earned Media Projects  Project Id  Drafts  Draft Id  Rewrite Post
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/earned-media/projects/{project_id}/drafts/{draft_id}/versions:
    get:
      tags:
      - earned-media
      summary: List Earned Media Draft Versions
      operationId: list_earned_media_draft_versions_api_earned_media_projects__project_id__drafts__draft_id__versions_get
      security:
      - HTTPBearer: []
      parameters:
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          title: Project Id
      - name: draft_id
        in: path
        required: true
        schema:
          type: string
          title: Draft Id
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          maximum: 100
          minimum: 1
          default: 20
          title: Limit
      - name: offset
        in: query
        required: false
        schema:
          type: integer
          minimum: 0
          default: 0
          title: Offset
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response List Earned Media Draft Versions Api Earned Media Projects  Project Id  Drafts  Draft Id  Versions Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/earned-media/projects/{project_id}/drafts/{draft_id}/versions/{version_number}/restore:
    post:
      tags:
      - earned-media
      summary: Restore Earned Media Draft Version
      operationId: restore_earned_media_draft_version_api_earned_media_projects__project_id__drafts__draft_id__versions__version_number__restore_post
      security:
      - HTTPBearer: []
      parameters:
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          title: Project Id
      - name: draft_id
        in: path
        required: true
        schema:
          type: string
          title: Draft Id
      - name: version_number
        in: path
        required: true
        schema:
          type: integer
          title: Version Number
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EarnedMediaVersionRestoreRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response Restore Earned Media Draft Version Api Earned Media Projects  Project Id  Drafts  Draft Id  Versions  Version Number  Restore Post
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/earned-media/projects/{project_id}/targets/{target_id}/enrich-contact:
    post:
      tags:
      - earned-media
      summary: Enrich Earned Media Target Contact
      description: Look up the outlet's published press contact route via live web search.
      operationId: enrich_earned_media_target_contact_api_earned_media_projects__project_id__targets__target_id__enrich_contact_post
      security:
      - HTTPBearer: []
      parameters:
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          title: Project Id
      - name: target_id
        in: path
        required: true
        schema:
          type: string
          title: Target Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response Enrich Earned Media Target Contact Api Earned Media Projects  Project Id  Targets  Target Id  Enrich Contact Post
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/earned-media/projects/{project_id}/targets/{target_id}/pitch:
    post:
      tags:
      - earned-media
      summary: Draft Earned Media Target Pitch
      description: Draft an outlet-specific pitch email from the story's verified material.
      operationId: draft_earned_media_target_pitch_api_earned_media_projects__project_id__targets__target_id__pitch_post
      security:
      - HTTPBearer: []
      parameters:
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          title: Project Id
      - name: target_id
        in: path
        required: true
        schema:
          type: string
          title: Target Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response Draft Earned Media Target Pitch Api Earned Media Projects  Project Id  Targets  Target Id  Pitch Post
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/earned-media/projects/{project_id}/targets/{target_id}:
    patch:
      tags:
      - earned-media
      summary: Update Earned Media Target
      operationId: update_earned_media_target_api_earned_media_projects__project_id__targets__target_id__patch
      security:
      - HTTPBearer: []
      parameters:
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          title: Project Id
      - name: target_id
        in: path
        required: true
        schema:
          type: string
          title: Target Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EarnedMediaTargetUpdateRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response Update Earned Media Target Api Earned Media Projects  Project Id  Targets  Target Id  Patch
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/earned-media/press-room:
    get:
      tags:
      - earned-media
      summary: Get Earned Media Press Room
      operationId: get_earned_media_press_room_api_earned_media_press_room_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                additionalProperties: true
                type: object
                title: Response Get Earned Media Press Room Api Earned Media Press Room Get
      security:
      - HTTPBearer: []
    put:
      tags:
      - earned-media
      summary: Save Earned Media Press Room
      operationId: save_earned_media_press_room_api_earned_media_press_room_put
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EarnedMediaPressRoomSaveRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                additionalProperties: true
                type: object
                title: Response Save Earned Media Press Room Api Earned Media Press Room Put
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - HTTPBearer: []
  /api/earned-media/press-room/generate:
    post:
      tags:
      - earned-media
      summary: Generate Earned Media Press Room
      operationId: generate_earned_media_press_room_api_earned_media_press_room_generate_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EarnedMediaPressRoomGenerateRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                additionalProperties: true
                type: object
                title: Response Generate Earned Media Press Room Api Earned Media Press Room Generate Post
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - HTTPBearer: []
  /api/earned-media/press-room/coverage:
    post:
      tags:
      - earned-media
      summary: Discover Earned Media Press Coverage
      description: Claim the press room for a coverage sweep, then hand it to the worker.
      operationId: discover_earned_media_press_coverage_api_earned_media_press_room_coverage_post
      responses:
        '202':
          description: Successful Response
          content:
            application/json:
              schema:
                additionalProperties: true
                type: object
                title: Response Discover Earned Media Press Coverage Api Earned Media Press Room Coverage Post
      security:
      - HTTPBearer: []
  /api/earned-media/press-room/coverage/url:
    post:
      tags:
      - earned-media
      summary: Add Earned Media Press Coverage Url
      description: Add one page the user already knows about.
      operationId: add_earned_media_press_coverage_url_api_earned_media_press_room_coverage_url_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EarnedMediaCoverageUrlRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                additionalProperties: true
                type: object
                title: Response Add Earned Media Press Coverage Url Api Earned Media Press Room Coverage Url Post
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - HTTPBearer: []
components:
  schemas:
    EarnedMediaTargetUpdateRequest:
      properties:
        status:
          anyOf:
          - type: string
            enum:
            - recommended
            - shortlisted
            - dismissed
          - type: 'null'
          title: Status
        outreach_status:
          anyOf:
          - type: string
            enum:
            - not_started
            - pitch_ready
            - contacted
            - follow_up_due
            - replied
            - interview
            - published
            - not_pursuing
          - type: 'null'
          title: Outreach Status
        last_contacted_at:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Last Contacted At
        next_follow_up_at:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Next Follow Up At
        coverage_url:
          anyOf:
          - type: string
            maxLength: 2000
          - type: 'null'
          title: Coverage Url
        notes:
          anyOf:
          - type: string
            maxLength: 2000
          - type: 'null'
          title: Notes
      additionalProperties: false
      type: object
      title: EarnedMediaTargetUpdateRequest
    EarnedMediaPressCoverageItem:
      properties:
        id:
          type: string
          maxLength: 80
          minLength: 1
          title: Id
        url:
          type: string
          maxLength: 2000
          minLength: 8
          title: Url
        title:
          type: string
          maxLength: 320
          minLength: 1
          title: Title
        outlet:
          type: string
          maxLength: 220
          title: Outlet
          default: ''
        summary:
          type: string
          maxLength: 600
          title: Summary
          default: ''
        published_on:
          type: string
          maxLength: 40
          title: Published On
          default: ''
        source_category:
          type: string
          maxLength: 64
          title: Source Category
          default: unknown
        independence:
          type: string
          maxLength: 32
          title: Independence
          default: unknown
        review_status:
          type: string
          enum:
          - suggested
          - verified
          - approved
          title: Review Status
          default: suggested
        discovered_at:
          type: string
          maxLength: 40
          title: Discovered At
          default: ''
        added_by:
          type: string
          maxLength: 16
          title: Added By
          default: ''
      additionalProperties: false
      type: object
      required:
      - id
      - url
      - title
      title: EarnedMediaPressCoverageItem
      description: A page that already exists about this brand.
    EarnedMediaPressRoom:
      properties:
        approved_for_publication:
          type: boolean
          title: Approved For Publication
          default: false
        announcement_date:
          anyOf:
          - type: string
            format: date
          - type: 'null'
          title: Announcement Date
        dateline_city:
          anyOf:
          - type: string
            maxLength: 220
          - type: 'null'
          title: Dateline City
        verified_facts:
          items:
            type: string
            maxLength: 1200
            minLength: 3
          type: array
          maxItems: 20
          title: Verified Facts
        quotes:
          items:
            $ref: '#/components/schemas/EarnedMediaPressQuote'
          type: array
          maxItems: 8
          title: Quotes
        boilerplate:
          anyOf:
          - type: string
            maxLength: 2500
          - type: 'null'
          title: Boilerplate
        media_contact:
          anyOf:
          - $ref: '#/components/schemas/EarnedMediaContact'
          - type: 'null'
        assets:
          items:
            $ref: '#/components/schemas/EarnedMediaPressAsset'
          type: array
          maxItems: 12
          title: Assets
        verification_note:
          anyOf:
          - type: string
            maxLength: 500
          - type: 'null'
          title: Verification Note
      additionalProperties: false
      type: object
      title: EarnedMediaPressRoom
      description: Brand-approved facts and assets kept out of public web search.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    EarnedMediaContact:
      properties:
        name:
          type: string
          maxLength: 220
          minLength: 1
          title: Name
        title:
          anyOf:
          - type: string
            maxLength: 220
          - type: 'null'
          title: Title
        email:
          anyOf:
          - type: string
            maxLength: 320
          - type: 'null'
          title: Email
        phone:
          anyOf:
          - type: string
            maxLength: 80
          - type: 'null'
          title: Phone
      additionalProperties: false
      type: object
      required:
      - name
      title: EarnedMediaContact
    EarnedMediaPressQuote:
      properties:
        speaker_name:
          type: string
          maxLength: 220
          minLength: 1
          title: Speaker Name
        speaker_title:
          anyOf:
          - type: string
            maxLength: 220
          - type: 'null'
          title: Speaker Title
        quote:
          type: string
          maxLength: 2000
          minLength: 20
          title: Quote
        approved_for_publication:
          type: boolean
          title: Approved For Publication
          default: true
        source_label:
          anyOf:
          - type: string
            maxLength: 220
          - type: 'null'
          title: Source Label
      additionalProperties: false
      type: object
      required:
      - speaker_name
      - quote
      title: EarnedMediaPressQuote
      description: A quote explicitly cleared by the brand for external publication.
    EarnedMediaProjectUpdateRequest:
      properties:
        title:
          anyOf:
          - type: string
            maxLength: 220
            minLength: 3
          - type: 'null'
          title: Title
        story_format:
          anyOf:
          - type: string
            enum:
            - press_release
            - bylined_article
            - journalist_pitch
            - local_story
          - type: 'null'
          title: Story Format
        objective:
          anyOf:
          - type: string
            maxLength: 2000
          - type: 'null'
          title: Objective
        audience:
          anyOf:
          - type: string
            maxLength: 220
          - type: 'null'
          title: Audience
        market:
          anyOf:
          - type: string
            maxLength: 220
          - type: 'null'
          title: Market
        primary_angle:
          anyOf:
          - type: string
            maxLength: 2500
          - type: 'null'
          title: Primary Angle
        source_context:
          anyOf:
          - $ref: '#/components/schemas/EarnedMediaSourceContext'
          - type: 'null'
      additionalProperties: false
      type: object
      title: EarnedMediaProjectUpdateRequest
    EarnedMediaPressRoomSource:
      properties:
        label:
          type: string
          maxLength: 220
          minLength: 1
          title: Label
        reference:
          type: string
          maxLength: 300
          minLength: 1
          title: Reference
        url:
          anyOf:
          - type: string
            maxLength: 2000
            minLength: 8
          - type: 'null'
          title: Url
      additionalProperties: false
      type: object
      required:
      - label
      - reference
      title: EarnedMediaPressRoomSource
    EarnedMediaPressRoomSaveRequest:
      properties:
        content:
          $ref: '#/components/schemas/EarnedMediaPressRoomProfileContent'
        base_updated_at:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Base Updated At
      additionalProperties: false
      type: object
      required:
      - content
      title: EarnedMediaPressRoomSaveRequest
    EarnedMediaGenerateRequest:
      properties:
        draft_count:
          type: integer
          enum:
          - 1
          - 2
          title: Draft Count
          default: 2
        instruction:
          anyOf:
          - type: string
            maxLength: 2500
          - type: 'null'
          title: Instruction
      additionalProperties: false
      type: object
      title: EarnedMediaGenerateRequest
    EarnedMediaCoverageUrlRequest:
      properties:
        url:
          type: string
          maxLength: 2000
          minLength: 8
          title: Url
      additionalProperties: false
      type: object
      required:
      - url
      title: EarnedMediaCoverageUrlRequest
      description: One page a person already knows about.
    EarnedMediaPressRoomQuoteItem:
      properties:
        id:
          type: string
          maxLength: 80
          minLength: 1
          title: Id
        speaker_name:
          type: string
          maxLength: 220
          minLength: 1
          title: Speaker Name
        spe

# --- truncated at 32 KB (44 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/pomo/refs/heads/main/openapi/pomo-earned-media-api-openapi.yml