Outbrain Amplify API

The complete Outbrain Amplify API surface — 77 operations across marketers, budgets, campaigns, promoted links and promoted-link sequences, audience segments, conversion events, user and invitation management, geo / interest / IAB-category targeting, section and currency metadata, and 23 performance-reporting projections. Transcribed faithfully from Outbrain's own Apiary blueprint, which Outbrain last updated 2026-08-13.

OpenAPI Specification

outbrain-amplify-api-full-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Outbrain Amplify API
  version: '0.1'
  description: "This API describes the interfaces for interacting with the Outbrain Amplify product. More information about\
    \ Amplify can be found on our website: http://www.outbrain.com/amplify.\n\nAt this time we are working with a select number\
    \ of partners to integrate the Amplify API. To be considered for the Amplify API private beta please register for the\
    \ beta plan.\n\nIf you have any questions, issues, feature requests as well as if you're interested in announcments of\
    \ new features, please join our Google group:\n\nhttps://groups.google.com/forum/#!forum/outbrain-amplifyapi\n\nAPI Url\n\
    The base url for all API end-points is https://api.outbrain.com/amplify/v0.1/\n\nTroubleshooting\nIf you're experiencing\
    \ any issues or any other difficulties, please post a new topic in our Google group: https://groups.google.com/forum/#!forum/outbrain-amplifyapi\n\
    \nPlease attach to your post the AMPLIFY-REQUEST-ID header from the returned response.\nThis header allows us to identify\
    \ your unique request and helps us to reply quicker and more efficiently.\n\nUpdates\nAug 13, 2026\nNew: Brand Logo\n\n\
    You can now read and set a brand logo via the API. A new logoMetadata field has been added to the Marketer entity, and\
    \ to the PromotedLink entity (available via extraFields=LogoMetaData) so an individual ad can carry its own logo.\n\n\
    Feb 1, 2026\nNew: Section Volume Control for CBS Campaigns\n\nYou can now provide feedback on individual section performance\
    \ for your CBS Auto mode campaigns (tROAS, tCPA, Max Conversion). This allows you to increase or decrease traffic volume\
    \ from specific sections based on your own external data, such as LTV or ROAS. A new volumeControl object has been added\
    \ to the Campaign entity to manage these adjustments.\n\nJan 4, 2026\nEnhanced Publisher and Section Exclusion Experience\n\
    \nWe are introducing a new publisher and section exclusion experience that allows advertisers to apply temporary or permanent\
    \ blocks, either individually or in bulk. This update provides clearer visibility, predictable behavior, and the ability\
    \ to easily undo or adjust exclusions via the API.\n\nWhy This Matters\nPublisher traffic can spike temporarily due to\
    \ breaking news or viral events, attracting audiences that may not align with advertiser intent. During these periods,\
    \ campaigns often generate clicks with few conversions, inflating costs.\n\nTemporary exclusions allow you to pause this\
    \ inventory while the news cycle is active. The system then automatically reintroduces the inventory once traffic normalizes—avoiding\
    \ the need for unnecessary permanent blocks.\n\nTechnical Implementation: New expiration Field under blockedSites\nTo\
    \ enable temporary blocking, we have added a new optional field named expiration to both the blockedPublishers and blockedSections\
    \ objects under blockedSites.\n\nKey Functionalities\n\n- \nAuto-Expiration: Temporary exclusions automatically expire\
    \ and reintroduce inventory without alerts.\n\n- \nRe-activation: You can now update settings for sections that were previously\
    \ Permanently blocked, overriding the original exclusion state.\n\n- \nInheritance: Duplicated campaigns will inherit\
    \ the existing exclusion states (Temporary or Permanent) of the original campaign.\n\nImportant Notes\n\n- \nReporting:\
    \ History changes will now track the distinction between permanent and temporary exclusions.\n\n- \nCSV Limitation: Exclusions\
    \ uploaded via CSV files remain Permanent by default at this time (the expiration field is not yet supported in CSV uploads).\n\
    \nAction Required\nReview your current blocking logic. If you wish to utilize temporary blocking for viral events, update\
    \ your integration to populate the expiration field in your blockedPublishers and blockedSections payloads.\n\nOct 16,\
    \ 2025\nUpcoming Change to Minimum Campaign Budget Effective November 3rd 2025\n\nTo help increase campaign performance\
    \ and ensure new campaigns can generate results in a timely fashion, we are adjusting the minimum required budget. This\
    \ change will ensure campaigns have sufficient daily spend for our optimization systems to function effectively\n\nSummary\
    \ of the Change\n\n- \nWhat: The minimum daily budget for a new campaign will be increased from $20.00 to $25.00 USD.\n\
    \n- \nEffective Date: This change will take effect on November 3rd 2025\n\n- \nScope: This change applies only to newly\
    \ created campaigns. Existing campaigns with budgets under $25.00 will continue to run without any interruption or required\
    \ changes.\n\nHow This Affects You\nStarting November 3rd, 2025, any API call to the POST /budgets endpoint will enforce\
    \ the following rules:\n\n- \nIf type = \"DAILY\", then amount must be greater than or equal to 25.\n\n- \nIf type = \"\
    MONTHLY\", then amount must be greater than or equal to 750.\n\n- \nIf type = \"CAMPAIGN\", then amount must be greater\
    \ than or equal to 25 x number of campaign days.\n\nAdditionally:\n\n- Any API call to the PUT /budgets endpoint to update\
    \ campaigns created after November 3rd, 2025, will have the same enforcement rules outlined above.\n\nImportant Note:\n\
    Daily limits for other currencies are exposed via the GET /currencies endpoint.\n\nAction Required\nPlease review your\
    \ budget and campaign creation and update logic and ensure that any new campaigns are created with a daily budget of at\
    \ least $25.00. We recommend making this update in your integration before the effective date to ensure a smooth transition.\n\
    \nJul 8, 2025\nNew Performance Report Endpoint - Marketers Report\n\nYou can now retrieve performance reporting aggregated\
    \ by Marketers aggregation,  using your primary account ID.\n\nTo obtain your primary account ID, use the Marketer Entity\
    \ with the extraFields=Account param.\n\nDec 22, 2024\nNew Filter Added to reporting endpoints: enabledCampaignsOnly\n\
    \nYou can now filter data to include only active campaigns by using the enabledCampaignsOnly field when using our reporting\
    \ endpoints (promoted content, Periodic, publishers, sections etc).\n\n- \nCurrent Default Value: false\n\n- \nFuture\
    \ Default Value: true (effective end of January 2025)\n\nPlease note that while the current default value for en"
  contact:
    name: Outbrain Developer Center
    url: https://developer.outbrain.com
