Keap Affiliate API
Keap Affiliate API — 48 operations across 28 paths on the Keap REST v2 contract, read from Keap's own published OpenAPI 3.1 document.
Keap Affiliate API — 48 operations across 28 paths on the Keap REST v2 contract, read from Keap's own published OpenAPI 3.1 document.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/keap-affiliate-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Keap Affiliate API
contact:
name: Keap
url: https://developer.keap.com/get-support
email: api.keap@thryv.com
license:
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0
termsOfService: https://www.thryv.com/terms-of-use
version: '1.0'
description: 'Operations tagged Affiliate across 2 of this provider''s published API definitions: keap-v1-openapi.json, keap-v2-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.infusionsoft.com/crm
security:
- oauth2: []
tags:
- name: Affiliate
description: Affiliates-Endpoint
paths:
/rest/v1/affiliates:
get:
tags:
- Affiliate
summary: List Affiliates
description: Retrieves a list of all affiliates
operationId: listAffiliates
parameters:
- name: name
in: query
description: Optional affiliate name to query on
required: false
schema:
type: string
- name: code
in: query
description: Optional affiliate parent ID to query on
required: false
schema:
type: string
- name: parent_id
in: query
description: Optional affiliate code to query on
required: false
schema:
type: string
- name: contact_id
in: query
description: Optional contact ID to query on
required: false
schema:
type: string
- name: program_id
in: query
description: Optional affiliate program ID to query on
required: false
schema:
type: string
- name: status
in: query
description: Optional affiliate status to query on
required: false
schema:
type: string
enum:
- active
- inactive
- name: order
in: query
description: Attribute to order items by
required: false
schema:
type: string
enum:
- id
- name
- name: order_direction
in: query
description: How to order the data i.e. ascending (A-Z) or descending (Z-A)
required: false
schema:
type: string
enum:
- ASCENDING
- DESCENDING
- name: offset
in: query
description: Count to offset the returned results by
required: false
schema:
type: integer
format: int32
example: 0
- name: limit
in: query
description: Sets a beginning range of items to return
required: false
schema:
type: integer
format: int32
example: 0
responses:
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'501':
description: Not Implemented
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'405':
description: Method Not Allowed
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'406':
description: Not Acceptable
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'412':
description: Precondition Failed
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/AffiliateList'
post:
tags:
- Affiliate
summary: Create an affiliate
description: Create a single affiliate
operationId: createAffiliate
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateAffiliate'
required: true
responses:
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'501':
description: Not Implemented
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'405':
description: Method Not Allowed
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'406':
description: Not Acceptable
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'412':
description: Precondition Failed
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/Affiliate'
servers:
- url: https://api.infusionsoft.com/crm
/rest/v1/affiliates/{id}:
get:
tags:
- Affiliate
summary: Retrieve an affiliate
description: Retrieve a single affiliate
operationId: getAffiliate
parameters:
- name: id
in: path
required: true
schema:
type: integer
format: int64
responses:
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'501':
description: Not Implemented
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'405':
description: Method Not Allowed
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'406':
description: Not Acceptable
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'412':
description: Precondition Failed
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Affiliate'
servers:
- url: https://api.infusionsoft.com/crm
/rest/v1/affiliates/{affiliateId}/payments:
get:
tags:
- Affiliate
summary: List Affiliate payments
description: Retrieves a list of all affiliate payments
operationId: listPayments
parameters:
- name: affiliateId
in: path
required: true
schema:
type: integer
format: int64
- name: queryCommand
in: query
required: true
schema:
$ref: '#/components/schemas/RestAffiliatePaymentQueryCommand'
responses:
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'501':
description: Not Implemented
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'405':
description: Method Not Allowed
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'406':
description: Not Acceptable
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'412':
description: Precondition Failed
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/AffiliatePaymentList'
servers:
- url: https://api.infusionsoft.com/crm
/rest/v1/affiliates/{affiliateId}/clawbacks:
get:
tags:
- Affiliate
summary: List Affiliate clawbacks
description: Retrieves a list of all affiliate clawbacks
operationId: listAffiliateClawbacks
parameters:
- name: affiliateId
in: path
required: true
schema:
type: string
- name: since
in: query
description: Optional inclusive start date
required: false
schema:
type: string
- name: until
in: query
description: Optional inclusive end date
required: false
schema:
type: string
- name: order
in: query
description: Attribute to order items by
required: false
schema:
type: string
enum:
- DATE_EARNED
- name: order_direction
in: query
description: How to order the data i.e. ascending (A-Z) or descending (Z-A)
required: false
schema:
type: string
enum:
- ASCENDING
- DESCENDING
- name: offset
in: query
description: Count to offset the returned results by
required: false
schema:
type: integer
format: int32
example: 0
- name: limit
in: query
description: Sets a beginning range of items to return
required: false
schema:
type: integer
format: int32
example: 0
responses:
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'501':
description: Not Implemented
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'405':
description: Method Not Allowed
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'406':
description: Not Acceptable
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'412':
description: Precondition Failed
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/AffiliateClawbackList'
servers:
- url: https://api.infusionsoft.com/crm
/rest/v1/affiliates/summaries:
get:
tags:
- Affiliate
summary: List affiliate summaries
description: Retrieves a list of affiliate summaries
operationId: listSummaries
parameters:
- name: affiliate_ids
in: query
description: Ids of the affiliates you would like a summary for
required: true
schema:
type: array
items:
type: integer
format: int64
- name: order
in: query
description: Attribute to order items by
required: false
schema:
type: string
enum:
- affiliate_id
- amount_earned
- balance
- clawbacks
- name: order_direction
in: query
description: How to order the data i.e. ascending (A-Z) or descending (Z-A)
required: false
schema:
type: string
enum:
- ASCENDING
- DESCENDING
responses:
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'501':
description: Not Implemented
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'405':
description: Method Not Allowed
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'406':
description: Not Acceptable
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'412':
description: Precondition Failed
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/AffiliateSummaryList'
servers:
- url: https://api.infusionsoft.com/crm
/rest/v1/affiliates/redirectlinks:
get:
tags:
- Affiliate
summary: List Affiliate Redirects
description: Retrieves a list of all affiliate redirects
operationId: listAffiliateRedirectLinks
parameters:
- name: affiliate_id
in: query
description: Affiliate ID to search by
required: false
schema:
type: string
- name: order
in: query
description: Attribute to order items by
required: false
schema:
type: string
enum:
- id
- name
- name: order_direction
in: query
description: How to order the data i.e. ascending (A-Z) or descending (Z-A)
required: false
schema:
type: string
enum:
- ASCENDING
- DESCENDING
- name: offset
in: query
description: Count to offset the returned results by
required: false
schema:
type: integer
format: int32
example: 0
- name: limit
in: query
description: Sets a beginning range of items to return
required: false
schema:
type: integer
format: int32
example: 0
responses:
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'501':
description: Not Implemented
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'405':
description: Method Not Allowed
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'406':
description: Not Acceptable
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'412':
description: Precondition Failed
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/RedirectList'
servers:
- url: https://api.infusionsoft.com/crm
/rest/v1/affiliates/programs:
get:
tags:
- Affiliate
summary: List Commission Programs
description: Retrieve a list of Commission Programs
operationId: listPrograms
parameters:
- name: affiliate_id
in: query
description: Id of the affiliate you would like programs for
required: false
schema:
type: integer
format: int64
example: 0
- name: order
in: query
description: Attribute to order items by
required: false
schema:
type: string
enum:
- id
- name
- priority
- name: order_direction
in: query
description: How to order the data i.e. ascending (A-Z) or descending (Z-A)
required: false
schema:
type: string
enum:
- ASCENDING
- DESCENDING
- name: offset
in: query
description: Count to offset the returned results by
required: false
schema:
type: integer
format: int32
example: 0
- name: limit
in: query
description: Sets a beginning range of items to return
required: false
schema:
type: integer
format: int32
example: 0
responses:
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'501':
description: Not Implemented
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'405':
description: Method Not Allowed
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'406':
description: Not Acceptable
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'412':
description: Precondition Failed
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/AffiliateProgramList'
servers:
- url: https://api.infusionsoft.com/crm
/rest/v1/affiliates/model:
get:
tags:
- Affiliate
summary: Retrieve Affiliate Model
description: Get the custom fields for the Affiliate object
operationId: retrieveAffiliateModel
responses:
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'501':
description: Not Implemented
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'405':
description: Method Not Allowed
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'406':
description: Not Acceptable
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'412':
description: Precondition Failed
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ObjectModel'
servers:
- url: https://api.infusionsoft.com/crm
/rest/v1/affiliates/commissions:
get:
tags:
- Affiliate
summary: List Commissions
description: Retrieve a list of Commissions based on Affiliate or Date Range
operationId: listCommissions
parameters:
- name: since
in: query
description: Date to start searching from ex. `2017-01-01T22:17:59.039Z`
required: false
schema:
type: string
- name: until
in: query
description: Date to search to ex. `2017-01-01T22:17:59.039Z`
required: false
schema:
type: string
- name: order
in: query
description: Attribute to order items by
required: false
schema:
type: string
enum:
- DATE_EARNED
- name: order_direction
in: query
description: How to order the data i.e. ascending (A-Z) or descending (Z-A)
required: false
schema:
type: string
enum:
- ASCENDING
- DESCENDING
- name: limit
in: query
description: Sets a total of items to return
required: false
schema:
type: integer
format: int32
example: 0
- name: offset
in: query
description: Sets a beginning range of items to return
required: false
schema:
type: integer
format: int32
example: 0
- name: affiliateId
in: query
description: Affiliate to retrieve commissions for
required: false
schema:
type: integer
format: int64
example: 0
responses:
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'501':
description: Not Implemented
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'405':
description: Method Not Allowed
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'406':
description: Not Acceptable
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'412':
description: Precondition Failed
content:
application/json:
schema:
$ref: '#/components/schemas/ModelAndView'
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/AffiliateCommissionList'
servers:
- url: https://api.infusionsoft.com/crm
/rest/v2/affiliates:
get:
tags:
- Affiliate
summary: List Affiliates
description: Retrieves a list of Affiliates
operationId: listAffiliate
parameters:
- name: filter
in: query
description: 'Filter to apply, allowed fields are:
- (String) `id` - Allowable operators: "==","<=", "<", ">=", ">", "!="
- (String) `name` - Wildcard matching allowed
- (String) `contact_id`
- (String) `referral_contact_id`
- (String) `status`
- (String) `code`
- (Custom) Custom field names - Reference by field name (e.g., `tier`, `region`)
You will need to apply the `==` operator to check the equality of one of the filters with the
value you want to match, in the encoded form `%3D%3D`. For the filters listed above,
here are some examples:
- `filter=id%3C123`
- `filter=id%3D%3D123`
- `filter=name%3D%3DBob`
- `filter=contact_id%3D%3D567`
- `filter=contact_id%3D%3D123%3Bcode%3D%3D567`
For fields which allow wildcard matching, you may use the * wildcard character (or its encoded form %2A)
for case-insensitive partial matching on text fields. Example
# --- truncated at 32 KB (195 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/keap/refs/heads/main/openapi/keap-affiliate-api-openapi.yml