Pomo Campaigns API

The campaigns API from Pomo — 116 operation(s) for campaigns.

Business capability
Digital Marketing Management BC-400.60

Operations 120

POST /api/campaigns/external/sync Sync External Campaigns #
GET /api/campaigns/external/{platform}/{remote_campaign_id} Get External Campaign Document #
PATCH /api/campaigns/external/{platform}/{remote_campaign_id} Patch External Campaign Document #
GET /api/campaigns/external-media/{document_id}/{media_key} Get External Campaign Media #
POST /api/campaigns/external/{platform}/{remote_campaign_id}/sync Sync External Campaign Document #
GET /api/campaigns/optimization-activity Get Optimization Activity #
GET /api/campaigns/optimization-summary Get Optimization Summary #
POST /api/campaigns/{campaign_public_id}/optimizations/rollback Rollback Campaign Optimizations #
POST /api/campaigns/{campaign_public_id}/optimizations/{action_id}/rollback Rollback Campaign Optimization #
GET /api/campaigns/{campaign_public_id}/optimization-activity Get Campaign Optimization Activity #
GET /api/campaigns/{campaign_public_id}/perf-history Get Campaign Perf History #
POST /api/campaigns/email/edit-image Edit Campaign Image #
POST /api/campaigns/email/edit-content Edit Campaign Content #
DELETE /api/campaigns/email/delete-image Delete Campaign Image #
POST /api/campaigns/email/upload-image Upload Email Campaign Image General #
POST /api/campaigns/email/upload-campaign-image Upload Campaign Image #
POST /api/campaigns/email/upload-campaign-images Upload Campaign Images #
GET /api/campaigns/email Fetch All Email Campaigns #
POST /api/campaigns/email Create Email Campaign #
DELETE /api/campaigns/email/{campaign_id} Delete Email Campaign #
DELETE /api/campaigns/email/{campaign_id}/idea/{idea_number} Delete Email Campaign Idea #
GET /api/campaigns/email/count Get Email Campaigns Count #
POST /api/campaigns/email/associate-consumer-group Associate Consumer Group With Email Campaign #
GET /api/campaigns/email/list-associated-consumer-groups/{campaign_id}/{idea_number} List Associated Consumer Groups #
DELETE /api/campaigns/email/remove-consumer-group-association/{association_id} Remove Consumer Group Association #
POST /api/campaigns/email/{email_campaign_id}/image Add Email Campaign Image #
POST /api/campaigns/social-post/edit-content Edit Social Post Content #
POST /api/campaigns/social-post/direct-edit-social-post Direct Edit Social Post #
DELETE /api/campaigns/social-post/delete-social-post Delete Social Post #
POST /api/campaigns/social-post/edit-social-post-image Edit Social Post Image #
POST /api/campaigns/social-post/upload-social-post-image Upload Social Post Image #
GET /api/campaigns/social-post/social-post-campaigns Fetch All Social Post Campaigns #
DELETE /api/campaigns/social-post/social-post-campaign/{campaign_id} Delete Social Post Campaign #
DELETE /api/campaigns/social-post/social-post-campaign/{campaign_id}/idea/{idea_number} Delete Social Post Campaign Idea #
GET /api/campaigns/social-post/social-post-campaigns-count Get Social Post Campaigns Count #
GET /api/campaigns/social-post/{campaign_id}/{idea_number}/posts Get Campaign Posts #
POST /api/campaigns/social-post/generate-variation Generate Social Post Variation #
POST /api/campaigns/social-post Create Social Post Campaign #
POST /api/campaigns/social-post/schedule/preflight Preflight Social Post Schedule #
POST /api/campaigns/social-post/schedule Upsert Social Post Schedule #
GET /api/campaigns/social-post/schedule/{campaign_id}/{idea_number}/{variation} Get Social Post Schedule #
DELETE /api/campaigns/social-post/schedule/{schedule_id} Cancel Social Post Schedule #
GET /api/campaigns/social-post/list-schedules List Social Post Schedules #
POST /api/campaigns/social-post/schedule/dispatch-due Dispatch Due Social Post Schedules For Company #
POST /api/campaigns/social-post/schedule-campaign/{campaign_id}/{idea_number} Schedule Social Post Campaign #
GET /api/campaigns/social-post/campaign-schedule/{campaign_id}/{idea_number} Get Social Post Campaign Schedule #
DELETE /api/campaigns/social-post/cancel-schedule/{schedule_id} Cancel Social Post Campaign Schedule #
POST /api/campaigns/online-ads/google-display/create Create Google Display Campaign #
POST /api/campaigns/online-ads/google-search/create Create Google Search Campaign #
POST /api/campaigns/online-ads/meta-feed/create Create Meta Feed Campaign #
POST /api/campaigns/online-ads/meta-stories-reels/create Create Meta Stories Reels Campaign #
POST /api/campaigns/online-ads/amazon-sponsored-products/create Create Amazon Sponsored Products Campaign #
POST /api/campaigns/online-ads/amazon-sponsored-brands/create Create Amazon Sponsored Brands Campaign #
POST /api/campaigns/online-ads/amazon-sponsored-display/create Create Amazon Sponsored Display Campaign #
POST /api/campaigns/online-ads/tiktok/create Create Tiktok Campaign #
GET /api/campaigns/online-ads/google-search-campaigns Get Google Search Campaigns #
GET /api/campaigns/online-ads/google-search-campaign/{campaign_id} Get Google Search Campaign #
PUT /api/campaigns/online-ads/google-search/update-campaign Update Google Search Campaign #
POST /api/campaigns/online-ads/google-search/generate-variation/{ad_id} Generate Google Search Variation #
GET /api/campaigns/online-ads/google-display-campaigns Get Google Display Campaigns #
GET /api/campaigns/online-ads/google-display-campaign/{campaign_id} Get Google Display Campaign #
PUT /api/campaigns/online-ads/google-display/update-campaign Update Google Display Campaign #
POST /api/campaigns/online-ads/google-display/generate-variation/{ad_id} Generate Google Display Variation #
POST /api/campaigns/online-ads/google-display/edit-image Edit Google Display Image #
POST /api/campaigns/online-ads/google-display/upload-image Upload Google Display Image #
POST /api/campaigns/online-ads/google-video Create Google Video Ad Campaign #
GET /api/campaigns/online-ads/google-video Get Google Video Campaigns #
GET /api/campaigns/online-ads/google-video/all Get Google Video Ad Campaigns #
GET /api/campaigns/online-ads/google-video/{ad_id} Get Google Video Ad Campaign #
DELETE /api/campaigns/online-ads/google-video/campaign/{campaign_id} Delete Google Video Ad Campaign #
POST /api/campaigns/online-ads/google-video/generate-variation/{ad_id} Create Google Video Ad Variation #
PUT /api/campaigns/online-ads/google-video/update-campaign Update Google Video Ad Campaign #
GET /api/campaigns/online-ads/meta-stories-reels-campaigns Get Meta Stories Reels Campaigns #
GET /api/campaigns/online-ads/meta-stories-reels-campaign/{campaign_id} Get Meta Stories Reels Campaign #
POST /api/campaigns/online-ads/meta-stories-reels/create-campaign Create Meta Stories Reels Campaign #
PUT /api/campaigns/online-ads/meta-stories-reels/update-campaign Update Meta Stories Reels Campaign #
POST /api/campaigns/online-ads/meta-stories-reels/launch Launch Meta Stories Reels Campaign #
GET /api/campaigns/online-ads/meta-feed-campaigns Get Meta Feed Campaigns #
GET /api/campaigns/online-ads/meta-feed-campaign/{campaign_id} Get Meta Feed Campaign #
POST /api/campaigns/online-ads/meta-feed/create-campaign Create Meta Feed Campaign #
PUT /api/campaigns/online-ads/meta-feed/update-campaign Update Meta Feed Campaign #
POST /api/campaigns/online-ads/meta-feed/edit-image Edit Meta Feed Image #
POST /api/campaigns/online-ads/meta-feed/upload-image Upload Meta Feed Image #
POST /api/campaigns/online-ads/meta-feed/launch Launch Meta Feed Campaign #
GET /api/campaigns/online-ads/linkedin-image-campaigns Get Linkedin Image Campaigns #
GET /api/campaigns/online-ads/linkedin-image/{campaign_id} Get Linkedin Image Campaign #
GET /api/campaigns/online-ads/linkedin-image-campaign/{campaign_id} Get Linkedin Image Campaign #
PUT /api/campaigns/online-ads/linkedin-image/update-campaign Update Linkedin Image Campaign #
GET /api/campaigns/online-ads/linkedin-video-campaigns Get Linkedin Video Campaigns #
GET /api/campaigns/online-ads/linkedin-video/{campaign_id} Get Linkedin Video Campaign #
GET /api/campaigns/online-ads/linkedin-video-campaign/{campaign_id} Get Linkedin Video Campaign #
PUT /api/campaigns/online-ads/linkedin-video/update-campaign Update Linkedin Video Campaign #
POST /api/campaigns/online-ads/tiktok-video Create Tiktok Video Ad Campaign #
GET /api/campaigns/online-ads/tiktok-video Get Tiktok Video Campaigns #
GET /api/campaigns/online-ads/tiktok-video/all Get Tiktok Video Ad Campaigns #
GET /api/campaigns/online-ads/tiktok-video/call-to-actions Get Tiktok Video Call To Actions #
GET /api/campaigns/online-ads/tiktok-video/{campaign_id} Get Tiktok Video Ad Campaign #
DELETE /api/campaigns/online-ads/tiktok-video/campaign/{campaign_id} Delete Tiktok Video Ad Campaign #
PUT /api/campaigns/online-ads/tiktok-video/update-campaign Update Tiktok Video Ad Campaign #
POST /api/campaigns/online-ads/generate-variation Generate Ad Variation #
GET /api/campaigns/online-ads/all-campaigns/count Get All Online Ads Campaigns Count #
GET /api/campaigns/online-ads/top-level Get Top Level Entities #
POST /api/campaigns/images/edit-image/job Start Campaign Image Edit Job #
POST /api/campaigns/images/select-image Select Campaign Image #
POST /api/campaigns/images/select-video Select Campaign Video #
POST /api/campaigns/images/batch-select-images Batch Select Campaign Images #
GET /api/campaigns/images/campaign/{campaign_type}/{campaign_id}/image-history Get Campaign Image History #
POST /api/campaigns/budget-estimate Budget Estimate #
POST /api/campaigns/dayparting/campaigns/{campaign_id}/configure Configure Campaign Dayparting #
GET /api/campaigns/dayparting/campaigns/{campaign_id}/status Get Dayparting Status #
DELETE /api/campaigns/dayparting/campaigns/{campaign_id}/disable Disable Dayparting #
GET /api/campaigns/dayparting/meta/{ad_id}/health Check Meta Rules Health #
DELETE /api/campaigns/dayparting/meta/{ad_id}/cleanup Cleanup Meta Rules #
GET /api/campaigns/dayparting/performance/{campaign_id} Get Dayparting Performance #
GET /api/campaigns/geo/reverse-geocode Reverse Geocode Campaign Pin #
GET /api/campaigns/geo/postal-code Resolve Campaign Postal Code #
GET /api/campaigns/queue Get Campaign Work Queue #
GET /api/campaigns/dashboard Get Campaign Dashboard Bundle #
GET /api/campaigns/all/count Get All Campaigns Count #
GET /api/campaigns/all/active Get Active Campaigns #

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-campaigns-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 form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

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

