Megaphone Promo Orders API

The Promo Orders API from Megaphone — 2 operation(s) for promo orders.

GitHub OpenAPI

Operations 5

GET /api/organizations/{organization_id}/promos List All Promo Orders #
POST /api/organizations/{organization_id}/promos Create a New Promo Order #
GET /api/organizations/{organization_id}/promos/{id} Show a Promo Order #
PUT /api/organizations/{organization_id}/promos/{id} Update a Promo Order #
DELETE /api/organizations/{organization_id}/promos/{id} Delete a Promo Order #

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/megaphone:megaphone-promo-orders-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

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

megaphone-promo-orders-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Megaphone Promo Orders API
  version: 1.0.0
  description: 'The Megaphone API (https://cms.megaphone.fm/api) allows podcast producers and partners to view, create, update, and delete podcasts and episodes. Note that the Megaphone API is rate limited at 60 requests per minute (1 request per second). ## Direct Sales API Breaking Change Notice


    ⚠️ **IMPORTANT** ⚠️


    The legacy Direct Sales endpoints for Advertisers, Campaigns, Orders, Advertisements and Geos are being replaced with new v2 endpoints with enhanced functionality. ### Timeline


    **Phase 1: Before April 15, 2026**


    - Only legacy endpoints are available


    - Continue using existing Direct Sales API endpoints


    **Phase 2: April 15, 2026 10:00:00 AM EST - July 14, 2026 11:59:59 UTC (Migration Period)**


    - **v2 endpoints become available**


    - Legacy endpoints continue to work during this period


    - Both legacy and v2 endpoints are operational


    - **We strongly encourage you to start testing and migrating to v2 endpoints as soon as they become available to ensure a smooth transition before the sunset date and to continue ad delivery without disruption.**


    **Phase 3: After July 14, 2026 11:59:59 UTC**


    - Legacy endpoints are **removed and will stop working**


    - Only v2 endpoints will be supported


    - [Old] Standard campaigns can use v2 GET endpoints


    ### What''s Changing


    **API Version:** v2 REST API for managing advertisers, campaigns, orders, assets, advertisements, and targeting. **Effective Date:** New endpoints (v2) will be effective on **April 15, 2026 10:00:00 AM EST**


    **Sunset Date:** Legacy endpoints stop for [Old] Standard on **July 14, 2026 11:59:59 UTC**


    ##### Capability Matrix


    API endpoint availability by resource, campaign type, and version


    | Resource | Campaign Type | GET (v2) | POST / PATCH (v2) | DELETE (v2) | Legacy POST / PUT / GET / DELETE |

    | ------------------ | ------------------- | :------: | :---------------: | :---------: | :------------------------------: |

    | Advertisers | N/A | ✅ | ✅ | ✅ | ✅ |

    | Campaigns | Standard / Priority | ✅ | ✅ (Archive)† | ❌ | ❌ |

    | Campaigns | [Old] Standard* | ✅ | ❌ | ❌ | ✅ |

    | Orders | Standard / Priority | ✅ | ✅ (Archive)† | ❌ | ❌ |

    | Orders | [Old] Standard | ✅ | ❌ | ❌ | ✅ |

    | Advertisements | Standard / Priority | ✅ | ✅ (Archive)† | ❌ | ❌ |

    | Advertisements | [Old] Standard | ✅ | ❌ | ❌ | ✅ |

    | Assets** | Standard / Priority | ✅ | ✅ | ❌ | ❌ |

    | Geo Targeting*** | Standard / Priority | ✅ | N/A | N/A | ❌ |

    | Episode Topics | Standard / Priority | ✅ | N/A | N/A | ❌ |

    | Audience Interests | Standard / Priority | ✅ | N/A | N/A | ❌ |


    *"[Old] Standard" refers to campaigns that will end after the sunset date


    **Assets to be used for Standard/Priority campaigns


    ***Geo Targeting includes Countries, Regions, DMAs, Cities, and Postal Codes lookup endpoints. Not applicable to [Old] Standard campaigns. [Old] Standard campaign orders can continue to use the legacy geo endpoints below. †v2 uses PATCH with `status: "archived"` instead of DELETE for Campaigns, Orders, and Advertisements. See migration guide for details.'
  contact:
    name: Megaphone Support
    url: https://support.megaphone.fm/
