openapi: 3.0.1 info: title: FirstPromoter Admin Commissions Promoter Campaigns API version: '2.0' description: REST API for managing affiliate programs, promoters, campaigns, referrals, rewards, and payouts in FirstPromoter. Supports pagination, filtering, and full CRUD operations across all affiliate program resources. contact: url: https://docs.firstpromoter.com license: name: Proprietary url: https://firstpromoter.com/terms servers: - url: https://api.firstpromoter.com/api/v2 description: Production server security: - BearerAuth: [] tags: - name: Promoter Campaigns paths: /company/promoter_campaigns: get: summary: Get available promoter campaigns description: "With this endpoint you can list all promoter campaigns. \n **HTTP Request**
`GET https://api.firstpromoter.com/api/v2/company/promoter_campaigns`
" tags: - Promoter Campaigns parameters: - $ref: '#/components/parameters/AccountId' responses: '200': description: List of promoter campaigns content: application/json: schema: type: array items: $ref: '#/components/schemas/PromoterCampaign' '401': description: Unauthorized '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Error' /company/promoter_campaigns/search: get: summary: 'Returns results for promoter campaigns dropdown search. Max results: 5' description: "With this endpoint you can search for promoter campaigns. \n **HTTP Request**
`GET https://api.firstpromoter.com/api/v2/company/promoter_campaigns/search?q=...`
" tags: - Promoter Campaigns parameters: - $ref: '#/components/parameters/AccountId' - in: query name: q required: true schema: type: string description: Search params responses: '200': description: Search results content: application/json: schema: type: array items: $ref: '#/components/schemas/PromoterCampaign' '401': description: Unauthorized '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Error' /company/promoter_campaigns/{id}: put: summary: Update promoter campaign operationId: updatePromoterCampaign description: "With this endpoint you can update a promoter campaign. \n **HTTP Request**
`PUT https://api.firstpromoter.com/api/v2/company/promoter_campaigns/{id}`
" tags: - Promoter Campaigns parameters: - $ref: '#/components/parameters/AccountId' - in: path name: id required: true schema: type: integer description: Promoter campaign ID. This ID is not the promoter’s ID or the campaign’s ID. It’s the linking record that defines the promoter’s participation in that campaign. You can find this id in each object in the promoter_campaigns array when you get the details of the promoter. requestBody: required: true content: application/json: schema: type: object properties: ref_token: type: string state: type: string enum: - pending - accepted - rejected - blocked - inactive coupon: type: string display_coupon: type: string direct_url: type: string rewards_for_promoters: type: array items: $ref: '#/components/schemas/RewardConfig' rewards_for_referrals: type: array items: $ref: '#/components/schemas/RewardConfig' promoter_rewards_customized: type: boolean referral_rewards_customized: type: boolean responses: '200': description: Updated promoter campaign content: application/json: schema: $ref: '#/components/schemas/PromoterCampaign' '401': description: Unauthorized '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/Error' /company/promoter_campaigns/{id}/referral_links: get: summary: Get promoter campaign referral links operationId: getReferralLinksAssociatedWithThisPromoterCampaign description: With this endpoint you can get the referral links associated with this promoter campaign. **HTTP Request**
`GET https://api.firstpromoter.com/api/v2/company/promoter_campaigns/{id}/referral_links`
tags: - Promoter Campaigns parameters: - $ref: '#/components/parameters/AccountId' - in: path name: id required: true schema: type: integer description: Promoter campaign ID responses: '200': description: List of referral links content: application/json: schema: type: array items: $ref: '#/components/schemas/ReferralLink' '401': description: Unauthorized '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/Error' /company/promoter_campaigns/{id}/chart_data: get: summary: Get data used for chart tags: - Promoter Campaigns operationId: getPromoterCampaignChartData description: With this endpoint you can get the data used for charts.**HTTP Request**
`GET https://api.firstpromoter.com/api/v2/company/promoter_campaigns/{id}/chart_data`
parameters: - $ref: '#/components/parameters/AccountId' - in: path name: id required: true schema: type: integer description: Promoter campaign ID. This ID is not the promoter’s ID or the campaign’s ID. It’s the linking record that defines the promoter’s participation in that campaign. You can find this id in each object in the promoter_campaigns array when you get the details of the promoter. - in: query name: period_from required: true schema: type: string format: date - in: query name: period_to required: true schema: type: string format: date - in: query name: selection required: true schema: type: string enum: - revenue - clicks - referrals - customers - cancellations - in: query name: with_totals required: false schema: type: boolean description: If true, it will also return the totals for the period responses: '200': description: Chart data content: application/json: schema: $ref: '#/components/schemas/ChartData' '401': description: Unauthorized '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/Error' '422': description: Invalid parameters content: application/json: schema: $ref: '#/components/schemas/Error' components: schemas: PromoterCampaign: type: object properties: id: type: integer campaign_id: type: integer promoter_id: type: integer created_at: type: string format: date-time promoter: $ref: '#/components/schemas/Promoter' campaign: $ref: '#/components/schemas/Campaign' state: type: string enum: - pending - accepted - rejected - blocked - inactive stats: type: object properties: clicks_count: type: integer referrals_count: type: integer sales_count: type: integer customers_count: type: integer revenue_amount: type: number coupon: type: string display_coupon: type: string ref_token: type: string ref_link: type: string is_customized: type: boolean direct_url: type: string referral_rewards_customized: type: boolean promoter_rewards_customized: type: boolean rewards_for_promoters: type: array items: $ref: '#/components/schemas/Reward' rewards_for_referrals: type: array items: $ref: '#/components/schemas/Reward' promo_codes: type: array items: type: string Promoter: type: object properties: id: type: integer email: type: string name: type: string Campaign: type: object properties: id: type: integer name: type: string color: type: string ChartData: type: object properties: period_from: type: string format: date period_to: type: string format: date selection: type: string enum: - revenue - clicks - referrals - customers - cancellations selection_items: type: array items: type: object properties: date: type: string format: date value: type: number group_by: type: string RewardConfig: type: object required: - apply_on - product_ids - reward_id properties: apply_on: type: string enum: - monthly - yearly - one_time - all - specific product_ids: type: array items: type: integer reward_id: type: integer Reward: type: object properties: apply_on: type: string product_ids: type: array items: type: integer reward_id: type: integer reward: type: object properties: name: type: string promoter_reward_type: type: string hide_reward: type: boolean tier_level: type: integer coupon: type: string products: type: array items: type: object properties: id: type: integer name: type: string Error: type: object properties: message: type: string example: Invalid user type code: type: string example: forbidden ReferralLink: type: object properties: id: type: integer name: type: string url: type: string is_default: type: boolean source: type: string enum: - campaign - promoter sub_id: type: string campaign: $ref: '#/components/schemas/Campaign' parameters: AccountId: name: Account-ID in: header required: true description: Account ID. You can find your Account ID on Your FirstPromoter Dashboard. Navigate to Settings → Integrations schema: type: string securitySchemes: BearerAuth: type: http scheme: bearer description: API key passed as Bearer token