Syndicate Links API Documentation

Syndicate Links exposes the commission infrastructure layer for merchant programs, publisher referrals, and AI-native attribution flows.

Base URL: https://api.syndicatelinks.co

Authentication

All endpoints require an API key in the Authorization header:

Authorization: Bearer <your_api_key>
  • Merchant keys start with mk_live_
  • Affiliate keys start with ak_live_
  • Agent attribution keys start with aff_agent_

Get your API key by registering via the merchant dashboard or affiliate portal.


AI Attribution Endpoints

Record AI Referral

POST /v1/track/ai-referral
Authorization: Bearer aff_agent_...

Use this endpoint to emit a first-class ai_referral event from an autonomous agent or agent-adjacent application.

Body:

{
  "event": "ai_referral",
  "trackingCode": "trk_abc123",
  "orderValue": 79.99,
  "currency": "USD",
  "ai_surface": "chat",
  "metadata": {
    "conversationId": "conv_123"
  }
}

ai_surface is optional but recommended. When present, it is captured into attribution context for downstream reporting.


Merchant Endpoints

Register

POST /merchant/register

Create a new merchant account.

Body:

{
  "name": "Your Company",
  "email": "you@company.com",
  "website": "https://company.com"
}

Response: Returns merchant profile with API key.


Programs

Create Program

POST /merchant/programs
Authorization: Bearer mk_live_...
{
  "name": "My Affiliate Program",
  "description": "Earn 10% on every sale",
  "defaultCommissionPct": 10,
  "autoApprove": true,
  "category": "scuba"
}

Verified response shape:

{
  "id": "48e96302-5057-4f71-bca9-ef50c4839ed9",
  "merchantId": "f5f5e5b8-5c2c-4a84-8160-8cb2f37509a0",
  "name": "Tilos Referral Program",
  "defaultCommissionPct": "10.00",
  "status": "active"
}

List Programs

GET /merchant/programs
Authorization: Bearer mk_live_...

Update Program

PUT /merchant/programs/:id
Authorization: Bearer mk_live_...

Products

Add Product

POST /merchant/products
Authorization: Bearer mk_live_...
{
  "programId": "prog_abc123",
  "name": "Premium Widget",
  "url": "https://company.com/widget",
  "price": 49.99,
  "currency": "USD",
  "category": "widget",
  "inStock": true
}

Verified response shape:

{
  "id": "9fd48ef4-f856-4377-ae9f-cb6f378d426b",
  "programId": "48e96302-5057-4f71-bca9-ef50c4839ed9",
  "name": "Tilos M1 Mask",
  "url": "https://tilos.com/products/m1-mask",
  "price": "79.99"
}

Bulk Add Products

POST /merchant/products/bulk
Authorization: Bearer mk_live_...

List Products

GET /merchant/products
Authorization: Bearer mk_live_...

Update Product

PUT /merchant/products/:id
Authorization: Bearer mk_live_...

Delete Product

DELETE /merchant/products/:id
Authorization: Bearer mk_live_...

Affiliates

List Affiliates

GET /merchant/affiliates
Authorization: Bearer mk_live_...

Approve Affiliate

PUT /merchant/affiliates/:id/approve
Authorization: Bearer mk_live_...

Reject Affiliate

PUT /merchant/affiliates/:id/reject
Authorization: Bearer mk_live_...

Conversions

Record Conversion

POST /merchant/conversions
Authorization: Bearer mk_live_...
{
  "trackingCode": "trk_abc123",
  "orderId": "order_123",
  "saleAmount": 99.99,
  "currency": "USD"
}

Important: server-side conversion reporting does not require a prior click_id. A merchant can report conversions directly using trackingCode.

Verified response shape:

{
  "id": "2049d848-be07-4666-b7fb-fb0446151d4e",
  "type": "conversion",
  "trackingLinkId": "b465cb07-520b-42be-8289-a0926f6856e3",
  "programId": "48e96302-5057-4f71-bca9-ef50c4839ed9",
  "orderId": "tilos-test-order-001",
  "saleAmount": "79.99",
  "commissionAmount": "8.00",
  "commissionStatus": "pending",
  "attributionMethod": "tracking_code"
}

Reports

Merchant Reports

GET /merchant/reports
Authorization: Bearer mk_live_...

Query params: ?from=2026-03-01&to=2026-03-31


Affiliate Endpoints

Register

POST /affiliate/register
{
  "email": "affiliate@example.com",
  "name": "Agent Smith"
}

Response: Returns affiliate profile with API key.


Discover Programs

List Available Programs

GET /affiliate/programs
Authorization: Bearer ak_live_...

Returns all programs you can join.

Get Program Details

GET /affiliate/programs/:id
Authorization: Bearer ak_live_...

Get Program Products

GET /affiliate/programs/:id/products
Authorization: Bearer ak_live_...

Search Products

GET /affiliate/products/search?q=widget
Authorization: Bearer ak_live_...

Join Programs

Apply to Program

POST /affiliate/programs/:id/apply
Authorization: Bearer ak_live_...

POST /affiliate/links
Authorization: Bearer ak_live_...
{
  "programId": "prog_abc123",
  "productId": "prod_xyz789",
  "destinationUrl": "https://merchant.com/products/widget",
  "sourceTag": "homepage-hero"
}

Verified live response shape:

