import { AgentRef } from 'agentref';
const client = new AgentRef({ apiKey: process.env.AGENTREF_API_KEY });
// Step 1: Create the program
const program = await client.programs.create({
name: 'Acme Pro Referrals',
commissionType: 'recurring',
commissionPercent: 25,
cookieDuration: 60,
payoutThreshold: 5000, // $50.00 in cents
autoApproveAffiliates: true,
currency: 'USD',
}, { idempotencyKey: 'setup-acme-pro-v1' });
console.log(`Program created: ${program.id}`);
// Step 2: Connect Stripe
const stripe = await client.programs.connectStripe(program.id);
console.log(`Complete Stripe OAuth at: ${stripe.authUrl}`);
// The merchant opens this URL in a browser to connect their Stripe account
// Step 3: Get the tracking snippet
const detail = await client.programs.get(program.id);
console.log(`Readiness: ${detail.readiness}`);
// Step 4: Publish to marketplace
await client.programs.updateMarketplace(program.id, {
status: 'public',
category: 'SaaS',
description: 'Earn 25% recurring commission on every referral.',
});
// Step 5: Invite affiliates
const invite = await client.programs.createInvite(program.id, {
email: 'top-affiliate@example.com',
name: 'Top Affiliate',
expiresInDays: 14,
}, { idempotencyKey: 'invite-top-affiliate-v1' });
console.log(`Invite sent: ${invite.token}`);
// Step 6: Create a public invite link for broader distribution
const publicInvite = await client.programs.createInvite(program.id, {
isPublic: true,
usageLimit: 100,
expiresInDays: 30,
}, { idempotencyKey: 'public-invite-v1' });