openapi: 3.0.1 info: title: FirstPromoter Admin Commissions Promo Codes 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: Promo Codes paths: /company/promo_codes: get: summary: Get promo codes operationId: getPromoCodes description: "With this endpoint you can list all promo codes. \n **HTTP Request**
`GET https://api.firstpromoter.com/api/v2/company/promo_codes`
" tags: - Promo Codes parameters: - $ref: '#/components/parameters/AccountId' - name: promoter_campaign_id in: query description: Filters promo codes by promoter campaign id required: false schema: type: integer responses: '200': description: List of promo codes content: application/json: schema: type: array items: $ref: '#/components/schemas/PromoCode' '401': description: Unauthorized '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Error' post: summary: Create promo code (Stripe Only) operationId: createPromoCode description: "With this endpoint you can create a new promo code. \n **HTTP Request**
`POST https://api.firstpromoter.com/api/v2/company/promo_codes`
" tags: - Promo Codes parameters: - $ref: '#/components/parameters/AccountId' requestBody: required: true content: application/json: schema: type: object required: - code - reward_id - promoter_campaign_id properties: code: type: string description: Code of the promo code description: type: string description: Description of the promo code reward_id: type: integer description: ID of the reward promoter_campaign_id: type: integer description: ID of the promoter campaign metadata: type: object description: Metadata of the promo code details: type: object description: Details of the promo code responses: '200': description: Created promo code content: application/json: schema: $ref: '#/components/schemas/PromoCode' '401': description: Unauthorized '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Error' /company/promo_codes/{id}: get: summary: Get promo code by id operationId: getPromoCode tags: - Promo Codes description: "With this endpoint you can get the details of a specific promo code. \n **HTTP Request**
`GET https://api.firstpromoter.com/api/v2/company/promo_codes/{id}`
" parameters: - $ref: '#/components/parameters/AccountId' - name: id in: path description: ID of the promo code required: true schema: type: integer responses: '200': description: Promo code details content: application/json: schema: $ref: '#/components/schemas/PromoCode' '401': description: Unauthorized '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Error' put: summary: Update promo code by id description: "Update promo code by id. Can not be updated if archived and ext_id present. \n**HTTP Request**
`PUT https://api.firstpromoter.com/api/v2/company/promo_codes/{id}`
" operationId: updatePromoCode tags: - Promo Codes parameters: - $ref: '#/components/parameters/AccountId' - name: id in: path description: ID of the promo code required: true schema: type: integer requestBody: required: true content: application/json: schema: type: object properties: code: type: string description: Code of the promo code description: type: string description: Description of the promo code promoter_campaign_id: type: integer description: ID of the promoter campaign metadata: type: object description: Metadata of the promo code details: type: object description: Details of the promo code responses: '200': description: Updated promo code content: application/json: schema: $ref: '#/components/schemas/PromoCode' '401': description: Unauthorized '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Error' delete: summary: Archive promo code by id description: "Archive promo code by id. \n**HTTP Request**
`DELETE https://api.firstpromoter.com/api/v2/company/promo_codes/{id}`
" operationId: archivePromoCode tags: - Promo Codes parameters: - $ref: '#/components/parameters/AccountId' - name: id in: path description: ID of the promo code required: true schema: type: integer responses: '200': description: Promo code archived successfully '401': description: Unauthorized '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Error' components: schemas: PromoCode: type: object properties: id: type: integer description: ID of the promo code entry code: type: string description: Code of the promo code reward: type: object properties: id: type: integer description: ID of the reward name: type: string description: Name of the reward description: Reward ext_id: type: string description: type: string description: Description of the promo code company_id: type: integer promoter_campaign_id: type: integer description: ID of the promoter campaign metadata: type: object description: Metadata of the promo code details: type: object description: Details of the promo code archived_at: type: string format: date-time Error: type: object properties: message: type: string example: Invalid user type code: type: string example: forbidden 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