servers:
- url: https://api.outbrain.com/amplify/v0.1
  description: Production Server
tags:
- name: Authentications
  description: 'Token

    Obtaining a token should be your 1st step toward using Amplify API. You need to include it in all further requests using
    the HTTP Header OB-TOKEN-V1.

    In order to protect your privacy, the tokens are valid for a period of 30 days. You will not be able to access Amplify
    API using an expired token.

    You can generate as many tokens as you wish. Generating a new token does not invalidate older tokens.

    When a user password or email are changed in the Create Token Page all tokens

    generated prior to the change are revoked and a new token must be generated.


    How to obtain a token ?

    There are 2 ways to obtain a token


    via web interface

    Simply go to your Amplify API Token Page, fill in your password, hit generate, and you will get your token.

    If you can''t see Amplify API Token form, this means that your username doesn''t have access to the Amplify API. To register
    for the Amplify API please fil'
- name: Users
  description: 'User represents a single person''s access to Outbrain services and to the site my.outbrain.com.

    A User is permitted to one or more Marketer accounts, each marketer with a role that specifies the user permissions.'
- name: Marketers
  description: 'Marketers are representatives of Teads customers. A single Marketer object may control campaigns for more
    than one end-buyer.


    Marketers cannot be created via the API and must be created via the site or by an Outbrain Account Manager.'
