openapi: 3.1.0
info:
  title: Brand API - Programs
  description: API for managing your programs (campaigns) on impact.com. This includes
    retrieving program details and managing unsubscribed contacts from your outreach
    communications.
  version: v14
servers:
- url: https://api.impact.com
paths:
  /Advertisers/{AccountSID}/Campaigns:
    get:
      summary: List All Programs
      description: Returns a list of all programs for your account, sorted by Program
        ID.
      operationId: listPrograms
      tags:
      - Programs
      parameters:
      - name: AccountSID
        in: path
        required: true
        schema:
          type: string
      - name: Name
        in: query
        description: Filter by program name.
        schema:
          type: string
      - name: State
        in: query
        description: Filter by program state.
        schema:
          type: string
          enum:
          - ACTIVE
          - AWAITING_REVIEW
          - CANCELLED
          - CLOSED
          - DEACTIVATED
          - DELINQUENT
          - REJECTED
          - SETUP
          - SETUP_COMPLETE
      responses:
        '200':
          description: A paginated list of program objects.
          content:
            application/json:
              schema:
                type: object
                properties:
                  Campaigns:
                    type: array
                    description: The list of program objects.
                    items:
                      $ref: '#/components/schemas/Program'
  /Advertisers/{AccountSID}/Campaigns/{CampaignId}:
    get:
      summary: Get Program Details
      description: Retrieves the details of an existing program by its unique ID.
      operationId: getProgramById
      tags:
      - Programs
      parameters:
      - name: AccountSID
        in: path
        required: true
        schema:
          type: string
      - name: CampaignId
        in: path
        required: true
        description: The unique identifier for the program (campaign).
        schema:
          type: integer
      responses:
        '200':
          description: A single program object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Program'
  /Advertisers/{AccountSID}/Campaigns/{CampaignId}/UnsubscribedContacts:
    get:
      summary: List Unsubscribed Contacts
      description: Retrieves a paginated list of all contacts who have unsubscribed
        from a specific program's Outreach communications.
      operationId: listUnsubscribedContacts
      tags:
      - Unsubscribed Contacts
      parameters:
      - name: AccountSID
        in: path
        required: true
        schema:
          type: string
      - name: CampaignId
        in: path
        required: true
        description: The unique identifier for the program.
        schema:
          type: integer
      - name: PartnerId
        in: query
        description: Filter by partner ID.
        schema:
          type: integer
      - name: UserEmail
        in: query
        description: Filter by a specific user email.
        schema:
          type: string
          format: email
      - name: Page
        in: query
        description: The page number to retrieve, starting at 0.
        schema:
          type: integer
          default: 0
      - name: PageSize
        in: query
        description: The number of items per page. Maximum is 1000.
        schema:
          type: integer
          default: 20
          maximum: 1000
      responses:
        '200':
          description: A paginated list of unsubscribed contacts.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnsubscribedContactsResponse'
    post:
      summary: Unsubscribe a Contact
      description: Unsubscribes a contact from a specific program's Outreach communications
        on behalf of a partner.
      operationId: unsubscribeContact
      tags:
      - Unsubscribed Contacts
      parameters:
      - name: AccountSID
        in: path
        required: true
        schema:
          type: string
      - name: CampaignId
        in: path
        required: true
        description: The unique identifier for the program.
        schema:
          type: integer
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              required:
              - PartnerId
              - UserEmail
              properties:
                PartnerId:
                  type: integer
                  description: The unique identifier for the Partner associated with
                    the contact.
                UserEmail:
                  type: string
                  format: email
                  description: The email address of the contact to unsubscribe.
      responses:
        '200':
          description: A confirmation object indicating success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessUriResponse'