OpenAPI Specification

pomo-campaigns-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: GPT Backend Campaigns 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: campaigns
paths:
  /api/campaigns/external/sync:
    post:
      tags:
      - campaigns
      summary: Sync External Campaigns
      description: 'Sync external Google, Meta, TikTok, or LinkedIn campaigns for the active profile.


        Campaign identity and daily metrics are fetched at campaign level without

        filtering native ad types. Provider-specific hydration may add richer media

        (for example, Google Performance Max asset groups), but an unknown type is

        still persisted and renderable through the generic document contract. The

        default bounded mode never infers remote deletion; callers must explicitly

        request an exhaustive inventory before missing documents are retired.'
      operationId: sync_external_campaigns_api_campaigns_external_sync_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExternalCampaignSyncRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExternalCampaignSyncResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - HTTPBearer: []
  /api/campaigns/external/{platform}/{remote_campaign_id}:
    get:
      tags:
      - campaigns
      summary: Get External Campaign Document
      description: Return one imported campaign, strictly scoped to the active profile.
      operationId: get_external_campaign_document_api_campaigns_external__platform___remote_campaign_id__get
      security:
      - HTTPBearer: []
      parameters:
      - name: platform
        in: path
        required: true
        schema:
          enum:
          - google
          - meta
          - tiktok
          - linkedin
          type: string
          title: Platform
      - name: remote_campaign_id
        in: path
        required: true
        schema:
          type: string
          title: Remote Campaign Id
      - name: document_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          title: Document Id
      - name: account_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Account Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response Get External Campaign Document Api Campaigns External  Platform   Remote Campaign Id  Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    patch:
      tags:
      - campaigns
      summary: Patch External Campaign Document
      description: Mutate allowlisted provider fields and return verified provider readback.
      operationId: patch_external_campaign_document_api_campaigns_external__platform___remote_campaign_id__patch
      security:
      - HTTPBearer: []
      parameters:
      - name: platform
        in: path
        required: true
        schema:
          enum:
          - google
          - meta
          - tiktok
          type: string
          title: Platform
      - name: remote_campaign_id
        in: path
        required: true
        schema:
          type: string
          title: Remote Campaign Id
      - name: document_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          title: Document Id
      - name: account_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Account Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExternalCampaignPatchRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response Patch External Campaign Document Api Campaigns External  Platform   Remote Campaign Id  Patch
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/campaigns/external-media/{document_id}/{media_key}:
    get:
      tags:
      - campaigns
      summary: Get External Campaign Media
      description: Proxy one provider media asset after profile-scoped validation.
      operationId: get_external_campaign_media_api_campaigns_external_media__document_id___media_key__get
      security:
      - HTTPBearer: []
      parameters:
      - name: document_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Document Id
      - name: media_key
        in: path
        required: true
        schema:
          type: string
          title: Media Key
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/campaigns/external/{platform}/{remote_campaign_id}/sync:
    post:
      tags:
      - campaigns
      summary: Sync External Campaign Document
      description: Synchronize one exact provider campaign for safe mutation recovery.
      operationId: sync_external_campaign_document_api_campaigns_external__platform___remote_campaign_id__sync_post
      security:
      - HTTPBearer: []
      parameters:
      - name: platform
        in: path
        required: true
        schema:
          enum:
          - google
          - meta
          - tiktok
          type: string
          title: Platform
      - name: remote_campaign_id
        in: path
        required: true
        schema:
          type: string
          title: Remote Campaign Id
      - name: document_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          title: Document Id
      - name: account_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Account Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response Sync External Campaign Document Api Campaigns External  Platform   Remote Campaign Id  Sync Post
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/campaigns/optimization-activity:
    get:
      tags:
      - campaigns
      summary: Get Optimization Activity
      description: 'AI-team activity (history) for the active company profile.


        Sourced from the execution layer (``AgentTeamAction``), so stage reflects

        what actually happened: ``executed`` only when the action genuinely ran;

        ``approved`` actions are reported as approved/queued, not applied. Pass

        ``stage`` (``executed``/``approved``/``declined``/``failed``) to filter. A

        measured performance outcome is reported only when one really exists.'
      operationId: get_optimization_activity_api_campaigns_optimization_activity_get
      security:
      - HTTPBearer: []
      parameters:
      - name: stage
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Stage
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          default: 100
          title: Limit
      - name: offset
        in: query
        required: false
        schema:
          type: integer
          default: 0
          title: Offset
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AiTeamActivityResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/campaigns/optimization-summary:
    get:
      tags:
      - campaigns
      summary: Get Optimization Summary
      description: 'Per-campaign AI-team activity rollup for the active profile.


        One row per public campaign id the team has acted on, so the Campaigns

        dashboard can surface "AI team · N optimizations" (with a measured outcome

        when one exists) directly on the matching card. Fetched once per profile and

        merged client-side by campaign id; kept independent of the dashboard bundle

        so an activity-query hiccup never blanks the campaign list.'
      operationId: get_optimization_summary_api_campaigns_optimization_summary_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CampaignOptimizationSummaryResponse'
      security:
      - HTTPBearer: []
  /api/campaigns/{campaign_public_id}/optimizations/rollback:
    post:
      tags:
      - campaigns
      summary: Rollback Campaign Optimizations
      operationId: rollback_campaign_optimizations_api_campaigns__campaign_public_id__optimizations_rollback_post
      security:
      - HTTPBearer: []
      parameters:
      - name: campaign_public_id
        in: path
        required: true
        schema:
          type: string
          title: Campaign Public Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CampaignOptimizationRollbackRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CampaignOptimizationRollbackResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/campaigns/{campaign_public_id}/optimizations/{action_id}/rollback:
    post:
      tags:
      - campaigns
      summary: Rollback Campaign Optimization
      description: 'Reverse one provider-executed optimization from its captured prior values.


        This is an authenticated, user-confirmed provider mutation—not a database

        rewind. The source action stays immutable. Dates and automatic activation

        are excluded, newer overlapping changes block the rollback, and the normal

        external mutation service enforces provider constraints plus readback.'
      operationId: rollback_campaign_optimization_api_campaigns__campaign_public_id__optimizations__action_id__rollback_post
      security:
      - HTTPBearer: []
      parameters:
      - name: campaign_public_id
        in: path
        required: true
        schema:
          type: string
          title: Campaign Public Id
      - name: action_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Action Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CampaignOptimizationRollbackResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/campaigns/{campaign_public_id}/optimization-activity:
    get:
      tags:
      - campaigns
      summary: Get Campaign Optimization Activity
      description: 'The AI-team activity ledger scoped to a single campaign.


        ``campaign_public_id`` is the public id the dashboard exposes on each card

        (``ads_<hash>`` / ``social_<hash>`` / ``batch_<hash>_<platform>``). Same

        honest, execution-sourced contract as the profile-wide ledger, filtered to

        actions that target this campaign.'
      operationId: get_campaign_optimization_activity_api_campaigns__campaign_public_id__optimization_activity_get
      security:
      - HTTPBearer: []
      parameters:
      - name: campaign_public_id
        in: path
        required: true
        schema:
          type: string
          title: Campaign Public Id
      - name: stage
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Stage
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          default: 100
          title: Limit
      - name: offset
        in: query
        required: false
        schema:
          type: integer
          default: 0
          title: Offset
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AiTeamActivityResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/campaigns/{campaign_public_id}/perf-history:
    get:
      tags:
      - campaigns
      summary: Get Campaign Perf History
      description: 'Daily headline-metric trend + optimization markers for one campaign, for the

        expanded-row chart that backs the strip''s DoD/WoW tags and "+N% vs before". Computed

        live from the raw platform daily metrics; empty for a campaign with no paid analytics.'
      operationId: get_campaign_perf_history_api_campaigns__campaign_public_id__perf_history_get
      security:
      - HTTPBearer: []
      parameters:
      - name: campaign_public_id
        in: path
        required: true
        schema:
          type: string
          title: Campaign Public Id
      - name: days
        in: query
        required: false
        schema:
          type: integer
          default: 30
          title: Days
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CampaignPerfHistoryResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/campaigns/email/edit-image:
    post:
      tags:
      - campaigns
      summary: Edit Campaign Image
      description: 'Edit a campaign supporting image based on user instructions.

        The edited image will be added as a new image for the same campaign.

        Only supporting images can be edited (not banner images).


        The user provides a text description of the changes they want, and the

        AI will generate an edited version of the image based on those instructions.'
      operationId: edit_campaign_image_api_campaigns_email_edit_image_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Body_edit_campaign_image_api_campaigns_email_edit_image_post'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - HTTPBearer: []
  /api/campaigns/email/edit-content:
    post:
      tags:
      - campaigns
      summary: Edit Campaign Content
      description: 'Edit email campaign content based on user instructions.

        The edited content will replace the existing content for the campaign.


        The user provides a text description of the changes they want, and the

        AI will generate an edited version of the email content based on those instructions.'
      operationId: edit_campaign_content_api_campaigns_email_edit_content_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Body_edit_campaign_content_api_campaigns_email_edit_content_post'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - HTTPBearer: []
  /api/campaigns/email/delete-image:
    delete:
      tags:
      - campaigns
      summary: Delete Campaign Image
      description: 'Delete a campaign supporting image.

        Only the user who created the campaign can delete images associated with it.


        Query parameters:

        - campaign_id: Campaign ID of the image to delete

        - idea_number: Campaign idea number

        - image_url: URL of the image to delete'
      operationId: delete_campaign_image_api_campaigns_email_delete_image_delete
      security:
      - HTTPBearer: []
      parameters:
      - name: campaign_id
        in: query
        required: true
        schema:
          type: string
          title: Campaign Id
      - name: idea_number
        in: query
        required: true
        schema:
          type: integer
          title: Idea Number
      - name: image_url
        in: query
        required: true
        schema:
          type: string
          title: Image Url
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/campaigns/email/upload-image:
    post:
      tags:
      - campaigns
      summary: Upload Email Campaign Image General
      description: 'Upload a new image for an email campaign and update database records.

        This endpoint is used for manual image uploads for email campaigns.

        It replaces the general upload-image endpoint previously in campaigns_general.py.'
      operationId: upload_email_campaign_image_general_api_campaigns_email_upload_image_post
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Body_upload_email_campaign_image_general_api_campaigns_email_upload_image_post'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - HTTPBearer: []
  /api/campaigns/email/upload-campaign-image:
    post:
      tags:
      - campaigns
      summary: Upload Campaign Image
      description: "Upload a new campaign image and update database records.\nThis endpoint is used for manual image edits instead of replacing an existing image.\n\nArgs:\n    file: The image file to upload\n    campaign_id: Campaign ID\n    idea_number: Campaign idea number\n    image_type: Type of image (defaults to EMAIL_IMAGE)\n    current_user: The authenticated user\n    db: Database session\n\nReturns:\n    JSON response with the result including new image URL"
      operationId: upload_campaign_image_api_campaigns_email_upload_campaign_image_post
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Body_upload_campaign_image_api_campaigns_email_upload_campaign_image_post'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - HTTPBearer: []
  /api/campaigns/email/upload-campaign-images:
    post:
      tags:
      - campaigns
      summary: Upload Campaign Images
      description: "Upload campaign images (up to 15) and update database records.\nThis endpoint allows batch uploading of images for a specific campaign idea.\n\nArgs:\n    files: List of image files to upload (max 15)\n    campaign_id: Campaign ID\n    idea_number: Campaign idea number\n    image_type: Type of image (defaults to EMAIL_IMAGE)\n    current_user: The authenticated user\n    db: Database session\n\nReturns:\n    JSON response with the result including new image URLs"
      operationId: upload_campaign_images_api_campaigns_email_upload_campaign_images_post
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Body_upload_campaign_images_api_campaigns_email_upload_campaign_images_post'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - HTTPBearer: []
  /api/campaigns/email:
    get:
      tags:
      - campaigns
      summary: Fetch All Email Campaigns
      description: 'Fetch all email campaigns for the current user, including the generated email images.

        Support pagination with page and limit parameters.'
      operationId: fetch_all_email_campaigns_api_campaigns_email_get
      security:
      - HTTPBearer: []
      parameters:
      - name: page
        in: query
        required: false
        schema:
          type: integer
          default: 0
          title: Page
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          default: 10
          title: Limit
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response Fetch All Email Campaigns Api Campaigns Email Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    post:
      tags:
      - campaigns
      summary: Create Email Campaign
      description: 'Create a new email campaign using the dedicated EmailCampaign model.

        This endpoint provides a direct REST API method for creating campaigns

        instead of using the workflow approach.'
      operationId: create_email_campaign_api_campaigns_email_post
      security:
      - HTTPBearer: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EmailCampaignCreate'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmailCampaignResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/campaigns/email/{campaign_id}:
    delete:
      tags:
      - campaigns
      summary: Delete Email Campaign
      description: 'Delete an entire email campaign (all ideas) and related resources.

        This will remove the EmailCampaign models and related resources.'
      operationId: delete_email_campaign_api_campaigns_email__campaign_id__delete
      security:
      - HTTPBearer: []
      parameters:
      - name: campaign_id
        in: path
        required: true
        schema:
          type: string
          title: Campaign Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/campaigns/email/{campaign_id}/idea/{idea_number}:
    delete:
      tags:
      - campaigns
      summary: Delete Email Campaign Idea
      description: 'Delete a specific idea from an email campaign.

        This will remove the idea and all associated images from the database.

        Handles both the new EmailCampaign model and the legacy Campaign model.'
      operationId: delete_email_campaign_idea_api_campaigns_email__campaign_id__idea__idea_number__delete
      security:
      - HTTPBearer: []
      parameters:
      - name: campaign_id
        in: path
        required: true
        schema:
          type: string
          title: Campaign Id
      - name: idea_number
        in: path
        required: true
        schema:
          type: integer
          title: Idea Number
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/campaigns/email/count:
    get:
      tags:
      - campaigns
      summary: Get Email Campaigns Count
      description: 'Get the count of email campaigns for the current user.

        This counts campaigns in the new EmailCampaign model.'
      operationId: get_email_campaigns_count_api_campaigns_email_count_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      security:
      - HTTPBearer: []
  /api/campaigns/email/associate-consumer-group:
    post:
      tags:
      - campaigns
      summary: Associate Consumer Group With Email Campaign
      description: Associate a consumer group with an email campaign.
      operationId: associate_consumer_group_with_email_campaign_api_campaigns_email_associate_consumer_group_post
      requestBody:
        content:
          application/json:
            schema:
              additionalProperties: true
              type: object
              title: Data
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - HTTPBearer: []
  /api/campaigns/email/list-associated-consumer-groups/{campaign_id}/{idea_number}:
    get:
      tags:
      - campaigns
      summary: List Associated Consumer Groups
      description: List all consumer groups associated with an email campaign idea.
      operationId: list_associated_consumer_groups_api_campaigns_email_list_associated_consumer_groups__campaign_id___idea_number__get
      security:
      - HTTPBearer: []
      parameters:
      - name: campaign_id
        in: path
        required: true
        schema:
          type: string
          title: Campaign Id
      - name: idea_number
        in: path
        required: true
        schema:
          type: integer
          title: Idea Number
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/campaigns/email/remove-consumer-group-association/{association_id}:
    delete:
      tags:
      - campaigns
      summary: Remove Consumer Group Association
      description: Remove an association between a consumer group and an email campaign.
      operationId: remove_consumer_group_association_api_campaigns_email_remove_consumer_group_association__association_id__delete
      security:
      - HTTPBearer: []
      parameters:
      - name: association_id
        in: path
        required: true
        schema:
          type: integer
          title: Association Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/campaigns/email/{email_campaign_id}/image:
    post:
      tags:
      - campaigns
      summary: Add Email Campaign Image
      description: 'Add a new image to an existing email campaign using the EmailCampaignImage model.

        The email_campaign_id refers to the ID of the EmailCampaign record.'
      operationId: add_email_campaign_image_api_campaigns_email__email_campaign_id__image_post
      security:
      - HTTPBearer: []
      parameters:
      - name: email_campaign_id
        in: path
        required: true
        schema:
          type: integer
          title: Email Campaign Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EmailCampaignImageCreate'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/campaigns/social-post/edit-content:
    post:
      tags:
      - campaigns
      summary: Edit Social Post Content
      description: 'Edit social post content based on current company profile instructions.

        The edited content will replace the existing content for the social post.


        The current company profile provides a text description of the changes they want, and the

        AI will generate an edited version of the content based on those instructions.'
      operationId: edit_social_post_content_api_campaigns_social_post_edit_content_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Body_edit_social_post_content_api_campaigns_social_post_edit_content_post'
        required: true
      responses:


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