Tapfiliate Affiliates API
Manage affiliates, their groups, notes, and payout methods
Manage affiliates, their groups, notes, and payout methods
openapi: 3.0.3
info:
title: Tapfiliate REST Affiliate Groups Affiliates API
description: Tapfiliate is an affiliate tracking and management platform. This REST API allows you to create and manage affiliate programs, track conversions, manage affiliates, handle commission payouts, and record clicks. The API is versioned at V1.6 and uses API key authentication via the X-Api-Key header.
version: '1.6'
contact:
name: Tapfiliate Support
url: https://tapfiliate.com/docs/rest/
termsOfService: https://tapfiliate.com/terms/
servers:
- url: https://api.tapfiliate.com/1.6
description: Tapfiliate REST API v1.6
security:
- ApiKeyAuth: []
tags:
- name: Affiliates
description: Manage affiliates, their groups, notes, and payout methods
paths:
/affiliates/{affiliate_id}/:
get:
operationId: getAffiliate
summary: Retrieve an affiliate
description: Retrieve a single affiliate by their ID.
tags:
- Affiliates
parameters:
- $ref: '#/components/parameters/affiliateId'
responses:
'200':
description: Affiliate retrieved
content:
application/json:
schema:
$ref: '#/components/schemas/Affiliate'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
delete:
operationId: deleteAffiliate
summary: Delete an affiliate
description: Delete an affiliate record.
tags:
- Affiliates
parameters:
- $ref: '#/components/parameters/affiliateId'
responses:
'204':
description: Affiliate deleted
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/affiliates/:
get:
operationId: listAffiliates
summary: List all affiliates
description: Retrieve a paginated list of all affiliates.
tags:
- Affiliates
parameters:
- $ref: '#/components/parameters/page'
- $ref: '#/components/parameters/limit'
- name: email
in: query
schema:
type: string
description: Filter by affiliate email
- name: affiliate_group_id
in: query
schema:
type: string
description: Filter by affiliate group
responses:
'200':
description: List of affiliates
headers:
Link:
$ref: '#/components/headers/PaginationLink'
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Affiliate'
'401':
$ref: '#/components/responses/Unauthorized'
post:
operationId: createAffiliate
summary: Create an affiliate
description: Create a new affiliate.
tags:
- Affiliates
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- email
- firstname
- lastname
properties:
email:
type: string
format: email
firstname:
type: string
lastname:
type: string
meta_data:
type: object
additionalProperties: true
responses:
'201':
description: Affiliate created
content:
application/json:
schema:
$ref: '#/components/schemas/Affiliate'
'401':
$ref: '#/components/responses/Unauthorized'
'422':
$ref: '#/components/responses/UnprocessableEntity'
/affiliates/{affiliate_id}/group/:
put:
operationId: setAffiliateGroup
summary: Set affiliate group
description: Assign an affiliate to a group.
tags:
- Affiliates
parameters:
- $ref: '#/components/parameters/affiliateId'
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- group
properties:
group:
type: object
required:
- id
properties:
id:
type: string
responses:
'200':
description: Affiliate group set
content:
application/json:
schema:
$ref: '#/components/schemas/Affiliate'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
delete:
operationId: removeAffiliateGroup
summary: Remove affiliate group
description: Remove the group assignment from an affiliate.
tags:
- Affiliates
parameters:
- $ref: '#/components/parameters/affiliateId'
responses:
'200':
description: Affiliate group removed
content:
application/json:
schema:
$ref: '#/components/schemas/Affiliate'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/affiliates/{affiliate_id}/notes/{id}/:
patch:
operationId: updateAffiliateNote
summary: Update note
description: Update an existing note for an affiliate.
tags:
- Affiliates
parameters:
- $ref: '#/components/parameters/affiliateId'
- name: id
in: path
required: true
schema:
type: string
description: Note ID
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
note:
type: string
responses:
'200':
description: Note updated
content:
application/json:
schema:
$ref: '#/components/schemas/Note'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
delete:
operationId: deleteAffiliateNote
summary: Delete note
description: Delete a note from an affiliate.
tags:
- Affiliates
parameters:
- $ref: '#/components/parameters/affiliateId'
- name: id
in: path
required: true
schema:
type: string
description: Note ID
responses:
'204':
description: Note deleted
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/affiliates/{affiliate_id}/notes/:
get:
operationId: listAffiliateNotes
summary: List notes
description: List all notes for an affiliate.
tags:
- Affiliates
parameters:
- $ref: '#/components/parameters/affiliateId'
responses:
'200':
description: List of notes
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Note'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
post:
operationId: createAffiliateNote
summary: Create note
description: Create a new note for an affiliate.
tags:
- Affiliates
parameters:
- $ref: '#/components/parameters/affiliateId'
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- note
properties:
note:
type: string
responses:
'201':
description: Note created
content:
application/json:
schema:
$ref: '#/components/schemas/Note'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/affiliates/{affiliate_id}/meta-data/:
get:
operationId: getAffiliateMetaData
summary: Retrieve meta data for an Affiliate
description: Retrieve all metadata for a given affiliate.
tags:
- Affiliates
parameters:
- $ref: '#/components/parameters/affiliateId'
responses:
'200':
description: Affiliate metadata
content:
application/json:
schema:
type: object
additionalProperties: true
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
put:
operationId: replaceAffiliateMetaData
summary: Update (replace) meta data for an Affiliate
description: Replace all metadata for an affiliate.
tags:
- Affiliates
parameters:
- $ref: '#/components/parameters/affiliateId'
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties: true
responses:
'200':
description: Metadata replaced
content:
application/json:
schema:
type: object
additionalProperties: true
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/affiliates/{affiliate_id}/meta-data/{key}/:
get:
operationId: getAffiliateMetaDataByKey
summary: Retrieve meta data by key for an Affiliate
description: Retrieve a specific metadata key for an affiliate.
tags:
- Affiliates
parameters:
- $ref: '#/components/parameters/affiliateId'
- $ref: '#/components/parameters/metaDataKey'
responses:
'200':
description: Metadata value
content:
application/json:
schema:
type: object
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
put:
operationId: setAffiliateMetaDataByKey
summary: Set meta data by key for an Affiliate
description: Set a specific metadata key for an affiliate.
tags:
- Affiliates
parameters:
- $ref: '#/components/parameters/affiliateId'
- $ref: '#/components/parameters/metaDataKey'
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
'200':
description: Metadata set
content:
application/json:
schema:
type: object
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
delete:
operationId: deleteAffiliateMetaDataByKey
summary: Delete meta data by key for an Affiliate
description: Delete a specific metadata key for an affiliate.
tags:
- Affiliates
parameters:
- $ref: '#/components/parameters/affiliateId'
- $ref: '#/components/parameters/metaDataKey'
responses:
'204':
description: Metadata deleted
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/affiliates/{affiliate_id}/payout-methods/{payout_method_id}/:
get:
operationId: getPayoutMethod
summary: Get payout method
description: Retrieve a specific payout method for an affiliate.
tags:
- Affiliates
parameters:
- $ref: '#/components/parameters/affiliateId'
- name: payout_method_id
in: path
required: true
schema:
type: string
description: Payout method ID
responses:
'200':
description: Payout method retrieved
content:
application/json:
schema:
$ref: '#/components/schemas/PayoutMethod'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
put:
operationId: setPayoutMethod
summary: Set payout method
description: Set or update a payout method for an affiliate.
tags:
- Affiliates
parameters:
- $ref: '#/components/parameters/affiliateId'
- name: payout_method_id
in: path
required: true
schema:
type: string
description: Payout method ID
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
type:
type: string
description: Payout method type (e.g. paypal, wire)
details:
type: object
additionalProperties: true
responses:
'200':
description: Payout method set
content:
application/json:
schema:
$ref: '#/components/schemas/PayoutMethod'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/affiliates/{affiliate_id}/payout-methods/:
get:
operationId: listPayoutMethods
summary: List payout methods
description: List all payout methods for an affiliate.
tags:
- Affiliates
parameters:
- $ref: '#/components/parameters/affiliateId'
responses:
'200':
description: List of payout methods
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PayoutMethod'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/affiliates/{child_affiliate_id}/parent/:
put:
operationId: setAffiliateParent
summary: Set parent
description: Set the parent affiliate for a child affiliate (MLM).
tags:
- Affiliates
parameters:
- name: child_affiliate_id
in: path
required: true
schema:
type: string
description: Child affiliate ID
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- parent
properties:
parent:
type: object
required:
- id
properties:
id:
type: string
responses:
'200':
description: Parent affiliate set
content:
application/json:
schema:
$ref: '#/components/schemas/Affiliate'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
delete:
operationId: removeAffiliateParent
summary: Remove parent
description: Remove the parent affiliate from a child affiliate.
tags:
- Affiliates
parameters:
- name: child_affiliate_id
in: path
required: true
schema:
type: string
description: Child affiliate ID
responses:
'200':
description: Parent affiliate removed
content:
application/json:
schema:
$ref: '#/components/schemas/Affiliate'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/affiliates/{affiliate_id}/balances/:
get:
operationId: getAffiliateBalances
summary: Retrieve affiliate's balances
description: Get all currency balances for an affiliate.
tags:
- Affiliates
parameters:
- $ref: '#/components/parameters/affiliateId'
responses:
'200':
description: Affiliate balances
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Balance'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/affiliates/{affiliate_id}/payments/:
get:
operationId: listAffiliatePayments
summary: List affiliate's payments
description: List all payments made to a specific affiliate.
tags:
- Affiliates
parameters:
- $ref: '#/components/parameters/affiliateId'
- $ref: '#/components/parameters/page'
- $ref: '#/components/parameters/limit'
responses:
'200':
description: List of payments for the affiliate
headers:
Link:
$ref: '#/components/headers/PaginationLink'
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Payment'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/affiliates/{id}/programs/:
get:
operationId: getAffiliations
summary: Get affiliations
description: Get all programs an affiliate is enrolled in.
tags:
- Affiliates
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Affiliate ID
responses:
'200':
description: List of affiliations
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Affiliation'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/affiliates/custom-fields/:
get:
operationId: getCustomFields
summary: Get custom fields
description: Retrieve custom field definitions for affiliates.
tags:
- Affiliates
responses:
'200':
description: Custom fields
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CustomField'
'401':
$ref: '#/components/responses/Unauthorized'
components:
parameters:
limit:
name: limit
in: query
schema:
type: integer
default: 50
minimum: 1
maximum: 100
description: Number of results per page
affiliateId:
name: affiliate_id
in: path
required: true
schema:
type: string
description: Affiliate ID
page:
name: page
in: query
schema:
type: integer
default: 1
minimum: 1
description: Page number for pagination
metaDataKey:
name: key
in: path
required: true
schema:
type: string
description: Metadata key
schemas:
Note:
type: object
properties:
id:
type: string
note:
type: string
created_at:
type: string
format: date-time
Affiliate:
type: object
properties:
id:
type: string
description: Affiliate ID
email:
type: string
format: email
firstname:
type: string
lastname:
type: string
created_at:
type: string
format: date-time
group:
nullable: true
allOf:
- $ref: '#/components/schemas/AffiliateGroup'
meta_data:
type: object
additionalProperties: true
referral_link:
type: string
format: uri
coupon:
type: string
nullable: true
parent:
nullable: true
allOf:
- $ref: '#/components/schemas/AffiliateRef'
AffiliateGroup:
type: object
properties:
id:
type: string
name:
type: string
Affiliation:
type: object
description: An affiliate's enrollment in a program
properties:
affiliate:
$ref: '#/components/schemas/AffiliateRef'
program:
type: object
properties:
id:
type: string
title:
type: string
approved:
type: boolean
coupon:
type: string
nullable: true
referral_link:
type: string
format: uri
created_at:
type: string
format: date-time
PayoutMethod:
type: object
properties:
id:
type: string
type:
type: string
description: Payout method type (e.g. paypal, wire)
details:
type: object
additionalProperties: true
AffiliateRef:
type: object
properties:
id:
type: string
email:
type: string
format: email
firstname:
type: string
lastname:
type: string
Balance:
type: object
properties:
affiliate:
$ref: '#/components/schemas/AffiliateRef'
currency:
type: string
description: ISO 4217 currency code
balance:
type: number
format: float
Payment:
type: object
properties:
id:
type: string
affiliate:
$ref: '#/components/schemas/AffiliateRef'
amount:
type: number
format: float
currency:
type: string
description: ISO 4217 currency code
paid_at:
type: string
format: date-time
nullable: true
status:
type: string
enum:
- pending
- paid
- cancelled
Error:
type: object
properties:
message:
type: string
description: Human-readable error message
CustomField:
type: object
properties:
id:
type: string
name:
type: string
type:
type: string
required:
type: boolean
responses:
Unauthorized:
description: Authentication failed — missing or invalid API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
NotFound:
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
UnprocessableEntity:
description: Validation error — request body is invalid
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
headers:
PaginationLink:
description: Links to navigate between pages. Contains rel="next", rel="prev", rel="first", and rel="last" links as per RFC 5988.
schema:
type: string
example: <https://api.tapfiliate.com/1.6/conversions/?page=3>; rel="next", <https://api.tapfiliate.com/1.6/conversions/?page=51>; rel="last"
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: X-Api-Key