components:
  schemas:
    Program:
      type: object
      properties:
        Id:
          type: integer
          description: The unique identifier for the program.
        Name:
          type: string
          description: The display name of the program.
        State:
          type: string
          description: The current state of the program.
          enum:
          - ACTIVE
          - AWAITING_REVIEW
          - CANCELLED
          - CLOSED
          - DEACTIVATED
          - DELINQUENT
          - REJECTED
          - SETUP
          - SETUP_COMPLETE
        Type:
          type: string
          description: The classification of the program. This indicates the business model or category the program falls under (e.g., Affiliate, Retail Media, etc.).
          enum:
          - Seller
          - Retail Media Seller
          - Performance
          - Advocate
          - Creator
          - Retail Media
          example: Performance
        Categories:
          type: object
          description: The program's category classifications.
          properties:
            PrimaryCategory:
              type: string
              description: The program's primary category.
            PrimarySubCategories:
              type: array
              description: Subcategories under the primary category.
              items:
                type: string
            AdditionalCategory:
              type: string
              nullable: true
              description: An additional category for the program, if any.
            AdditionalSubCategories:
              type: array
              description: Subcategories under the additional category.
              items:
                type: string
        ShortDescription:
          type: string
          description: A short description of the program.
        LongDescription:
          type: string
          description: A long description of the program.
        ListInMarketplace:
          type: boolean
          description: Whether the program is listed in the impact.com partner marketplace.
        DisplayServicingAgency:
          type: boolean
          description: Whether the servicing agency is displayed publicly.
        Rating:
          type: integer
          description: The program's rating.
        SearchKeywords:
          type: string
          description: Keywords used to surface the program in marketplace search.
        ShippingRegions:
          type: array
          description: Regions where the brand ships.
          items:
            type: string
        Resources:
          type: object
          description: Links to brand-provided resources.
          properties:
            CompanyHomepage:
              type: string
              format: uri
              description: The company homepage URL.
            ExampleLandingPage:
              type: string
              format: uri
              description: An example landing page URL.
            InformationPage:
              type: string
              format: uri
              description: An information page URL.
            AdditionalRelatedLinks:
              type: array
              description: Additional links related to the program.
              items:
                type: object
                properties:
                  LinkType:
                    type: string
                    description: The type of link.
                    enum:
                    - URL
                    - PDF
                  LinkDisplayName:
                    type: string
                    description: Display name for the link.
                  LinkUrl:
                    type: string
                    format: uri
                    description: The URL of the link.
        CompanyContacts:
          type: array
          description: Company contacts for the program.
          items:
            type: object
            properties:
              FirstName:
                type: string
                description: The contact's first name.
              LastName:
                type: string
                description: The contact's last name.
              EmailAddress:
                type: string
                format: email
                description: The contact's email address.
              PhoneNumber:
                type: string
                description: The contact's phone number.
        GiftCardPayouts:
          type: boolean
          description: Whether gift card payouts are enabled.
        TrademarkBidding:
          type: boolean
          description: Whether partners are allowed to bid on the brand's trademark
            terms.
        ThirdPartyImpressionPixel:
          type: string
          description: A third-party impression tracking pixel.
        MobileReadyAds:
          type: boolean
          description: Whether the program supports mobile-ready ads.
        DisplayFutureAds:
          type: boolean
          description: Whether to display ads that aren't yet active.
        PromoCodeTracking:
          type: boolean
          description: Whether promo code tracking is enabled.
        TrackingDomain:
          type: string
          description: The tracking domain used for this program.
        SiteDefinition:
          type: string
          description: The site definition for the program.
        ImpressionTracking:
          type: boolean
          description: Whether impression tracking is enabled.
        ViewThroughCrediting:
          type: boolean
          description: Whether view-through crediting is enabled.
        IdentityMatching:
          type: string
          description: The identity matching strategy.
          enum:
          - NONE
          - ACCOUNT
          - IR_CONSORTIUM
        HasStandDownPolicy:
          type: boolean
          description: Whether the program has a stand-down policy in place.
        GatewayTrackingSettings:
          type: object
          description: Settings for gateway tracking.
          properties:
            DefaultLandingPage:
              type: string
              format: uri
              description: The default landing page URL.
            MediaPartnerTrackingTemplate:
              type: string
              description: Tracking template applied to media partner links.
            CampaignTrackingTemplate:
              type: string
              description: Tracking template applied to campaign links.
            SSLSupport:
              type: boolean
              description: Whether SSL is supported for tracking links.
            DeepLinking:
              type: boolean
              description: Whether deep linking is enabled.
            DeepLinkDomains:
              type: string
              description: Comma-separated list of domains for deep linking.
            ThirdPartyGatewayUrl:
              type: string
              format: uri
              description: A third-party gateway URL for tracking.
            ThirdPartyGatewayQueryStringParameters:
              type: string
              description: Query string parameters for the third-party gateway.
            UniqueClickWindowLength:
              type: string
              description: The length of the unique click window.
              enum:
              - 1m
              - 5m
              - 15m
              - 30m
              - 1h
              - 6h
              - 12h
              - 24h
            UniqueClickWindowType:
              type: string
              description: Whether the unique click window is fixed or rolling.
              enum:
              - FIXED
              - ROLLING
        DirectTrackingSettings:
          type: object
          description: Settings for direct tracking.
          properties:
            UnidentifiedName:
              type: string
              description: Name used for unidentified traffic.
            SessionWindowLength:
              type: integer
              description: The session window length.
        Uri:
          type: string
          format: uri-reference
          description: The unique reference to this program in the impact.com API.
          example: /Advertisers/<AccountSID>/Campaigns/1000
    UnsubscribedContact:
      type: object
      properties:
        UserEmail:
          type: string
          format: email
          description: The email address of the unsubscribed contact.
          example: partnerA@mail.com
        PartnerId:
          type: integer
          description: The unique identifier of the partner associated with the contact.
          example: 1234
        CreatedAt:
          type: string
          format: date-time
          description: The date and time the unsubscribe was created.
          example: '2026-02-05T12:13:08Z'
        UpdatedAt:
          type: string
          format: date-time
          description: The date and time the unsubscribe was last updated.
          example: '2026-02-05T12:13:08Z'
    UnsubscribedContactsResponse:
      type: object
      properties:
        Page:
          type: integer
          description: The current page number. Starts at 0.
          example: 0
        NumPages:
          type: integer
          description: The total number of pages available.
          example: 1
        PageSize:
          type: integer
          description: The number of items per page. The maximum is 1000.
          example: 20
        Total:
          type: integer
          description: The total number of unsubscribed contact records.
          example: 1
        Start:
          type: integer
          description: The index of the first item on the current page.
          example: 0
        End:
          type: integer
          description: The index of the last item on the current page.
          example: 1
        Uri:
          type: string
          format: uri-reference
          description: The URI for the current page of results.
          example: /UnsubscribedContacts?page=0&size=20
        FirstPageUri:
          type: string
          format: uri-reference
          description: The URI for the first page of results.
          example: /UnsubscribedContacts?page=0&size=20
        PreviousPageUri:
          type: string
          format: uri-reference
          nullable: true
          description: The URI for the previous page of results, if any.
          example: ''
        NextPageUri:
          type: string
          format: uri-reference
          nullable: true
          description: The URI for the next page of results, if any.
          example: ''
        LastPageUri:
          type: string
          format: uri-reference
          description: The URI for the last page of results.
          example: /UnsubscribedContacts?page=0&size=20
        Results:
          type: array
          description: The list of unsubscribed contact objects on this page.
          items:
            $ref: '#/components/schemas/UnsubscribedContact'
    SuccessUriResponse:
      type: object
      properties:
        Status:
          type: string
          description: Indicates whether the operation was successful.
          example: OK
        Uri:
          type: string
          format: uri-reference
          description: The unique reference to the affected resource.