servers:
- url: https://cms.megaphone.fm
  description: Production
security:
- ApiToken: []
tags:
- name: Promo Orders
paths:
  /api/organizations/{organization_id}/promos:
    get:
      tags:
      - Promo Orders
      summary: List All Promo Orders
      description: Returns metadata about all the promo orders you are authorized to access in the Megaphone platform.
      operationId: listAllPromoOrders
      parameters:
      - name: organization_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: ID of the Organization in the form of a UUID
        example: 731851fc-9fad-11e6-a338-072240a555ac
      - name: updated_since
        in: query
        required: false
        schema:
          type: string
        description: 'Optional query param that will scope the response to only podcasts that have

          been updated since the Date and Time that is provided.

          '
        example: 2019-11-22T19:44:09+0000
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                    createdAt:
                      type: string
                      format: date-time
                    updatedAt:
                      type: string
                      format: date-time
                    title: {}
                    region:
                      type: string
                    scheduledAt:
                      type: string
                      format: date-time
                    impressionsCap:
                      type: integer
                    organizationId:
                      type: string
                      format: uuid
                    startAt: {}
                    endAt: {}
                    adhash: {}
                    priority:
                      type: integer
                    position:
                      type: integer
                    impressionsGoal: {}
                    revenueCents: {}
                    revenueCurrency:
                      type: string
                    notes: {}
                    flightTimezone: {}
                    geotargets:
                      type: array
                      items:
                        type: string
                    geoexclusions:
                      type: array
                      items: {}
                    geonameIdInclusions:
                      type: array
                      items:
                        type: string
                    geonameIdExclusions:
                      type: array
                      items: {}
                    state:
                      type: string
                    audioStatus:
                      type: string
                    copyNeeded:
                      type: boolean
                    promoCode: {}
                    vanityUrl: {}
                    targets:
                      type: array
                      items:
                        type: object
                        properties:
                          type:
                            type: string
                          id:
                            type: string
                            format: uuid
                    promo:
                      type: boolean
              example:
              - id: ee2d5bb6-a526-11e6-9164-e3c1235770c1
                createdAt: '2016-11-07T20:15:30.465Z'
                updatedAt: '2016-11-07T20:15:30.465Z'
                title: null
                region: all
                scheduledAt: '2016-11-07T20:15:30.466Z'
                impressionsCap: 0
                organizationId: 731851fc-9fad-11e6-a338-072240a555ac
                startAt: null
                endAt: null
                adhash: null
                priority: 1
                position: 1
                impressionsGoal: null
                revenueCents: null
                revenueCurrency: USD
                notes: null
                flightTimezone: null
                geotargets:
                - US
                geoexclusions: []
                geonameIdInclusions:
                - '6252001'
                geonameIdExclusions: []
                state: enabled
                audioStatus: needs_audio
                copyNeeded: true
                promoCode: null
                vanityUrl: null
                targets:
                - type: episode
                  id: 3fe4881a-a2d1-11e6-8e62-8b11e4f93efb
                promo: true
              - id: e489be38-a526-11e6-9164-772d8df78c4a
                createdAt: '2016-11-07T20:15:14.293Z'
                updatedAt: '2016-11-07T20:15:14.293Z'
                title: null
                region: all
                scheduledAt: '2016-11-07T20:15:14.294Z'
                impressionsCap: 0
                organizationId: 731851fc-9fad-11e6-a338-072240a555ac
                startAt: null
                endAt: null
                adhash: null
                priority: 1
                position: 1
                impressionsGoal: null
                revenueCents: null
                revenueCurrency: USD
                notes: null
                flightTimezone: null
                geotargets:
                - US
                geoexclusions: []
                geonameIdInclusions:
                - '6252001'
                geonameIdExclusions: []
                state: enabled
                audioStatus: needs_audio
                copyNeeded: true
                promoCode: null
                vanityUrl: null
                targets:
                - type: episode
                  id: 3fe4881a-a2d1-11e6-8e62-8b11e4f93efb
                promo: true
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '429':
          $ref: '#/components/responses/429'
        '404':
          $ref: '#/components/responses/404'
    post:
      tags:
      - Promo Orders
      summary: Create a New Promo Order
      description: Create a new promo order by passing in required fields of information into the request body.
      operationId: createANewPromoOrder
      parameters:
      - name: organization_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: ID of the Organization in the form of a UUID
        example: 731851fc-9fad-11e6-a338-072240a555ac
      - name: updated_since
        in: query
        required: false
        schema:
          type: string
        description: 'Optional query param that will scope the response to only podcasts that have

          been updated since the Date and Time that is provided.

          '
        example: 2019-11-22T19:44:09+0000
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                  createdAt:
                    type: string
                    format: date-time
                  updatedAt:
                    type: string
                    format: date-time
                  title:
                    type: string
                  region:
                    type: string
                  scheduledAt:
                    type: string
                    format: date-time
                  impressionsCap:
                    type: integer
                  organizationId:
                    type: string
                    format: uuid
                  startAt:
                    type: string
                    format: date-time
                  endAt:
                    type: string
                    format: date-time
                  adhash:
                    type: string
                  priority:
                    type: integer
                  position:
                    type: integer
                  impressionsGoal: {}
                  revenueCents: {}
                  revenueCurrency:
                    type: string
                  notes: {}
                  flightTimezone: {}
                  geotargets:
                    type: array
                    items:
                      type: string
                  geoexclusions:
                    type: array
                    items: {}
                  geonameIdInclusions:
                    type: array
                    items:
                      type: string
                  geonameIdExclusions:
                    type: array
                    items: {}
                  state:
                    type: string
                  audioStatus:
                    type: string
                  copyNeeded:
                    type: boolean
                  promoCode: {}
                  vanityUrl: {}
                  targets:
                    type: array
                    items:
                      type: object
                      properties:
                        type:
                          type: string
                        id:
                          type: string
                          format: uuid
                  promo:
                    type: boolean
              example:
                id: bdcad5bc-a6b5-11e6-b1f6-5b0e62100551
                createdAt: '2016-11-09T19:50:18.484Z'
                updatedAt: '2016-11-09T19:50:18.484Z'
                title: New promo title
                region: all
                scheduledAt: '2016-11-09T19:50:18.484Z'
                impressionsCap: 0
                organizationId: 731851fc-9fad-11e6-a338-072240a555ac
                startAt: '2016-11-07T20:15:14.293Z'
                endAt: '2016-12-07T20:15:14.293Z'
                adhash: '00122'
                priority: 1
                position: 1
                impressionsGoal: null
                revenueCents: null
                revenueCurrency: USD
                notes: null
                flightTimezone: null
                geotargets:
                - US
                geoexclusions: []
                geonameIdInclusions:
                - '6252001'
                geonameIdExclusions: []
                state: enabled
                audioStatus: needs_audio
                copyNeeded: true
                promoCode: null
                vanityUrl: null
                targets:
                - type: episode
                  id: 3fe4881a-a2d1-11e6-8e62-8b11e4f93efb
                - type: podcast
                  id: 3ec8458e-a2d1-11e6-8e62-236c02acd07b
                promo: true
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '429':
          $ref: '#/components/responses/429'
        '422':
          $ref: '#/components/responses/422'
  /api/organizations/{organization_id}/promos/{id}:
    get:
      tags:
      - Promo Orders
      summary: Show a Promo Order
      description: Get metadata about a single promo order.
      operationId: showAPromoOrder
      parameters:
      - name: organization_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: ID of the Organization in the form of a UUID
        example: 731851fc-9fad-11e6-a338-072240a555ac
      - name: id
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: ID of the Promo in the form of the a UUID
        example: bdcad5bc-a6b5-11e6-b1f6-5b0e62100551
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                  createdAt:
                    type: string
                    format: date-time
                  updatedAt:
                    type: string
                    format: date-time
                  title:
                    type: string
                  region:
                    type: string
                  scheduledAt:
                    type: string
                    format: date-time
                  impressionsCap:
                    type: integer
                  organizationId:
                    type: string
                    format: uuid
                  startAt:
                    type: string
                    format: date-time
                  endAt:
                    type: string
                    format: date-time
                  adhash:
                    type: string
                  priority:
                    type: integer
                  position:
                    type: integer
                  impressionsGoal: {}
                  revenueCents: {}
                  revenueCurrency:
                    type: string
                  notes: {}
                  flightTimezone: {}
                  geotargets:
                    type: array
                    items:
                      type: string
                  geoexclusions:
                    type: array
                    items: {}
                  geonameIdInclusions:
                    type: array
                    items:
                      type: string
                  geonameIdExclusions:
                    type: array
                    items: {}
                  state:
                    type: string
                  audioStatus:
                    type: string
                  copyNeeded:
                    type: boolean
                  promoCode: {}
                  vanityUrl: {}
                  targets:
                    type: array
                    items:
                      type: object
                      properties:
                        type:
                          type: string
                        id:
                          type: string
                          format: uuid
                  promo:
                    type: boolean
              example:
                id: bdcad5bc-a6b5-11e6-b1f6-5b0e62100551
                createdAt: '2016-11-09T19:50:18.484Z'
                updatedAt: '2016-11-09T19:50:18.484Z'
                title: New promo title
                region: all
                scheduledAt: '2016-11-09T19:50:18.484Z'
                impressionsCap: 0
                organizationId: 731851fc-9fad-11e6-a338-072240a555ac
                startAt: '2016-11-07T20:15:14.293Z'
                endAt: '2016-12-07T20:15:14.293Z'
                adhash: '00122'
                priority: 1
                position: 1
                impressionsGoal: null
                revenueCents: null
                revenueCurrency: USD
                notes: null
                flightTimezone: null
                geotargets:
                - US
                geoexclusions: []
                geonameIdInclusions:
                - '6252001'
                geonameIdExclusions: []
                state: enabled
                audioStatus: needs_audio
                copyNeeded: true
                promoCode: null
                vanityUrl: null
                targets:
                - type: episode
                  id: 3fe4881a-a2d1-11e6-8e62-8b11e4f93efb
                - type: podcast
                  id: 3ec8458e-a2d1-11e6-8e62-236c02acd07b
                promo: true
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '429':
          $ref: '#/components/responses/429'
        '404':
          $ref: '#/components/responses/404'
    put:
      tags:
      - Promo Orders
      summary: Update a Promo Order
      description: Update an existing promo order by sending the attributes that you wish to update in the request body.
      operationId: updateAPromoOrder
      parameters:
      - name: organization_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: ID of the Organization in the form of a UUID
        example: 731851fc-9fad-11e6-a338-072240a555ac
      - name: id
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: ID of the Promo in the form of the a UUID
        example: bdcad5bc-a6b5-11e6-b1f6-5b0e62100551
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                title:
                  type: string
                adhash:
                  type: string
            example:
              title: Updated title
              adhash: '01112'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                  createdAt:
                    type: string
                    format: date-time
                  updatedAt:
                    type: string
                    format: date-time
                  title:
                    type: string
                  region:
                    type: string
                  scheduledAt:
                    type: string
                    format: date-time
                  impressionsCap:
                    type: integer
                  organizationId:
                    type: string
                    format: uuid
                  startAt:
                    type: string
                    format: date-time
                  endAt:
                    type: string
                    format: date-time
                  adhash:
                    type: string
                  priority:
                    type: integer
                  position:
                    type: integer
                  impressionsGoal: {}
                  revenueCents: {}
                  revenueCurrency:
                    type: string
                  notes: {}
                  flightTimezone: {}
                  geotargets:
                    type: array
                    items:
                      type: string
                  geoexclusions:
                    type: array
                    items: {}
                  geonameIdInclusions:
                    type: array
                    items:
                      type: string
                  geonameIdExclusions:
                    type: array
                    items: {}
                  state:
                    type: string
                  audioStatus:
                    type: string
                  copyNeeded:
                    type: boolean
                  promoCode: {}
                  vanityUrl: {}
                  targets:
                    type: array
                    items:
                      type: object
                      properties:
                        type:
                          type: string
                        id:
                          type: string
                          format: uuid
                  promo:
                    type: boolean
              example:
                id: bdcad5bc-a6b5-11e6-b1f6-5b0e62100551
                createdAt: '2016-11-09T19:50:18.484Z'
                updatedAt: '2016-11-09T19:54:11.911Z'
                title: Updated title
                region: all
                scheduledAt: '2016-11-09T19:50:18.484Z'
                impressionsCap: 0
                organizationId: 731851fc-9fad-11e6-a338-072240a555ac
                startAt: '2016-11-07T20:15:14.293Z'
                endAt: '2016-12-07T20:15:14.293Z'
                adhash: '01112'
                priority: 1
                position: 1
                impressionsGoal: null
                revenueCents: null
                revenueCurrency: USD
                notes: null
                flightTimezone: null
                geotargets:
                - US
                geoexclusions: []
                geonameIdInclusions:
                - '6252001'
                geonameIdExclusions: []
                state: enabled
                audioStatus: needs_audio
                copyNeeded: true
                promoCode: null
                vanityUrl: null
                targets:
                - type: episode
                  id: 3fe4881a-a2d1-11e6-8e62-8b11e4f93efb
                - type: podcast
                  id: 3ec8458e-a2d1-11e6-8e62-236c02acd07b
                promo: true
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '429':
          $ref: '#/components/responses/429'
        '422':
          $ref: '#/components/responses/422'
        '404':
          $ref: '#/components/responses/404'
    delete:
      tags:
      - Promo Orders
      summary: Delete a Promo Order
      description: Remove a promo order from the Megaphone platform.
      operationId: deleteAPromoOrder
      parameters:
      - name: organization_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: ID of the Organization in the form of a UUID
        example: 731851fc-9fad-11e6-a338-072240a555ac
      - name: id
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: ID of the Promo in the form of the a UUID
        example: bdcad5bc-a6b5-11e6-b1f6-5b0e62100551
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: string
              example:
                success: Promo with id bdcad5bc-a6b5-11e6-b1f6-5b0e62100551 successfully destroyed
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '429':
          $ref: '#/components/responses/429'
        '422':
          $ref: '#/components/responses/422'
        '404':
          $ref: '#/components/responses/404'