- name: Multiple Conversions
  description: 'Multiple Conversions gives the ability to track any of the actions a user takes after clicking through to
    your content.

    You can track everything from top of funnel (page landings and time on site) to bottom of funnel (e-book downloads and
    product purchases).


    Please note: This new feature requires the installation of the new multiple conversion pixel which can be retrieved from
    your account on Outbrain.com.  If you have the old conversion pixel placed you will need to remove that before installing
    the Multiple Conversion Pixel.  If both pixels are installed there will be overcounting of data and results will be inaccurate.'
- name: Budgets
  description: 'Budget objects represent an amount of money to be spent via the Amplify platform. A single Budget may be shared
    among Campaigns (also known as a "shared budget"), though it is more common to have just one Campaign per Budget.


    For convenience, Budget objects are often embedded inside the Campaign objects.'
- name: Geo Locations
  description: 'GeoLocations are representatives of Outbrain Geographic Locations.

    GeoLocations are being used for campaigns to be targeted (or excluded) by geography.


    The GeoLocation object has the following attributes:


    Property

    Type

    Semantic

    Example


    id

    String

    geoLocation id

    aa4ab4c893b9fb5618476cb27f264ef8


    geoType

    Geo Location Type

    geoLocation type

    Region


    name

    String

    geoLocation name

    Prince Edward Island


    canonicalName

    String

    detailed name

    Prince Edward Island, Canada


    parent

    GeoLocation

    The parent of the geoLocation if exists (always a country)

    A GeoLocation object'
- name: Interest Targeting
  description: 'Interest Targeting gives you the abillity to select your preferred interests categories in your campaign setup.

    Then, using our powerful interest insights and predictive technology, we’ll match you with audiences we know are interested
    in your desired categories and will surface your content to the people who are most likely to take action.


    The Interest Targeting object has the following attributes:


    Property

    Type

    Semantic

    Example


    id

    String

    interest id

    00b56c21f2ca684e42908474d4bbfe9bf0


    name

    String

    interest name

    Animals


    canBeTargeted

    Boolean

    determines whether this interest can be targeted or not (some interests exist just to provide the context / hirarchy of
    other interests from the same concept)

    true


    reachEstimationCount

    Number

    The estimated daily impressions within this interest for the last 7 days

    4173698


    subConcepts

    Array of Interest Targeting

    Will appear if the interest has m'
- name: IAB category Targeting
  description: 'IAB category Targeting gives you the abillity to select your preferred IAB categories in your campaign setup.

    The IAB category Targeting object has the following attributes:


    Property

    Type

    Semantic

    Example


    categoryId

    String

    IAB category id

    IAB1-1


    categoryName

    String

    IAB category name

    Books & Literature


    parentId

    String

    Parent IAB Category (if exists)

    IAB1


    pageViews

    Number

    The number of page views for this category

    55115277


    children

    Array of IAB category

    Will appear if this category has more specific sub categories'
- name: Campaigns
  description: 'Campaigns contain many PromotedLinks and define Budget, targeting, cpc, etc. Campaign settings apply to the
    PromotedLinks contained in a specific Campaign.


    The Campaign object has the following attributes:


    Property

    Type

    Semantic

    Example


    id

    String

    campaign id.

    "00f4b02153ee75f3c9dc4fc128ab041962"


    name

    String

    campaign name.

    "My Campaign"


    marketerId

    String

    marketer id.

    "00f4b02153ee75f3c9dc4fc128ab041963"


    enabled

    Boolean

    is campaign enabled.

    true


    cpc

    Money

    cost per click.

    0.58


    minimumCpc

    Money

    the minimal possible cost per click. read-only

    0.2


    currency

    String

    The currency of the Budget amount. read-only

    "USD"


    autoArchived

    Boolean

    Indicates whether this Campaign is archived.

    true


    targeting

    Targeting Object

    See Targeting object.


    feeds

    Array of RSS feeds

    Each feed contains the URL of the rss feed.


    autoExpirationOfPromotedLinks

    Numeric

    A number specifying within how many days Promo'
