Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
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.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/affiliaterail-com:affiliaterail-com-commissions-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
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: Affiliaterail Com Commissions API
version: '2026-08-21'
description: 'Operations tagged Commissions across 2 of this provider''s published API definitions: affiliaterail-com-docs-openapi.json, affiliaterail-com-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.affiliaterail.com
description: Production
tags:
- name: Commissions
paths:
/v1/commissions:
get:
tags:
- Commissions
summary: List commissions
description: 'Every commission says which rule and which branch produced it.
**Scope:** `read`'
security:
- bearerAuth: []
parameters:
- schema:
type: string
example: prg_7uSyy9FqVLCFWrdPeZaK
description: Required on every list
required: true
description: Required on every list
name: program_id
in: query
- schema:
type: string
example: '25'
description: 1 to 100, default 25
required: false
description: 1 to 100, default 25
name: limit
in: query
- schema:
type: string
description: Object id; returns the page after it (older)
required: false
description: Object id; returns the page after it (older)
name: starting_after
in: query
- schema:
type: string
description: Object id; returns the page before it (newer)
required: false
description: Object id; returns the page before it (newer)
name: ending_before
in: query
- schema:
anyOf:
- type: string
- type: array
items:
type: string
description: 'Relations to embed: partner, customer, sale, payout, rule'
required: false
description: 'Relations to embed: partner, customer, sale, payout, rule'
name: expand[]
in: query
- schema:
anyOf:
- type: string
- type: array
items:
type: string
description: Nothing to include on this resource
required: false
description: Nothing to include on this resource
name: include[]
in: query
- schema:
type: string
required: false
name: partner_id
in: query
- schema:
type: string
enum:
- pending
- approved
- due
- paid
- rejected
- voided
required: false
name: status
in: query
- schema:
type: string
required: false
name: sale_id
in: query
- schema:
type: string
required: false
name: payout_id
in: query
- schema:
type: string
enum:
- referral
- reward
- clawback
required: false
name: kind
in: query
responses:
'200':
description: Commissions
content:
application/json:
schema:
$ref: '#/components/schemas/CommissionList'
'400':
description: Invalid request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Missing or unknown API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Key lacks the required scope
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: No such object in your organization
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'422':
description: The request was understood and refused
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
description: 'Rate limited: see Retry-After'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
operationId: getV1Commissions
x-operation-id-source: derived
post:
tags:
- Commissions
summary: Create a manual commission
description: 'A commission the engine did not produce: a bonus, or a missed referral attached to a sale. Approved on creation, held for the program''s holding period, audited with your reason.
**Scope:** `commissions:write` (or `write`)'
security:
- bearerAuth: []
requestBody:
description: ''
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CommissionCreate'
responses:
'201':
description: The new commission
content:
application/json:
schema:
$ref: '#/components/schemas/Commission'
'400':
description: Invalid request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Missing or unknown API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Key lacks the required scope
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: No such object in your organization
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'422':
description: The request was understood and refused
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
description: 'Rate limited: see Retry-After'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
operationId: postV1Commissions
x-operation-id-source: derived
servers:
- url: https://api.affiliaterail.com
description: Production
/v1/commissions/maturing:
get:
tags:
- Commissions
summary: What matures between two dates
description: 'Commissions whose `mature_at` falls inside the inclusive range, oldest first, straight off the maturity index. This answers the most common partner question, when am I paid: `approved` commissions become payable at `mature_at`; `pending` ones still need approval first, so filter by `status` when you only want the certain money. Amounts are integer minor units with their currency, as everywhere.
**Scope:** `read`'
security:
- bearerAuth: []
parameters:
- schema:
type: string
example: prg_7uSyy9FqVLCFWrdPeZaK
description: Required on every list
required: true
description: Required on every list
name: program_id
in: query
- schema:
type: string
example: '25'
description: 1 to 100, default 25
required: false
description: 1 to 100, default 25
name: limit
in: query
- schema:
type: string
description: Object id; returns the page after it (older)
required: false
description: Object id; returns the page after it (older)
name: starting_after
in: query
- schema:
type: string
description: Object id; returns the page before it (newer)
required: false
description: Object id; returns the page before it (newer)
name: ending_before
in: query
- schema:
anyOf:
- type: string
- type: array
items:
type: string
description: 'Relations to embed: partner, customer, sale, payout, rule'
required: false
description: 'Relations to embed: partner, customer, sale, payout, rule'
name: expand[]
in: query
- schema:
anyOf:
- type: string
- type: array
items:
type: string
description: Nothing to include on this resource
required: false
description: Nothing to include on this resource
name: include[]
in: query
- schema:
type: string
description: ISO-8601, inclusive. Required.
required: true
description: ISO-8601, inclusive. Required.
name: from
in: query
- schema:
type: string
description: ISO-8601, inclusive. Required.
required: true
description: ISO-8601, inclusive. Required.
name: to
in: query
- schema:
type: string
required: false
name: partner_id
in: query
- schema:
type: string
enum:
- approved
- pending
description: 'Default: both'
required: false
description: 'Default: both'
name: status
in: query
responses:
'200':
description: Commissions in maturity order
content:
application/json:
schema:
$ref: '#/components/schemas/MaturingCommissionList'
'400':
description: Invalid request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Missing or unknown API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Key lacks the required scope
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: No such object in your organization
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'422':
description: The request was understood and refused
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
description: 'Rate limited: see Retry-After'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
operationId: getV1CommissionsMaturing
x-operation-id-source: derived
servers:
- url: https://api.affiliaterail.com
description: Production
/v1/commissions/{id}:
get:
tags:
- Commissions
summary: Retrieve a commission
description: '**Scope:** `read`'
security:
- bearerAuth: []
parameters:
- schema:
type: string
pattern: ^(sample_)?com_
example: com_7uSyy9FqVLCFWrdPeZaK
description: Prefixed id (`com_…`)
required: true
description: Prefixed id (`com_…`)
name: id
in: path
- schema:
anyOf:
- type: string
- type: array
items:
type: string
description: 'Relations to embed: partner, customer, sale, payout, rule'
required: false
description: 'Relations to embed: partner, customer, sale, payout, rule'
name: expand[]
in: query
- schema:
anyOf:
- type: string
- type: array
items:
type: string
description: Nothing to include on this resource
required: false
description: Nothing to include on this resource
name: include[]
in: query
responses:
'200':
description: The commission
content:
application/json:
schema:
$ref: '#/components/schemas/Commission'
'400':
description: Invalid request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Missing or unknown API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Key lacks the required scope
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: No such object in your organization
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'422':
description: The request was understood and refused
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
description: 'Rate limited: see Retry-After'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
operationId: getV1CommissionsById
x-operation-id-source: derived
servers:
- url: https://api.affiliaterail.com
description: Production
/v1/commissions/{id}/approve:
post:
tags:
- Commissions
summary: Approve a commission
description: '`pending` -> `approved`, or straight to `due` when the holding period has already run. Anything else is refused with the reason.
**Scope:** `commissions:write` (or `write`)'
security:
- bearerAuth: []
parameters:
- schema:
type: string
pattern: ^(sample_)?com_
example: com_7uSyy9FqVLCFWrdPeZaK
description: Prefixed id (`com_…`)
required: true
description: Prefixed id (`com_…`)
name: id
in: path
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/CommissionDecision'
responses:
'200':
description: The commission
content:
application/json:
schema:
$ref: '#/components/schemas/Commission'
'400':
description: Invalid request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Missing or unknown API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Key lacks the required scope
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: No such object in your organization
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'422':
description: The request was understood and refused
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
description: 'Rate limited: see Retry-After'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
operationId: postV1CommissionsByIdApprove
x-operation-id-source: derived
servers:
- url: https://api.affiliaterail.com
description: Production
/v1/commissions/{id}/reject:
post:
tags:
- Commissions
summary: Reject a commission
description: 'Unpaid only. The reason is required and lands in the audit log and the partner''s view.
**Scope:** `commissions:write` (or `write`)'
security:
- bearerAuth: []
parameters:
- schema:
type: string
pattern: ^(sample_)?com_
example: com_7uSyy9FqVLCFWrdPeZaK
description: Prefixed id (`com_…`)
required: true
description: Prefixed id (`com_…`)
name: id
in: path
requestBody:
description: ''
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CommissionReject'
responses:
'200':
description: The commission
content:
application/json:
schema:
$ref: '#/components/schemas/Commission'
'400':
description: Invalid request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Missing or unknown API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Key lacks the required scope
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: No such object in your organization
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'422':
description: The request was understood and refused
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
description: 'Rate limited: see Retry-After'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
operationId: postV1CommissionsByIdReject
x-operation-id-source: derived
servers:
- url: https://api.affiliaterail.com
description: Production
components:
schemas:
MaturingCommissionList:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Commission'
has_more:
type: boolean
description: Pass the last object's id as `starting_after` to fetch the next page
total_count:
type: integer
description: Count of every object matching the filters, ignoring the cursor
required:
- data
- has_more
- total_count
CommissionReject:
type: object
properties:
reason:
type: string
minLength: 1
required:
- reason
CommissionDecision:
type: object
properties:
reason:
type: string
Commission:
type: object
properties:
id:
type: string
pattern: ^(sample_)?com_
example: com_7uSyy9FqVLCFWrdPeZaK
description: Prefixed id (`com_…`)
object:
type: string
enum:
- commission
program_id:
type: string
pattern: ^(sample_)?prg_
example: prg_7uSyy9FqVLCFWrdPeZaK
description: Prefixed id (`prg_…`)
partner_id:
type: string
pattern: ^(sample_)?part_
example: part_7uSyy9FqVLCFWrdPeZaK
description: Prefixed id (`part_…`)
sale_id:
type:
- string
- 'null'
pattern: ^(sample_)?sale_
example: sale_7uSyy9FqVLCFWrdPeZaK
description: Prefixed id (`sale_…`)
customer_id:
type:
- string
- 'null'
pattern: ^(sample_)?cus_
example: cus_7uSyy9FqVLCFWrdPeZaK
description: Prefixed id (`cus_…`)
rule_id:
type:
- string
- 'null'
pattern: ^(sample_)?flw_
example: flw_7uSyy9FqVLCFWrdPeZaK
description: Which commission rule produced it
rule_branch_id:
type:
- string
- 'null'
pattern: ^(sample_)?flb_
example: flb_7uSyy9FqVLCFWrdPeZaK
description: And which branch
kind:
type: string
enum:
- referral
- reward
- clawback
amount_minor:
type: integer
example: 2500
description: Integer minor units (cents, pence). Never a float, never a string.
revenue_minor:
type:
- integer
- 'null'
example: 2500
description: Integer minor units (cents, pence). Never a float, never a string.
currency:
type: string
minLength: 3
maxLength: 3
example: USD
description: ISO-4217
status:
type: string
enum:
- pending
- approved
- due
- paid
- rejected
- voided
mature_at:
type:
- string
- 'null'
format: date-time
example: '2026-08-21T10:15:30.000Z'
description: ISO-8601, UTC
approved_at:
type:
- string
- 'null'
format: date-time
example: '2026-08-21T10:15:30.000Z'
description: ISO-8601, UTC
voided_at:
type:
- string
- 'null'
format: date-time
example: '2026-08-21T10:15:30.000Z'
description: ISO-8601, UTC
void_reason:
type:
- string
- 'null'
payout_id:
type:
- string
- 'null'
pattern: ^(sample_)?pyt_
example: pyt_7uSyy9FqVLCFWrdPeZaK
description: Prefixed id (`pyt_…`)
metadata:
type:
- object
- 'null'
additionalProperties: {}
description: Your own key/value data, stored as given
created_at:
type: string
format: date-time
example: '2026-08-21T10:15:30.000Z'
description: ISO-8601, UTC
updated_at:
type: string
format: date-time
example: '2026-08-21T10:15:30.000Z'
description: ISO-8601, UTC
required:
- id
- object
- program_id
- partner_id
- sale_id
- customer_id
- rule_id
- rule_branch_id
- kind
- amount_minor
- revenue_minor
- currency
- status
- mature_at
- approved_at
- voided_at
- void_reason
- payout_id
- metadata
- created_at
- updated_at
CommissionList:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Commission'
has_more:
type: boolean
description: Pass the last object's id as `starting_after` to fetch the next page
total_count:
type: integer
description: Count of every object matching the filters, ignoring the cursor
required:
- data
- has_more
- total_count
Error:
type: object
properties:
error:
type: object
properties:
type:
type: string
enum:
- authentication_error
- permission_error
- invalid_request_error
- not_found_error
- conflict_error
- rate_limit_error
- plan_error
- not_implemented_error
- api_error
code:
type: string
message:
type: string
param:
type: string
required:
- type
- code
- message
required:
- error
CommissionCreate:
type: object
properties:
program_id:
type: string
pattern: ^(sample_)?prg_
example: prg_7uSyy9FqVLCFWrdPeZaK
description: Prefixed id (`prg_…`)
partner_id:
type: string
pattern: ^(sample_)?part_
example: part_7uSyy9FqVLCFWrdPeZaK
description: Prefixed id (`part_…`)
amount_minor:
type: integer
minimum: 1
example: 2500
description: Integer minor units (cents, pence). Never a float, never a string.
currency:
type: string
minLength: 3
maxLength: 3
example: USD
description: ISO-4217
customer_id:
type: string
pattern: ^(sample_)?cus_
example: cus_7uSyy9FqVLCFWrdPeZaK
description: Prefixed id (`cus_…`)
sale_id:
type: string
pattern: ^(sample_)?sale_
example: sale_7uSyy9FqVLCFWrdPeZaK
description: Prefixed id (`sale_…`)
reason:
type: string
minLength: 1
description: Why this commission exists; written to the audit log
required:
- program_id
- partner_id
- amount_minor
- reason
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: rail_live_… or rail_test_…
description: Create keys in Settings → API keys. Each key carries scopes; the docs name the scope every route needs.
x-refined-from:
- affiliaterail-com-docs-openapi.json
- affiliaterail-com-openapi.json