components:
  responses:
    '422':
      description: Validation failed. The request body contains invalid or missing fields.
      content:
        application/json:
          schema:
            type: object
            properties:
              errors:
                type: object
                additionalProperties:
                  type: array
                  items:
                    type: string
                example:
                  title:
                  - can't be blank
    '404':
      description: The requested resource was not found.
      content:
        application/json:
          schema:
            type: object
            properties:
              errors:
                type: array
                items:
                  type: string
                example:
                - Not found
    '401':
      description: Authentication failed. The `Authorization` header is missing or the token is invalid.
      content:
        application/json:
          schema:
            type: object
            properties:
              errors:
                type: array
                items:
                  type: string
                example:
                - Access denied
    '429':
      description: Rate limit exceeded. The API is limited to 60 requests per minute.
      content:
        application/json:
          schema:
            type: object
            properties:
              errors:
                type: array
                items:
                  type: string
                example:
                - Rate limit exceeded
    '403':
      description: The token's organization does not have API access, or the user lacks permission for this resource.
      content:
        application/json:
          schema:
            type: object
            properties:
              errors:
                type: array
                items:
                  type: string
                example:
                - Forbidden
  securitySchemes:
    ApiToken:
      type: apiKey
      in: header
      name: Authorization
      description: A Megaphone API token, sent as `Token token="<your-token>"`.
    ServiceAuthJwt:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Spotify service-auth JWT. Internal callers only.