- name: Segments
  description: 'Segments give the ability to segment customers based on their actions, and retarget them with new or existing
    campaigns. This translates into your campaigns reaching a highly engaged audience that is more likely to convert and fulfill
    your brand''s goals. With this functionality you''ll be able to segment customers in two ways: Audience Retargeting (Type:
    PIXEL) and Story Sequencing (Type: CLICKERS).


    Please note: The PIXEL feature requires the installation of the Outbrain Custom Audience pixel, which can be retrieved
    from your account on Outbrain.com.  If you have the old audience pixel installed, you will need to remove that before
    installing the new pixel.  For additional information regarding obtaining and installing the pixel properly, please visit
    our help center here: http://help.outbrain.com/customer/en/portal/articles/2809479-how-can-i-create-custom-audiences'
- name: Sections
  description: A Section is a specific content within the publisher's site such as sports, business etc.
- name: PromotedLinks
  description: A PromotedLink is the entity that describes a single piece of promoted content. As of April 12, 2021 each campaign
    is limited to 30,000 PromotedLinks.
- name: PromotedLinksSequences
  description: "Sequences comes in 2 formats:\n\n- \nCarousel - multi-promotedLink format that features CTA buttons, brand\
    \ logo, and more. You can use Carousel to tell your brand story, showcase multiple products, and build a sequential message\
    \ — with up to 10 images for consumers to swipe through.\n\n- In order to create sequences of this type your campaign’s\
    \ creative format must be Carousel (see Campaign creative format)\n- A carousel must have at least 3 promoted links and\
    \ up to 10 promoted links in it\n- A campaign can have only 1 carousel\n- Promoted links can’t be duplicated in the same\
    \ carousel\n- All promoted links must be in the same language\n- App rating us supported only for sequences of type AppInstall\n\
    \n- \nApp Install - gives you the ability to present your promoted link with logo, sponsor, app rating and direct redirect\
    \ to google/apple store to download and install the app.\n\n- In order to create seq"
- name: Performance Reporting
  description: 'There are a multitude of reporting endpoints that allow you to retrieve metrics at various levels of granularity.


    Note: All performance reports have a 10-30 minutes delay, therefore performance metrics that include the current day are
    partial.


    Rate Limits

    Each marketer is limited to 30 requests per minute for the entire performance reporting API. In case of rate limit violation
    the response status will be 429 (Too Many Requests).


    As of April 12, 2021 performance reporting is limited to a history of 3 years per data request.


    Response structure

    All reporting endpoints share a common response structure, defined below:


    Property

    Type

    Semantic

    Comments


    results

    Array

    Metadata and Metrics of the entities returned.

    Metadata is an object containing contextual properties of the report entity. The set of properties is specific for each
    end-point.


    totalResults

    Number

    Count of the total results'
- name: Currencies
  description: Metadata about the available currencies
- name: Meta Data
  description: The Meta Data section represents the various values (Enumarations) that can be provided as part of the different
    API end-points
