This is the general affiliate program, open to anyone with an account. It is separate from the
Hosting Partnership, which is a 20% rev-share arranged with
maintainers of open-source apps we host. Don’t enroll in both for the same traffic.
How it works
- Enroll. You get a referral code, and two links built from it.
- Share the link. A click is recorded against your code.
- They sign up through it. The signup is linked to you as a
pendingreferral. - They pay. The referral flips to
activeand you earn a commission on that payment and every one after it.
Tiers
You start on Starter and move up automatically as the revenue you’ve referred crosses a milestone. Reaching a tier also pays a one-off bonus.
Upgrades happen on the payment that crosses the milestone, and are never downgraded. Read the live
values from
GET /api/affiliates/dashboard rather than hard-coding these - tiers are configurable,
and your account may be on a negotiated one.
Enroll
201 Created
Dashboard
200 OK
Returns
404 with not enrolled if you haven’t enrolled yet. That is the check to make before
rendering anything - the same 404 comes back from referrals, earnings, payouts and
settings.
Referrals
Response:
200 OK
pending (signed up, hasn’t paid), active (has paid at least once),
churned.
Emails are masked. You can see that someone signed up and whether they’re paying; you cannot see who
they are or reach them through us.
Earnings
commission_rate and tier_slug are recorded per earning, so this list stays accurate across tier
changes.
Payouts
Settings
A custom slug is 3-30 characters, lowercase letters, numbers and hyphens only.
Response:
200 OK - returns the updated affiliate record.
Your original
referral_code keeps working after you set a slug.
Recording a Visit
?ref= or ?r= parameter, and you only need it if you’re building your own
landing page in front of a referral link.
200 OK with {"status": "ok"}, including for an unknown code: it’s tracking, and
it never blocks the page it’s called from. A click from the affiliate’s own logged-in session is
silently ignored, so you can’t inflate your own visit count.