{
  "id": "4724a679-2503-4389-b333-4ed9058ceec1",
  "affiliateId": "cd33c7e9-3941-4c1b-beee-3902151221f7",
  "programId": "48e96302-5057-4f71-bca9-ef50c4839ed9",
  "productId": null,
  "code": "QiON_e0gsS",
  "destinationUrl": "https://tilos.com/products/m1-mask",
  "clicks": 0,
  "conversions": 0,
  "sourceTag": null
}

Important: the live API currently returns code in the response.

GET /affiliate/links
Authorization: Bearer ak_live_...

Events

Record Click

POST /affiliate/events/click
Authorization: Bearer ak_live_...
{
  "trackingCode": "QiON_e0gsS",
  "ipHash": "test-ip-hash-001",
  "userAgent": "Mozilla/5.0 (affiliate-test)",
  "country": "US",
  "deviceType": "desktop",
  "referrerContext": "affiliate-side-test"
}

Verified response shape:

{
  "id": "5baeaf04-2246-4fa8-afe8-f0cd44a93345",
  "type": "click",
  "trackingLinkId": "4724a679-2503-4389-b333-4ed9058ceec1",
  "affiliateId": "cd33c7e9-3941-4c1b-beee-3902151221f7",
  "programId": "48e96302-5057-4f71-bca9-ef50c4839ed9",
  "productId": null,
  "clickId": null,
  "referrerContext": "affiliate-side-test"
}

Record Conversion

POST /affiliate/events/conversion
Authorization: Bearer ak_live_...
{
  "trackingCode": "QiON_e0gsS",
  "orderId": "affiliate-side-test-order-001",
  "saleAmount": 79.99,
  "currency": "USD",
  "attributionMethod": "tracking_code",
  "referrerContext": "affiliate-side-test"
}

Verified response shape:

{
  "id": "157f2af1-c5ee-418b-a90e-86481c199961",
  "type": "conversion",
  "trackingLinkId": "4724a679-2503-4389-b333-4ed9058ceec1",
  "affiliateId": "cd33c7e9-3941-4c1b-beee-3902151221f7",
  "programId": "48e96302-5057-4f71-bca9-ef50c4839ed9",
  "productId": null,
  "attributionMethod": "tracking_code",
  "orderId": "affiliate-side-test-order-001",
  "saleAmount": "79.99",
  "commissionAmount": "8.00",
  "commissionStatus": "pending"
}

Reports

Earnings Report

GET /affiliate/reports/earnings?from=2026-03-01&to=2026-03-31
Authorization: Bearer ak_live_...

Click Report

GET /affiliate/reports/clicks
Authorization: Bearer ak_live_...

Conversion Report

GET /affiliate/reports/conversions
Authorization: Bearer ak_live_...

Profile

Get Profile

GET /affiliate/me
Authorization: Bearer ak_live_...

Update Profile

PUT /affiliate/me
Authorization: Bearer ak_live_...

Get Balance

GET /affiliate/me/balance
Authorization: Bearer ak_live_...

Get Payout History

GET /affiliate/me/payouts
Authorization: Bearer ak_live_...

Payment Rails

Syndicate Links supports multiple payout methods:

RailCurrencySettlementMinimum
Stripe ConnectUSD2-5 days$25
Lightning NetworkBTCInstant$5
USDC on BaseUSDCMinutes$0.01

Configure your preferred payout method in affiliate settings.


Webhooks

Merchants can receive real-time notifications for:

  • conversion.created — New conversion recorded
  • affiliate.applied — Affiliate applied to your program
  • payout.completed — Payout sent to affiliate

Configure webhook URL in merchant settings. All webhooks include HMAC-SHA256 signature in X-Signature header.


Rate Limits

TierRequests/minRequests/day
Free601,000
Pro30010,000
EnterpriseCustomCustom

Rate limit headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset


Quick Start (30 seconds)

For Agents

# 1. Register
curl -X POST https://api.syndicatelinks.co/affiliate/register \
  -H "Content-Type: application/json" \
  -d '{"email":"agent@example.com","name":"My Agent"}'

# 2. Discover programs
curl https://api.syndicatelinks.co/affiliate/programs \
  -H "Authorization: Bearer ak_live_YOUR_KEY"

# 3. Join a program
curl -X POST https://api.syndicatelinks.co/affiliate/programs/PROG_ID/apply \
  -H "Authorization: Bearer ak_live_YOUR_KEY"

# 4. Generate tracking link
curl -X POST https://api.syndicatelinks.co/affiliate/links \
  -H "Authorization: Bearer ak_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"programId":"PROG_ID","destinationUrl":"https://merchant.com/products/widget"}'

# 5. Check earnings
curl https://api.syndicatelinks.co/affiliate/me/balance \
  -H "Authorization: Bearer ak_live_YOUR_KEY"

For Merchants

# 1. Register
curl -X POST https://api.syndicatelinks.co/merchant/register \
  -H "Content-Type: application/json" \
  -d '{"name":"My Store","email":"store@example.com","website":"https://mystore.com"}'

# 2. Create a program
curl -X POST https://api.syndicatelinks.co/merchant/programs \
  -H "Authorization: Bearer mk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Main Program","defaultCommissionPct":10,"autoApprove":true,"category":"general"}'

# 3. Record a conversion
curl -X POST https://api.syndicatelinks.co/merchant/conversions \
  -H "Authorization: Bearer mk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"trackingCode":"trk_abc123","orderId":"order_123","saleAmount":99.99,"currency":"USD"}'

Support