security:
- OBTokenAuth: []
paths:
  /login:
    get:
      operationId: getLogin
      summary: via API
      description: 'Yes, you can obtain a new token using the Amplify API. Why? API is all about automation, so why not obtain
        a new token using the API before your token expires?


        This API transaction is the only one in which you need to supply your Outbrain credentials.


        Your credentials should be sent using Basic Authentication.


        This means that the HTTP Request should include a header:


        named Authorization

        value: BASIC BASE-64-ENC(YOUR_OUTBRAIN_USER_NAME:YOUR_OUTBRAIN_PASSWORD)


        Since all communication to Amplify API are HTTPS, your credentials are safe.


        You can try it using curl command (add -v to actually see the Authorization  HTTP header:


        curl -u YOUR_OUTBRAIN_USER_NAME:YOUR_OUTBRAIN_PASSWORD https://api.outbrain.com/amplify/v0.1/login


        Transport Layer Security version 1.2 (TLS 1.2) is mandatory for communication with Amplify API.

        You will need to verify that your environment supports TLS 1.2, and if necessary make appropriate updates.


        Please note that older versions of curl do not support TLS 1.2 and need to be upgraded.'
      tags:
      - Authentications
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
              example:
                OB-TOKEN-V1: IF_YOU_GOT_THIS_TOKEN_IT_MEANS_THAT_YOU_ARE_USING_OUR_MOCK_SERVER__USE_OUTBRAIN_PRODUCTION_SERVER_TO_GET_A_LIVE_TOKEN
        '400':
          description: Bad Request - the request could not be understood or was missing required parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized - authentication failed or the user lacks permission for the requested operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden - access denied
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found - resource was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Too Many Requests - request exceeded rate limits; see the rate-limit-msec-left header
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /marketers/{marketerId}/users:
    get:
      operationId: getMarketersMarketerIdUsers
      summary: Getting all users permitted to a marketer
      description: 'The response contains an array of a user object that has the following attributes:


        Property

        Type

        Semantic

        Example


        name

        String

        The User''s name

        "full name"


        email

        String

        The User''s email

        "a@b.ocm"


        creationTime

        Time

        The time when the user was assigned to the marketer

        "2013-01-14 07:19:16"


        status

        String

        The User''s status - ACTIVE, PENDING, DISABLED

        "ACTIVE"


        invitationId

        String

        The invitation ID of the user in case the user has a pending invitation


        fullName

        String

        The user''s full name


        role

        User Role

        The user''s role

        "ACCOUNT_MANAGER"'
      tags:
      - Users
      parameters:
      - name: marketerId
        in: path
        required: true
        schema:
          type: string
        description: the Marketer's id
        example: 00f4b02153ee75f3c9dc4fc128ab041962
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
              example:
                users:
                - name: somename1
                  email: user1@domain.com
                  creationTime: '2022-09-20 20:12:23'
                  status: ACTIVE
                  fullName: some name1
                  role: ACCOUNT_MANAGER
                - name: somename2
                  email: user2@domain.com
                  creationTime: '2022-09-20 20:12:23'
                  status: PENDING
                  invitationId: 00f4b02153ee75f3c9dc4fc128ab041962
                  role: ACCOUNT_MANAGER
          headers:
            AMPLIFY-REQUEST-ID:
              description: Request correlation / rate-limit signal
              schema:
                type: string
        '400':
          description: Bad Request - the request could not be understood or was missing required parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized - authentication failed or the user lacks permission for the requested operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden - access denied
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found - resource was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Too Many Requests - request exceeded rate limits; see the rate-limit-msec-left header
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    put:
      operationId: updateMarketersMarketerIdUsers
      summary: Update marketer's users
      description: Update marketer's users allows disabling/enabling a user and updating their role
      tags:
      - Users
      parameters:
      - name: marketerId
        in: path
        required: true
        schema:
          type: string
        description: the Marketer's id
        example: 00f4b02153ee75f3c9dc4fc128ab041962
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
            example:
            - userEmail: a@mydomain.com
              enabled: true
              role: VIEWER
            - userEmail: b@mydomain.com
              enabled: true
              role: CAMPAIGN_MANAGER
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
              example:
                users:
                - name: somename1
                  email: a@domain.com
                  creationTime: '2022-09-20 20:12:23'
                  status: DISABLED
                  fullName: some name1
                  role: ACCOUNT_MANAGER
                - name: somename2
                  email: b@domain.com
                  creationTime: '2022-09-20 20:12:23'
                  status: ENABLED
                  invitationId: 00f4b02153ee75f3c9dc4fc128ab041962
                  role: VIEWER
          headers:
            AMPLIFY-REQUEST-ID:
              description: Request correlation / rate-limit signal
              schema:
                type: string
        '400':
          description: Bad Request - the request could not be understood or was missing required parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized - authentication failed or the user lacks permission for the requested operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden - access denied
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found - resource was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Too Many Requests - request exceeded rate limits; see the rate-limit-msec-left header
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    delete:
      operationId: deleteMarketersMarketerIdUsers
      summary: Remove a user from a marketer
      description: This endpoint allows revoking a permission for a user to access a marketer.
      tags:
      - Users
      parameters:
      - name: marketerId
        in: path
        required: true
        schema:
          type: string
        description: the Marketer's id
        example: 00f4b02153ee75f3c9dc4fc128ab041962
      - name: email
        in: query
        required: false
        schema:
          type: string
      responses:
        '200':
          description: Successful response
          headers:
            AMPLIFY-REQUEST-ID:
              description: Request correlation / rate-limit signal
              schema:
                type: string
        '400':
          description: Bad Request - the request could not be understood or was missing required parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized - authentication failed or the user lacks permission for the requested operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden - access denied
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found - resource was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Too Many Requests - request exceeded rate limits; see the rate-limit-msec-left header
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /invitations/multiple:
    post:
      operationId: createInvitationsMultiple
      summary: Providing access for new users to a marketer
      tags:
      - Users
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
            example:
            - marketerId: 007514a95316bh6fe7ejc0cad101c23343
              invitedEmail: a@mydomain.com
              role: ADMIN
            - marketerId: 007514a95316bh6fe7ejc0cad101c23343
              invitedEmail: b@mydomain.com
              role: VIEWER
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: string
              example: "[\n    {\n        \"id\": \"007514a95316bh6fe7ejc0cad101c23343\",\n        \"invitingUserEmail\":\
                \ \"admin@mydomain.com\",\n        \"invitedEmail\": \"a@mydomain.com\",\n        \"marketerId\": \"007514a95316bh6fe7ejc0cad101c23343\"\
                ,\n        \"status\": \"Pending\",\n        \"creationDate\": \"2022-06-01\",\n        \"marketerName\":\
                \ \"Some marketer\",\n        \"role\": \"ADMIN\"\n    },\n       \"id\": \"007514a95316bh6fe7ejc0cad101c23343\"\
                ,\n        \"invitingUserEmail\": \"admin@mydomain.com\",\n        \"invitedEmail\": \"b@mydomain.com\",\n\
                \        \"marketerId\": \"007514a95316bh6fe7ejc0cad101c23343\",\n        \"status\": \"Pending\",\n     \
                \   \"creationDate\": \"2022-06-01\",\n        \"marketerName\": \"Some marketer\",\n        \"role\": \"\
                VIEWER\"\n    }\n]"
          headers:
            AMPLIFY-REQUEST-ID:
              description: Request correlation / rate-limit signal
              schema:
                type: string
        '400':
          description: Bad Request - the request could not be understood or was missing required parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized - authentication failed or the user lacks permission for the requested operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden - access denied
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found - resource was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Too Many Requests - request exceeded rate limits; see the rate-limit-msec-left header
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /invitations:
    put:
      operationId: updateInvitations
      summary: Delete pending invitations
      description: Delete pending invitations should be done by updating the status of the invitations to REVOKED
      tags:
      - Users
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
            example:
              invitations:
              - id: 007514a95316bh6fe7ejc0cad101c23349
                status: REVOKED
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: string
              example: "{\n    \"updatedInvitations\":\n     [\n        {\n            \"operationStatus\":\n            \
                \    {\n                \"status\": \"Success\"\n                }\n            \"invitation\":\n        \
                \        {\n                \"id\": \"007514a95316bh6fe7ejc0cad101c23349\",\n                \"invitingUserEmail\"\
                : \"admin@mydomain.com\",\n                \"invitedEmail\": \"a@mydomain.com\",\n                \"marketerId\"\
                : \"007514a95316bh6fe7ejc0cad101c23343\",\n                \"status\": \"Revoked\",\n                \"creationDate\"\
                : \"2022-06-01\",\n                \"marketerName\": \"Some marketer\",\n                \"role\": \"ADMIN\"\
                \n                },\n        \"id\": \"007514a95316bh6fe7ejc0cad101c23349\"\n        }\n    ]\n}"
          headers:
            AMPLIFY-REQUEST-ID:
              description: Request correlation / rate-limit signal
              schema:
                type: string
        '400':
          description: Bad Request - the request could not be understood or was missing required parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized - authentication failed or the user lacks permission for the requested operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden - access denied
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found - resource was 

# --- truncated at 32 KB (580 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/outbrain/refs/heads/main/openapi/outbrain-amplify-api-full-openapi.yml