Getting Started with Syndicate Links
Time to first API call: ~5 minutes
Syndicate Links is the attribution and commission infrastructure layer for AI-driven commerce. Whether you're a merchant running programs, a publisher earning commissions, or an agent developer building programmatic referral flows — this guide gets you live.
Jump to your role:
- I'm a Merchant — run commission programs, manage affiliates, track conversions
- I'm a Publisher — join programs, generate tracking links, earn commissions
- I'm an Agent Developer — programmatic attribution, agent keys,
ai_referralevents
Shared Setup (All Roles)
Step 1 — Create Your Account
Merchants: Sign up at app.syndicatelinks.co
Publishers: Sign up at affiliate.syndicatelinks.co
Agent Developers: Sign up as a publisher first, then issue agent-scoped keys from your account.
Step 2 — Get Your API Key
Your API key is in Settings → API Keys. Key prefixes tell you what the key can do:
| Prefix | Type | Used for |
|---|---|---|
mk_live_ | Merchant key | Creating programs, managing affiliates, accessing merchant data |
ak_live_ | Publisher account key | Joining programs, generating links, issuing agent keys |
aff_agent_ | Agent key | Programmatic attribution tracking (AI agents) |
Keep your keys out of client-side code and version control. Rotate them from the dashboard if compromised.
Step 3 — Verify Your Key
Confirm your key works by fetching a lightweight endpoint for your role.
Publishers:
import requests
resp = requests.get(
"https://api.syndicatelinks.co/affiliate/me",
headers={"Authorization": "Bearer YOUR_AK_LIVE_KEY"},
)
print(resp.json())Merchants:
Confirm your merchant key works by listing your programs. A brand-new account should still return 200 with an empty data array.
import requests
resp = requests.get(
"https://api.syndicatelinks.co/merchant/programs",
headers={"Authorization": "Bearer YOUR_MK_LIVE_KEY"},
)
print(resp.json())A 200 response means your key is live. New merchants will usually see { "data": [], "cursor": null, "hasMore": false } until they create their first program. A 401 means the key is invalid or missing — check the prefix matches your role.
Merchant Path
Create a Commission Program
From the dashboard: Programs → New Program.
Configure:
- Commission rate — percentage or flat fee per conversion
- Cookie window — how long after a click a publisher gets credit (e.g., 30 days)
- Approval mode — auto-approve publishers or review manually
- Program name and description — what publishers see when browsing your program
Or via API:
import requests
resp = requests.post(
"https://api.syndicatelinks.co/merchant/programs",
headers={
"Authorization": "Bearer YOUR_MK_LIVE_KEY",
"Content-Type": "application/json",
},
json={
"name": "My Affiliate Program",
"commissionRate": 10,
"commissionType": "percentage",
"cookieWindow": 30,
"autoApprove": True,
},
)
print(resp.json())Manage Your Affiliates
View publishers enrolled in your programs:
curl https://api.syndicatelinks.co/merchant/affiliates \
-H "Authorization: Bearer YOUR_MK_LIVE_KEY"
Pending publishers appear in Programs → [Program Name] → Pending Approvals. Approve or reject from the dashboard or via API.
View Your Programs
curl https://api.syndicatelinks.co/merchant/programs \
-H "Authorization: Bearer YOUR_MK_LIVE_KEY"
Track Conversions
Conversions are tracked automatically when a publisher's tracking link is used. For server-side tracking or custom integrations, use the track endpoint:
curl -X POST https://api.syndicatelinks.co/track \
-H "Authorization: Bearer YOUR_MK_LIVE_KEY" \
-H "Content-Type: application/json" \
-d '{
"event": "purchase",
"trackingCode": "trk_abc123",
"orderValue": 49.00,
"currency": "USD",
"orderId": "order_12345"
}'
View Payouts
Check commission payouts owed to your publishers:
curl https://api.syndicatelinks.co/merchant/payouts \
-H "Authorization: Bearer YOUR_MK_LIVE_KEY"
Payout methods include Stripe Connect and Bitcoin Lightning (via BTCPay). Configure your payout rails in Settings → Payout Methods.
What's Next (Merchants)
| Resource | Link |
|---|---|
| Full API Reference | syndicatelinks.co/docs/api-reference |
| Stripe MPP Integration | syndicatelinks.co/docs/stripe-mpp |
| Dashboard | app.syndicatelinks.co |
Publisher Path
Browse and Join Programs
Discover active commission programs at affiliate.syndicatelinks.co or query via API:
curl https://api.syndicatelinks.co/affiliate/programs \
-H "Authorization: Bearer YOUR_AK_LIVE_KEY"
From the dashboard: Programs → Browse → Join. Some programs auto-approve; others require merchant approval. You'll be notified when your application is reviewed.
Generate a Tracking Link
Once approved, find your affiliate link in Programs → [Program Name] → Your Link. This is the URL you embed in your content, newsletter, social posts, or recommendations.
When a user clicks your tracking link and completes a purchase within the cookie window, the conversion is attributed to you and commission is credited automatically.
Check Your Earnings
View your commission balance and payout history:
curl https://api.syndicatelinks.co/v1/agent/commission \
-H "Authorization: Bearer YOUR_AK_LIVE_KEY"
Or check the dashboard at Earnings → Overview for a visual breakdown by program.
Configure Payout Method
Set up how you get paid in Settings → Payout Methods:
- Stripe — direct bank transfer
- Bitcoin Lightning — instant settlement via BTCPay
What's Next (Publishers)
| Resource | Link |
|---|---|
| Full API Reference | syndicatelinks.co/docs/api-reference |
| Issue Agent Keys (for AI agents) | See Agent Developer section below |
| Publisher Portal | affiliate.syndicatelinks.co |
Agent Developer Path
If you're building an AI assistant, shopping agent, or any software that recommends products to users — this section is for you. Syndicate Links provides agent-native attribution so your agent can earn commission on conversions it drives, without browser cookies or tracked clicks.
Step 1 — Create a Publisher Account
Agent developers register as publishers first. Sign up at affiliate.syndicatelinks.co and get your ak_live_ key.
Step 2 — Issue an Agent Key
Agent keys (aff_agent_ prefix) are scoped for programmatic use. Issue one via API:
import requests
resp = requests.post(
"https://api.syndicatelinks.co/affiliate/keys",
headers={
"Authorization": "Bearer YOUR_AK_LIVE_KEY",
"Content-Type": "application/json",
},
json={"type": "agent", "label": "my-shopping-agent-v1"},
)
print(resp.json())Response:
{
"key": "aff_agent_abc123...",
"type": "agent",
"label": "my-shopping-agent-v1",
"createdAt": "2026-03-30T12:00:00Z"
}
Store this key securely. Your agent uses it for all attribution API calls.
Step 3 — Join a Merchant Program
Same as the publisher path — browse programs and join the ones relevant to your agent's recommendations:
curl https://api.syndicatelinks.co/affiliate/programs \
-H "Authorization: Bearer YOUR_AK_LIVE_KEY"
Step 4 — Submit Attribution Events
When your agent recommends a product and the user completes a purchase, fire an ai_referral event:
import requests
resp = requests.post(
"https://api.syndicatelinks.co/v1/track/ai-referral",
headers={
"Authorization": "Bearer YOUR_AFF_AGENT_KEY",
"Content-Type": "application/json",
},
json={
"event": "ai_referral",
"trackingCode": "trk_abc123",
"orderValue": 79.99,
"currency": "USD",
"ai_surface": "chatgpt",
"metadata": {
"conversationId": "conv_456",
"agentVersion": "1.0.2",
},
},
)
print(resp.json())Key fields:
| Field | Required | Description |
|---|---|---|
event | Yes | Event type — use ai_referral for agent-driven recommendations |
trackingCode | Yes | The tracking code from the merchant's program |
orderValue | Yes | Sale amount in the transaction currency |
currency | No | ISO 4217 code (default: USD) |
ai_surface | Recommended | Which AI surface made the recommendation (chatgpt, gemini, perplexity, claude, custom) |
metadata | No | Freeform key-value pairs for your own tracking |
The ai_surface field is captured into attribution context and will appear in merchant compliance reports. Include it whenever possible.
Step 5 — Check Agent Commission
Query your agent's earned commissions:
curl https://api.syndicatelinks.co/v1/agent/commission \
-H "Authorization: Bearer YOUR_AFF_AGENT_KEY"
ACP Transaction Token Support
If you're building on the Agentic Commerce Protocol (ACP), Syndicate Links can ingest ACP checkout session tokens alongside attribution events. Include the token as metadata:
curl -X POST https://api.syndicatelinks.co/v1/track/agent-attribution \
-H "Authorization: Bearer YOUR_AFF_AGENT_KEY"
-H "Content-Type: application/json" \
-d '{
"affiliate_id": "your-affiliate-uuid",
"merchant_id": "merchant-uuid",
"attribution_token": "slat_v1_...",
"agent_id": "your-agent-id",
"sale_amount": 4999,
"metadata": {
"acp_transaction_token": "acp_tok_abc123"
}
}'
For the full ACP integration reference, see ACP Attribution docs.
What's Next (Agent Developers)
| Resource | Link |
|---|---|
| ACP Attribution Reference | syndicatelinks.co/docs/acp-attribution |
| Full API Reference | syndicatelinks.co/docs/api-reference |
| Stripe MPP (Machine Payments) | syndicatelinks.co/docs/stripe-mpp |
Using the MCP Server (AI Agent Integration)
If you're building with Claude Desktop, Cursor, or any MCP-compatible agent framework, the Syndicate Links MCP server exposes all 7 attribution and program management tools natively — no custom API integration required.
Install
npm install -g syndicate-links-mcp
Or run without installing:
npx syndicate-links-mcp
Configure in Claude Desktop
Add to your Claude Desktop claude_desktop_config.json:
{
"mcpServers": {
"syndicate-links": {
"command": "npx",
"args": ["syndicate-links-mcp"],
"env": {
"SYNDICATE_API_URL": "https://api.syndicatelinks.co",
"SYNDICATE_AGENT_KEY": "aff_agent_your_key_here"
}
}
}
}
Optional keys (only needed for specific tools):
| Key | Required for |
|---|---|
SYNDICATE_AGENT_KEY | track_agent_conversion, get_commission_status |
SYNDICATE_MERCHANT_KEY | list_merchant_programs |
SYNDICATE_ADMIN_SECRET | run_payout_cycle |
AGENT_TOKEN_SECRET | verify_attribution_token |
Generate an Agent Key
Before configuring the MCP server, generate an aff_agent_ key:
curl -X POST https://api.syndicatelinks.co/affiliate/keys \
-H "Authorization: Bearer YOUR_AK_LIVE_KEY" \
-H "Content-Type: application/json" \
-d '{"type": "agent", "label": "claude-desktop-v1"}'
Response:
{
"key": "aff_agent_...",
"type": "agent",
"label": "claude-desktop-v1"
}
Store this as SYNDICATE_AGENT_KEY in your MCP config. Do not expose it in client-side code.
Available MCP Tools
| Tool | What it does |
|---|---|
search_programs | Find affiliate programs by keyword |
get_program_details | Full program info — commission rates, terms, merchant |
track_agent_conversion | Record a conversion with a signed attribution token |
verify_attribution_token | Validate a slat_v1_ token without submitting a conversion |
get_commission_status | Check your agent's earned commission balance |
list_merchant_programs | List your own merchant programs (merchant key required) |
run_payout_cycle | Trigger the global payout cycle (admin only) |
First Test Conversion
Once your MCP server is configured, ask Claude:
Search for affiliate programs related to SaaS tools.
Then:
Get the details for program [program_id from results].
Then after a real conversion:
Track a conversion for order order_12345 with sale amount 49.99 using attribution token [slat_v1_...].
What's Next (MCP Users)
| Resource | Link |
|---|---|
| npm package | npmjs.com/package/syndicate-links-mcp |
| How Agent Attribution Works | syndicatelinks.co/docs/agent-attribution-spec |
| ACP Attribution Reference | syndicatelinks.co/docs/acp-attribution |
| Full API Reference | syndicatelinks.co/docs/api-reference |